info.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { modeFlags, ModeFlag } from "@/store/sys";
  2. import { ComputedRef } from "vue";
  3. import { RouteRecordRaw } from "vue-router";
  4. import {
  5. RouteNameRaw,
  6. RouteMetaRaw,
  7. readyRouteMeta,
  8. readyRouteName,
  9. defRouteName,
  10. } from "./constant";
  11. export type RouteAtom<
  12. T extends ModeFlag = any,
  13. key = RouteNameRaw<T>[keyof RouteNameRaw<T>]
  14. > = {
  15. path: string;
  16. name: key;
  17. meta: key extends keyof RouteMetaRaw<T> ? RouteMetaRaw<T>[key] : never;
  18. component: RouteRecordRaw["component"];
  19. redirect?: string;
  20. children?: RoutesRaw<T>;
  21. };
  22. export type RoutesRaw<T extends ModeFlag = any> = RouteAtom<T>[];
  23. import graphic from "@/views/graphic/index.vue";
  24. export const writeRoutesRaw: RoutesRaw<typeof modeFlags.LOGIN> = [
  25. {
  26. path: "/graphic/:mode/:action/:id",
  27. name: readyRouteName.graphic,
  28. meta: readyRouteMeta.graphic,
  29. component: () => import("@/views/graphic/index.vue"),
  30. },
  31. {
  32. path: "/scene",
  33. name: readyRouteName.scene,
  34. meta: readyRouteMeta.scene,
  35. component: () => import("@/views/scene/index.vue"),
  36. },
  37. {
  38. path: "/photos",
  39. name: readyRouteName.photos,
  40. meta: readyRouteMeta.photos,
  41. component: () => import("@/views/photos/index.vue"),
  42. },
  43. {
  44. path: "/accidents",
  45. name: readyRouteName.accidents,
  46. meta: readyRouteMeta.accidents,
  47. component: () => import("@/views/accidents/index.vue"),
  48. },
  49. {
  50. path: "/gena4/:id1/:id2",
  51. name: readyRouteName.gena4,
  52. meta: readyRouteMeta.gena4,
  53. component: () => import("@/views/accidents/print.vue"),
  54. },
  55. {
  56. path: "/roads",
  57. name: readyRouteName.roads,
  58. meta: readyRouteMeta.roads,
  59. component: () => import("@/views/roads/index.vue"),
  60. },
  61. {
  62. path: "/tabulation/:id",
  63. name: readyRouteName.tabulation,
  64. meta: readyRouteMeta.tabulation,
  65. component: () => import("@/views/roads/tabulation.vue"),
  66. },
  67. ];
  68. export type RoutesRef<T extends ModeFlag = any> = ComputedRef<{
  69. list: RoutesRaw<T>;
  70. default: typeof defRouteName;
  71. }>;