index.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import Vue from 'vue'
  2. import VueRouter from 'vue-router'
  3. import NavLayout from "@/components/layout/NavLayout"
  4. import store from '@/store'
  5. import { isSupportHtml5Plus } from '@/utils/platform'
  6. import {
  7. setTitle
  8. } from "@/utils/title"
  9. import Login from '@/views/login/Login'
  10. import Register from '@/views/login/Register'
  11. import FotgetPassword from '@/views/login/FotgetPassword'
  12. import Index from '@/views/index/Index'
  13. import personal from './personal'
  14. import order from './order'
  15. import replenishment from './replenishment'
  16. Vue.use(VueRouter)
  17. const routes = [
  18. {
  19. path: '/404',
  20. name: '404',
  21. component: () => import('@/views/404/404.vue')
  22. },
  23. {
  24. path: '/login',
  25. name: 'login',
  26. component: Login,
  27. meta: {
  28. title: '登录'
  29. }
  30. },
  31. {
  32. path: '/register',
  33. name: 'register',
  34. component: Register,
  35. meta: {
  36. title: '注册'
  37. }
  38. },
  39. {
  40. path: '/fotgetPassword',
  41. name: 'fotgetPassword',
  42. component: FotgetPassword,
  43. meta: {
  44. title: '忘记密码'
  45. }
  46. },
  47. {
  48. path: '/home',
  49. name: 'home',
  50. component: NavLayout,
  51. redirect: "/home/index",
  52. children: [{
  53. path: "index",
  54. name: "homeIndex",
  55. component: Index,
  56. meta: {
  57. title: '首页',
  58. hasBot: true,
  59. hasTop: false
  60. }
  61. }]
  62. },
  63. ]
  64. const whiteList = [
  65. '/login',
  66. '/register',
  67. '/fotgetPassword',
  68. ]
  69. const router = new VueRouter({
  70. mode: 'history',
  71. base: process.env.BASE_URL,
  72. routes: routes.concat( personal, order, replenishment )
  73. })
  74. function redirectToLogin(to, from, next) {
  75. let isApp = to.query.isApp || isSupportHtml5Plus
  76. if(isApp) {
  77. next(`/login?isApp=1&redirectUrl=${encodeURIComponent(to.fullPath)}`)
  78. } else {
  79. next('/login')
  80. }
  81. }
  82. if(process.env.NODE_ENV==='production') {
  83. router.beforeEach(async (to, from, next) => {
  84. if((store.getters.user && store.getters.user.accessToken)) {
  85. next()
  86. } else {
  87. if( whiteList.indexOf(to.path) > -1) {
  88. next()
  89. } else {
  90. redirectToLogin(to, from, next)
  91. }
  92. }
  93. })
  94. } else {
  95. router.beforeEach(async (to, from, next) => {
  96. next()
  97. return
  98.     if ((!store.getters.user || !store.getters.user.accessToken) && whiteList.indexOf(to.path) == -1) {
  99.         next('/login')
  100.         return
  101.     }
  102.     next()
  103. })
  104. }
  105. const noSetTitleList = []
  106. router.afterEach((to, from) => {
  107. // 更新页面标题
  108. console.log(to,from)
  109. if (to.meta && to.meta.title && noSetTitleList.indexOf(to.path)==-1) {
  110. setTitle(to.meta.title)
  111. store.dispatch("SetPageTitle", to.meta.title)
  112. }
  113. else if(noSetTitleList.indexOf(to.path)>-1){
  114. }
  115. window.scrollTo(0, 0);
  116. })
  117. export default router