index.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import Vue from 'vue'
  2. import VueRouter from 'vue-router'
  3. import util from '@.mobile/plugin/axios/util'
  4. Vue.use(VueRouter)
  5. const routes = [
  6. {
  7. path: '/',
  8. name: 'index',
  9. component: () => import('@.mobile/views/mobile-page/mobile-home')
  10. },
  11. {
  12. path: '/login',
  13. name: 'login',
  14. // component: () => import('@.mobile/views/login.vue')
  15. component: () => import('@.mobile/views/mobile-page/mobile-login')
  16. },
  17. {
  18. path: '/logout',
  19. name: 'logout',
  20. component: () => import('@.mobile/views/logout.vue')
  21. },
  22. {
  23. path: '/report',
  24. name: 'report',
  25. component: () => import('@.mobile/views/report.vue'),
  26. redirect: {
  27. name: 'reportMain'
  28. },
  29. children: [
  30. {
  31. path: '/reportMain',
  32. name: 'reportMain',
  33. meta: {
  34. keepAlive: true // 添加这个作为标志符,表明该页面需要保留状态
  35. },
  36. component: () => import('@.mobile/views/reportMain.vue')
  37. },
  38. {
  39. path: '/reportDetail',
  40. name: 'reportDetail',
  41. component: () => import('@.mobile/views/reportDetail.vue')
  42. }
  43. ]
  44. },
  45. {
  46. path: '/mobile-login',
  47. name: 'mobileLogin',
  48. meta: {
  49. title: '登录'
  50. },
  51. component: () => import('@.mobile/views/mobile-page/mobile-login')
  52. },
  53. {
  54. path: '/mobile-changePsw',
  55. name: 'mobilechangePsw',
  56. meta: {
  57. title: '修改密码'
  58. },
  59. component: () => import('@.mobile/views/mobile-page/mobile-changePsw')
  60. },
  61. {
  62. path: '/mobile-home',
  63. name: 'mobileHome',
  64. meta: {
  65. title: '首页'
  66. },
  67. component: () => import('@.mobile/views/mobile-page/mobile-home')
  68. },
  69. {
  70. path: '/mobile-home',
  71. name: 'mobileHome',
  72. // meta: {
  73. // title: ''
  74. // },
  75. component: () => import('@.mobile/views/mobile-page/mobile-home')
  76. },
  77. {
  78. path: '/mobile-myInfor',
  79. name: 'mobileMyInfor',
  80. meta: {
  81. title: '我的信息'
  82. },
  83. component: () => import('@.mobile/views/mobile-page/mobile-myInfor')
  84. },
  85. {
  86. path: '/mobile-main',
  87. name: 'mobileMain',
  88. meta: {
  89. title: '我的'
  90. },
  91. component: () => import('@.mobile/views/mobile-page/mobile-main')
  92. },
  93. {
  94. path: '/mobile-estimatedData',
  95. name: 'mobileEstimatedData',
  96. meta: {
  97. title: '月预估数据'
  98. },
  99. component: () => import('@.mobile/views/mobile-page/mobile-estimatedData')
  100. }
  101. ]
  102. const router = new VueRouter({
  103. routes
  104. })
  105. // 免校验token白名单
  106. const whiteList = ['/mobile-login', '/login']
  107. router.beforeEach(async (to, from, next) => {
  108. const token = util.getToken()
  109. if (whiteList.indexOf(to.path) === -1) {
  110. // 这里暂时将cookie里是否存有token作为验证是否登录的条件
  111. // 请根据自身业务需要修改
  112. if (token && token !== 'undefined') {
  113. next()
  114. } else {
  115. // 将当前预计打开的页面完整地址临时存储 登录后继续跳转
  116. // 这个 cookie(redirect) 会在登录后自动删除
  117. util.cookies.set('redirect', to.fullPath)
  118. // 没有登录的时候跳转到登录界面
  119. next({
  120. name: 'mobileLogin'
  121. })
  122. }
  123. } else {
  124. if (to.name === 'mobileLogin' || to.name === 'login') {
  125. // 如果已经登录,则直接进入系统
  126. if (token && token !== undefined) {
  127. next(from.path, true)
  128. } else {
  129. next()
  130. }
  131. } else {
  132. next()
  133. }
  134. }
  135. })
  136. router.afterEach(to => {})
  137. export default router