useRouter.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import Vue from 'vue'
  2. import Router, {
  3. RouterMount
  4. } from '@/js_sdk/hhyang-uni-simple-router';
  5. import Store from '@/core/store/index.js';
  6. import qs from 'qs';
  7. import MyHttp from '@/core/http/index.js'
  8. import config from '@/core/config/index'
  9. // #ifdef H5
  10. if(config.mode == 1){
  11. Vue.use(Router);
  12. const routesConfig = {
  13. h5: {
  14. paramsToQuery: true,
  15. loading: true,
  16. vueRouterDev: false,
  17. useUniConfig: true,
  18. resetStyle: () => {
  19. return {
  20. style: `
  21. #router-loadding .loadding {
  22. background-color: #1079fc !important;
  23. box-shadow: 0 0 15px #1079fc !important;
  24. }
  25. `
  26. }
  27. }
  28. },
  29. APP:{
  30. loddingPageStyle:()=>JSON.parse('{"backgroundColor":"#96DBF3"}'),
  31. loddingPageHook:(view)=>{
  32. view.drawBitmap('/static/wait.gif', {}, {
  33. top: 'auto',
  34. left: 'auto',
  35. width: '200px',
  36. height: '200px'
  37. })
  38. },
  39. holdTabbarStyle:()=>JSON.parse('{"backgroundColor":"#FF0000","opacity":0.2}')
  40. },
  41. encodeURI: false,
  42. debugger: true,
  43. routerBeforeEach:()=>{
  44. // console.log('routerBeforeEach')
  45. },
  46. routerAfterEach:()=>{
  47. // console.log('routerAfterEach')
  48. },
  49. routes:ROUTES //路由表
  50. }
  51. const router = new Router(routesConfig);
  52. const whitelist = {
  53. '/pages/index/index': 'index',
  54. }
  55. // console.log(Store.getters.login_Status)
  56. router.beforeEach((to, from, next) => {
  57. if(Store.getters.login_Status == 0 ){
  58. if(Store.getters.appId == ''){
  59. let res = MyHttp.post({
  60. url: MyHttp.urlMap.getAppid,
  61. data: {}
  62. })
  63. res.then(function (res) {
  64. if(res.data.appid != ''){
  65. Store.commit('setLoginStatus',0)
  66. Store.commit('setAppId',res.data.appid)
  67. location.reload()
  68. }else{
  69. alert('appid不能为空')
  70. }
  71. })
  72. return
  73. }
  74. // wx8a93d5003b66a408
  75. // wx90092c6556deb777 测试号
  76. const appID=Store.getters.appId
  77. // 微信未授权登录跳转到授权登录页面
  78. const url = window.location.href
  79. // 解决重复登录url添加重复的code与state问题
  80. const parseUrl = qs.parse(url.split('?')[1]) || qs.parse(url)
  81. let loginUrl
  82. if (parseUrl.code && parseUrl.state) {
  83. delete parseUrl.code
  84. delete parseUrl.state
  85. loginUrl = `${url.split('?')[0]}?${qs.stringify(parseUrl)}`
  86. } else {
  87. loginUrl = url
  88. }
  89. // 设置微信授权回调地址
  90. let redirect_uri = loginUrl
  91. redirect_uri = encodeURIComponent(redirect_uri)
  92. let authUrl=`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appID}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
  93. // 无论拒绝还是授权都设置成1
  94. // 跳转到微信授权页面
  95. Store.commit('setLoginStatus',1)
  96. window.location.href = authUrl
  97. }else if (Store.getters.login_Status == 1){
  98. let code = from.query.code
  99. if(code){
  100. let res = MyHttp.post({
  101. url: MyHttp.urlMap.authUser,
  102. data: {
  103. code: code
  104. }
  105. })
  106. res.then(function (res) {
  107. if(res.code == 1){
  108. let expTime = (new Date()).getTime() + config.EXPIRE*60*60*1000
  109. let userinfo = {
  110. 'user_id': res.data.user_id,
  111. 'avatarUrl': res.data.avatarUrl,
  112. 'nickName': res.data.nickName,
  113. 'expTime': expTime,
  114. 'token': res.data.token,
  115. };
  116. Store.commit('setUserInfo', {userinfo: {...userinfo, token: res.data.token}});
  117. Store.commit('setLoginStatus',2)
  118. next()
  119. }else{
  120. Store.commit('setLoginStatus',0)
  121. location.reload()
  122. }
  123. })
  124. }else{
  125. Store.commit('setLoginStatus',0)
  126. location.reload()
  127. }
  128. }else if (Store.getters.login_Status == 2){
  129. // console.log(Store.getters.user_Info)
  130. if(Store.getters.user_Info.expTime && (new Date()).getTime() < Store.getters.user_Info.expTime){
  131. let Info = Store.getters.user_Info
  132. let expTime = (new Date()).getTime() + config.EXPIRE*60*60*1000
  133. let userinfo = {
  134. 'user_id': Info.user_id,
  135. 'avatarUrl': Info.avatarUrl,
  136. 'nickName': Info.nickName,
  137. 'expTime': expTime,
  138. 'token': Info.token,
  139. };
  140. Store.commit('setUserInfo', {userinfo: {...userinfo, token: Info.token}});
  141. next();
  142. }else{
  143. console.log('授权过期')
  144. Store.commit('setLoginStatus',0)
  145. location.reload()
  146. }
  147. }
  148. // next();
  149. })
  150. router.afterEach((to, from) => {
  151. })
  152. }
  153. // #endif
  154. export default RouterMount;