useRouter.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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. console.log(res,'getAppid')
  66. Store.commit('setLoginStatus',0)
  67. Store.commit('setAppId',res.data.appid)
  68. location.reload()
  69. // uni.showModal({
  70. // title:"提示",
  71. // content: JSON.stringify(res.data)
  72. // })
  73. }else{
  74. alert('appid不能为空')
  75. }
  76. })
  77. return
  78. }
  79. // wx8a93d5003b66a408
  80. // wx90092c6556deb777 测试号
  81. const appID=Store.getters.appId
  82. // 微信未授权登录跳转到授权登录页面
  83. const url = window.location.href
  84. // 解决重复登录url添加重复的code与state问题
  85. const parseUrl = qs.parse(url.split('?')[1]) || qs.parse(url)
  86. let loginUrl
  87. if (parseUrl.code && parseUrl.state) {
  88. delete parseUrl.code
  89. delete parseUrl.state
  90. loginUrl = `${url.split('?')[0]}?${qs.stringify(parseUrl)}`
  91. } else {
  92. loginUrl = url
  93. }
  94. // 设置微信授权回调地址
  95. let redirect_uri = loginUrl
  96. redirect_uri = encodeURIComponent(redirect_uri)
  97. 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`
  98. // 无论拒绝还是授权都设置成1
  99. // 跳转到微信授权页面
  100. Store.commit('setLoginStatus',1)
  101. window.location.href = authUrl
  102. }else if (Store.getters.login_Status == 1){
  103. let code = from.query.code
  104. if(code){
  105. let res = MyHttp.post({
  106. url: MyHttp.urlMap.authUser,
  107. data: {
  108. code: code,
  109. recommend: uni.getStorageSync('recommend') || ''
  110. }
  111. })
  112. res.then(function (res) {
  113. if(res.code == 1){
  114. let expTime = (new Date()).getTime() + config.EXPIRE*60*60*1000
  115. let userinfo = {
  116. 'user_id': res.data.user_id,
  117. 'avatarUrl': res.data.avatarUrl,
  118. 'nickName': res.data.nickName,
  119. 'expTime': expTime,
  120. 'token': res.data.token,
  121. };
  122. Store.commit('setUserInfo', {userinfo: {...userinfo, token: res.data.token}});
  123. Store.commit('setLoginStatus',2)
  124. next()
  125. }else{
  126. Store.commit('setLoginStatus',0)
  127. location.reload()
  128. }
  129. })
  130. }else{
  131. Store.commit('setLoginStatus',0)
  132. location.reload()
  133. }
  134. }else if (Store.getters.login_Status == 2){
  135. // console.log(Store.getters.user_Info)
  136. if(Store.getters.user_Info.expTime && (new Date()).getTime() < Store.getters.user_Info.expTime){
  137. let Info = Store.getters.user_Info
  138. let expTime = (new Date()).getTime() + config.EXPIRE*60*60*1000
  139. let userinfo = {
  140. 'user_id': Info.user_id,
  141. 'avatarUrl': Info.avatarUrl,
  142. 'nickName': Info.nickName,
  143. 'expTime': expTime,
  144. 'token': Info.token,
  145. };
  146. Store.commit('setUserInfo', {userinfo: {...userinfo, token: Info.token}});
  147. next();
  148. }else{
  149. console.log('授权过期')
  150. //
  151. Store.commit('setLoginStatus',0)
  152. location.reload()
  153. }
  154. }
  155. // next();
  156. })
  157. router.afterEach((to, from) => {
  158. })
  159. }
  160. // #endif
  161. export default RouterMount;