index.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { createRouter, createWebHashHistory } from "vue-router";
  2. import LayoutView from "../layout/index.vue";
  3. import LoginView from "../login/index.vue";
  4. import { getToken } from "@/utils/storage/sessionToken";
  5. import { loadingBar } from "@/plugin/naive-ui";
  6. const router = createRouter({
  7. history: createWebHashHistory(import.meta.env.BASE_URL),
  8. routes: [
  9. {
  10. path: "/",
  11. component: LayoutView,
  12. redirect: "/project",
  13. children: [
  14. {
  15. path: "/project",
  16. component: () => import("@/views/project/index.vue"),
  17. },
  18. {
  19. path: "/certificate/:taskId",
  20. props: true,
  21. component: () => import("@/views/project/certificate/index.vue"),
  22. },
  23. {
  24. path: "/scheme/:taskId",
  25. props: true,
  26. component: () => import("@/views/project/scheme/index.vue"),
  27. },
  28. {
  29. path: "/equipment",
  30. component: () => import("@/views/project/equipment/index.vue"),
  31. },
  32. {
  33. path: "/data_source",
  34. component: () => import("@/views/project/data/source/index.vue"),
  35. },
  36. {
  37. path: "/data_edit",
  38. component: () => import("@/views/project/data/edit/index.vue"),
  39. },
  40. {
  41. path: "/data_checkout",
  42. component: () => import("@/views/project/data/checkout/index.vue"),
  43. },
  44. {
  45. path: "/report_create/:taskId",
  46. props: true,
  47. component: () => import("@/views/project/report/create/index.vue"),
  48. },
  49. {
  50. path: "/report_edit/:taskId",
  51. props: true,
  52. component: () => import("@/views/project/report/edit/index.vue"),
  53. },
  54. {
  55. path: "/report_audit/:taskId",
  56. props: true,
  57. component: () => import("@/views/project/report/audit/index.vue"),
  58. },
  59. ],
  60. },
  61. {
  62. path: "/login",
  63. component: LoginView,
  64. },
  65. ],
  66. });
  67. // 全局前置路由守卫
  68. router.beforeEach((to, from, next) => {
  69. loadingBar.start();
  70. const token = getToken();
  71. if (to.path === "/login") {
  72. if (!token) {
  73. next();
  74. } else {
  75. next("/");
  76. }
  77. } else {
  78. if (!token) {
  79. next("/login");
  80. } else {
  81. next();
  82. }
  83. }
  84. });
  85. // 全局后置路由守卫
  86. router.afterEach(() => {
  87. loadingBar.finish();
  88. });
  89. export default router;