index.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import Vue from 'vue'
  2. import Router from 'vue-router'
  3. import Layout from '@/views/layout'
  4. import Home from '@/views/Home.vue'
  5. import baseRouters from './modules/base'
  6. import businessRouters from './modules/business'
  7. import sysRouters from './modules/sys'
  8. import { Message } from 'element-ui'
  9. import NProgress from 'nprogress' // progress bar
  10. import 'nprogress/nprogress.css' // progress bar style
  11. import { getToken } from '@/utils/auth' // get token from cookie
  12. Vue.use(Router)
  13. NProgress.configure({ showSpinner: true }) // NProgress Configuration
  14. var routes = [
  15. {
  16. path: '/layout',
  17. component:Layout,
  18. children: [
  19. {
  20. path: '/home',
  21. name: 'home',
  22. component: Home
  23. },
  24. ...sysRouters,
  25. ...baseRouters,
  26. ...businessRouters
  27. ]
  28. },
  29. {
  30. path:'/',
  31. redirect: '/home'
  32. },
  33. {
  34. path: '/login',
  35. component: () => import('@/views/Login')
  36. }
  37. ];
  38. // Array.prototype.push.apply(routes, caseRouters);
  39. // Array.prototype.push.apply(routes, sysRouters);
  40. var router = new Router({
  41. routes
  42. })
  43. router.beforeEach((to, from, next) => {
  44. NProgress.start();
  45. console.log(`${to.path}`);
  46. const hasToken = getToken()
  47. if (hasToken != null) {
  48. if (to.path === '/login') {
  49. // if is logged in, redirect to the home page
  50. next({ path: '/home' })
  51. }
  52. else {
  53. next();
  54. }
  55. NProgress.done();
  56. }
  57. else {
  58. if (to.path === '/login') {
  59. next();
  60. }
  61. else{
  62. next(`/login?redirect=${to.path}`);
  63. }
  64. NProgress.done();
  65. }
  66. });
  67. router.afterEach(() => {
  68. NProgress.done();
  69. });
  70. export default router;