index.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import Vue from 'vue'
  2. import VueRouter from 'vue-router'
  3. /* Layout */
  4. import Layout from '@/layout'
  5. import store from '@/store'
  6. import API from '@/api'
  7. Vue.use(VueRouter);
  8. const originalPush = VueRouter.prototype.push
  9. VueRouter.prototype.push = function push(location, onResolve, onReject) {
  10. if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
  11. return originalPush.call(this, location).catch(err => err)
  12. }
  13. // todo 定义无菜单权限得页面, 角色权限页面只会在菜单配置得列表页面,其他都定义在这里如详情页面
  14. // 目前都定义在这里
  15. const { userInfo } = store.getters
  16. // component: ()=>import('@/views/staff/personalcenter/Personalcenter'),
  17. // var data = localStorage.getItem('indexUrl');
  18. // const {indexUrl} =store.getters.userInfo
  19. // const a =store.getters.userInfo
  20. var routes = [
  21. {
  22. path: '/',
  23. name: 'root',
  24. redirect: '/login'
  25. },
  26. {
  27. path: '/login',
  28. component: () => import('@/views/login/index')
  29. },
  30. {
  31. path: '/home',
  32. component: Layout,
  33. redirect: '/home/index',
  34. children: [
  35. {
  36. path: 'index',
  37. component: () => import('@/views/home/index'),
  38. meta: { title: '首页' },
  39. name: 'homeIndex'
  40. }
  41. ]
  42. },
  43. {
  44. path: '/profile',
  45. component: Layout,
  46. redirect: '/profile/index',
  47. children: [
  48. {
  49. path: 'index',
  50. component: () => import('@/views/profile/profile'),
  51. meta: { title: '个人信息' },
  52. name: 'profile'
  53. }
  54. ]
  55. },
  56. {
  57. path: '/404',
  58. component: () => import('@/views/error-page/404')
  59. },
  60. {
  61. path: '/401',
  62. component: () => import('@/views/error-page/401')
  63. },
  64. {
  65. path: '/document/window',
  66. component: () => import('@/components/DocumentWindow')
  67. },
  68. {
  69. path: '/prod/validate',
  70. component: () => import('@/views/mobile/prodValidate/index'),
  71. },
  72. ];
  73. const files = require.context('./modules', false, /\.js$/);
  74. const requireAll = requireContext => requireContext.keys().forEach(key => {
  75. routes.push(files(key).default) // 读取文件中的default 模块
  76. });
  77. requireAll(files);
  78. const createRouter = () => new VueRouter({
  79. mode: 'hash', // require service support
  80. base: '/admin',
  81. //base: '/admin-test',
  82. scrollBehavior: () => ({ y: 0 }),
  83. routes: routes
  84. });
  85. const router = createRouter();
  86. // Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
  87. export function resetRouter() {
  88. const newRouter = createRouter();
  89. router.matcher = newRouter.matcher // reset router
  90. }
  91. export const constantRoutes = routes;
  92. export default router