Common.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <template>
  2. <div></div>
  3. </template>
  4. <script>
  5. const projectName = require('$root/config/project');
  6. import * as API_WeiXin from '$project/apis/weixin'
  7. import * as API_User from '$project/apis/user'
  8. import {
  9. getUrlParam,
  10. getWeixinRedirectURI,
  11. isWeiXin
  12. } from '$project/utils'
  13. import {
  14. mapGetters,
  15. mapMutations
  16. } from 'vuex'
  17. import * as types from '$project/store/mutation-types'
  18. import * as Dictionaries from '$project/utils/dictionaries'
  19. export default {
  20. name: 'Common',
  21. components: {},
  22. props: {
  23. //是否获取openid
  24. checkOpenId: {
  25. require: false,
  26. default: true,
  27. },
  28. //用户角色
  29. role: {
  30. require: false,
  31. default: '',
  32. },
  33. //是否检测项目,进行跳转
  34. projectCheck: {
  35. require: false,
  36. default: true,
  37. },
  38. },
  39. data() {
  40. return {}
  41. },
  42. created() {
  43. //公共组件的执行方法放在created中执行,父组件的create放在motuned中执行
  44. if (isWeiXin()) {
  45. if (this.checkOpenId) {
  46. if (!this.openId) {
  47. this.getOpenid();
  48. } else {
  49. this.getDataByOpenId();
  50. }
  51. }
  52. } else {
  53. if (this.checkOpenId) {
  54. /* mui.alert('请使用微信浏览打开!', '提示', function() {
  55. //info.innerText = '你刚关闭了警告框';
  56. }); */
  57. }
  58. }
  59. },
  60. methods: {
  61. //获取openid
  62. getOpenid() {
  63. const code = getUrlParam('code');
  64. if (!code) {
  65. window.location.href = getWeixinRedirectURI(process.env.VUE_APP_WXAPPID, document.URL);
  66. } else {
  67. console.log(code);
  68. if (!this.openId) {
  69. const step1 = API_WeiXin.getDataByCode(code).then(response => {
  70. //console.log(response)
  71. this.set_openid(response.openid);
  72. //角色判定调用不同的信息获取详情
  73. this.getDataByOpenId();
  74. return Promise.resolve(response.openid);
  75. }).catch(error => {
  76. //console.log(error);
  77. return Promise.reject(error);
  78. });
  79. step1.then(() => {
  80. let redirect = this.$route.query.redirect;
  81. if (redirect) {
  82. this.$router.push({
  83. path: decodeURIComponent(redirect)
  84. });
  85. } else {
  86. window.location.href = document.URL.replace(/\?code=(.*?)&state=STATE/g, '');
  87. }
  88. });
  89. } else {
  90. //如果存在openid,把链接中code字符去除
  91. window.location.href = document.URL.replace(/\?code=(.*?)&state=STATE/g, '');
  92. }
  93. }
  94. },
  95. //角色判定调用不同的信息获取详情
  96. getDataByOpenId() {
  97. this.getUserInfoByOpenId();
  98. },
  99. //获取用户详情
  100. getUserInfoByOpenId() {
  101. var type = type || '';
  102. API_WeiXin.getDataByOpenId(this.openId).then(response => {
  103. //console.log(response)
  104. var token = response ? response.token : '';
  105. this.set_token(token);
  106. var person = response ? response.person : '';
  107. this.set_person_data(person);
  108. this.set_person_temp(person);
  109. var personPopedom = response ? response.personPopedom : '';
  110. this.set_person_popedom(personPopedom);
  111. var iconInfoList = response ? response.iconInfoList : '';
  112. this.set_menu_list(iconInfoList);
  113. var commonIconInfoList = response ? response.commonIconInfoList : '';
  114. this.set_common_menu_list(commonIconInfoList);
  115. this.asynCallBack();
  116. }).catch(error => {
  117. mui.toast(error);
  118. })
  119. },
  120. //获取所有功能列表
  121. getAllFunList() {
  122. API_User.getAllFunList().then(response => {
  123. var token = response;
  124. this.set_fun_list(token);
  125. this.projectExchange();
  126. this.$emit('asynCallBack');
  127. }).catch(error => {
  128. mui.toast(error);
  129. })
  130. },
  131. //判断权限然后进行跳转
  132. projectExchange() {
  133. //如果不想跳转,还可以传参exchange,一般用于home注册切换等功能
  134. if (this.projectCheck && this.$route.query.exchange != '1' && this.person_popedom && this.person_popedom.sceneId) {
  135. let project = Dictionaries.getProject(this.person_popedom.sceneId);
  136. if (projectName.name != project && ['devlopment'].indexOf(process.env.VUE_APP_NODE_NAME) == -1) {
  137. window.location.href = '../' + project + '/#/master';
  138. }
  139. }
  140. },
  141. //异步回调父组件的方法
  142. asynCallBack() {
  143. //获取所有功能列表
  144. this.getAllFunList();
  145. },
  146. ...mapMutations({
  147. set_openid: types.SET_WEIXIN_OPENID,
  148. set_token: types.SET_TOKEN,
  149. set_person_data: types.SET_PERSON_DATA,
  150. set_person_popedom: types.SET_PERSON_POPEDOM,
  151. set_menu_list: types.SET_MENI_LIST,
  152. set_person_temp: types.SET_PERSON_TEMP,
  153. set_fun_list: types.SET_FUN_LIST,
  154. set_app_version: types.SET_APP_VERSION,
  155. set_common_menu_list: types.SET_COMMON_MENU_LIST,
  156. })
  157. },
  158. mounted() {
  159. //如果是开发环境则直接读取findbyopenid信息
  160. if (process.env.VUE_APP_NODE_NAME == 'devlopment') {
  161. this.getDataByOpenId();
  162. }
  163. },
  164. computed: {
  165. ...mapGetters({
  166. openId: 'wx_openid',
  167. token: 'token',
  168. person_data: 'person_data',
  169. person_popedom: 'person_popedom',
  170. menu_list: 'menu_list',
  171. common_menu_list: 'common_menu_list',
  172. person_temp: 'person_temp',
  173. fun_list: 'fun_list',
  174. app_version: 'app_version'
  175. })
  176. }
  177. }
  178. </script>
  179. <style>
  180. </style>