index.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import {createRouter, createWebHistory, RouteRecordRaw} from 'vue-router';
  2. import {
  3. HOME_NAME,
  4. HOME_PATH,
  5. LOGIN_NAME,
  6. LOGIN_PATH,
  7. MAIN_NAME,
  8. MAIN_PATH,
  9. MENU_NAME,
  10. MENU_PATH,
  11. REGISTER_NAME,
  12. REGISTER_PATH,
  13. ROLE_NAME,
  14. ROLE_PATH,
  15. USER_NAME,
  16. USER_PATH,
  17. } from './name';
  18. import Home from '@pages/home/index.vue';
  19. import Login from '@pages/login/index.vue';
  20. import {storeToRefs, useUserStore} from '@stores';
  21. const childrenRoures: RouteRecordRaw[] = [
  22. {
  23. path: MAIN_PATH,
  24. name: MAIN_NAME,
  25. component: () => import('@pages/main/index.vue'),
  26. },
  27. {
  28. path: MENU_PATH,
  29. name: MENU_NAME,
  30. component: () => import('@pages/menu'),
  31. },
  32. {
  33. path: ROLE_PATH,
  34. name: ROLE_NAME,
  35. component: () => import('@pages/role'),
  36. },
  37. {
  38. path: USER_PATH,
  39. name: USER_NAME,
  40. component: () => import('@pages/user'),
  41. },
  42. ];
  43. const routes: RouteRecordRaw[] = [
  44. {
  45. path: HOME_PATH,
  46. component: Home,
  47. name: HOME_NAME,
  48. redirect: MAIN_PATH,
  49. children: childrenRoures,
  50. },
  51. {path: LOGIN_PATH, component: Login, name: LOGIN_NAME},
  52. {
  53. path: REGISTER_PATH,
  54. name: REGISTER_NAME,
  55. component: () => import('@pages/register/index.vue'),
  56. },
  57. {path: '/:pathMatch(.*)*', name: 'NOT_FOUND_PATH', component: () => import('@pages/not-found/index.vue')},
  58. ];
  59. export const router = createRouter({
  60. history: createWebHistory(),
  61. routes,
  62. });
  63. router.beforeEach(function(to) {
  64. const {name} = to;
  65. if (name) {
  66. const userStore = useUserStore();
  67. const {user} = storeToRefs(userStore);
  68. if (!user.value.token) {
  69. // 判断是否登录
  70. const matchList = [LOGIN_NAME, REGISTER_NAME];
  71. if (!matchList.includes(name as symbol)) return LOGIN_PATH;
  72. }
  73. }
  74. });
  75. export * from './name';