info.ts 2.2 KB

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