Common.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <template>
  2. <div></div>
  3. </template>
  4. <script>
  5. import * as API_WeiXin from '$project/apis/weixin'
  6. import {
  7. getUrlParam,
  8. getWeixinRedirectURI,
  9. isWeiXin
  10. } from '$project/utils'
  11. import {
  12. mapGetters,
  13. mapMutations
  14. } from 'vuex'
  15. import * as types from '$project/store/mutation-types'
  16. export default {
  17. name: 'Common',
  18. components: {},
  19. props: {
  20. //是否获取openid
  21. checkOpenId: {
  22. require: false,
  23. default: true,
  24. },
  25. //用户角色
  26. role: {
  27. require: false,
  28. default: '',
  29. }
  30. },
  31. data() {
  32. return {}
  33. },
  34. created() {
  35. //公共组件的执行方法放在created中执行,父组件的create放在motuned中执行
  36. if (isWeiXin()) {
  37. if (this.checkOpenId) {
  38. if (!this.openId) {
  39. this.getOpenid();
  40. } else {
  41. this.getDataByOpenId();
  42. }
  43. }
  44. } else {
  45. if (this.checkOpenId) {
  46. /* mui.alert('请使用微信浏览打开!', '提示', function() {
  47. //info.innerText = '你刚关闭了警告框';
  48. }); */
  49. }
  50. }
  51. },
  52. methods: {
  53. //获取openid
  54. getOpenid() {
  55. const code = getUrlParam('code');
  56. if (!code) {
  57. window.location.href = getWeixinRedirectURI(process.env.VUE_APP_WXAPPID, document.URL);
  58. } else {
  59. console.log(code);
  60. if (!this.openId) {
  61. const step1 = API_WeiXin.getDataByCode(code).then(response => {
  62. //console.log(response)
  63. this.set_openid(response.openid);
  64. //角色判定调用不同的信息获取详情
  65. this.getDataByOpenId();
  66. return Promise.resolve(response.openid);
  67. }).catch(error => {
  68. //console.log(error);
  69. return Promise.reject(error);
  70. });
  71. step1.then(() => {
  72. let redirect = this.$route.query.redirect;
  73. if (redirect) {
  74. this.$router.push({
  75. path: decodeURIComponent(redirect)
  76. });
  77. } else {
  78. window.location.href = document.URL.replace(/\?code=(.*?)&state=STATE/g, '');
  79. }
  80. });
  81. } else {
  82. //如果存在openid,把链接中code字符去除
  83. window.location.href = document.URL.replace(/\?code=(.*?)&state=STATE/g, '');
  84. }
  85. }
  86. },
  87. //角色判定调用不同的信息获取详情
  88. getDataByOpenId() {
  89. this.getUserInfoByOpenId();
  90. },
  91. //获取用户详情
  92. getUserInfoByOpenId() {
  93. var type = type || '';
  94. API_WeiXin.getDataByOpenId(this.openId).then(response => {
  95. //console.log(response)
  96. var token = response ? response.token : '';
  97. this.set_token(token);
  98. var person = response ? response.person : '';
  99. this.set_person_data(person);
  100. this.set_person_temp(person);
  101. var personPopedom = response ? response.personPopedom : '';
  102. this.set_person_popedom(personPopedom);
  103. var iconInfoList = response ? response.iconInfoList : '';
  104. this.set_menu_list(iconInfoList);
  105. this.asynCallBack();
  106. }).catch(error => {
  107. mui.toast(error);
  108. })
  109. },
  110. //异步回调父组件的方法
  111. asynCallBack() {
  112. this.$emit('asynCallBack');
  113. },
  114. ...mapMutations({
  115. set_openid: types.SET_WEIXIN_OPENID,
  116. set_token: types.SET_TOKEN,
  117. set_person_data: types.SET_PERSON_DATA,
  118. set_person_popedom: types.SET_PERSON_POPEDOM,
  119. set_menu_list: types.SET_MENI_LIST,
  120. set_person_temp: types.SET_PERSON_TEMP,
  121. })
  122. },
  123. mounted() {},
  124. computed: {
  125. ...mapGetters({
  126. openId: 'wx_openid',
  127. token: 'token',
  128. person_data: 'person_data',
  129. person_popedom: 'person_popedom',
  130. menu_list: 'menu_list',
  131. person_temp: 'person_temp'
  132. })
  133. }
  134. }
  135. </script>
  136. <style>
  137. </style>