import { modeFlags, ModeFlag } from "@/store/sys"; import { ComputedRef } from "vue"; import { RouteRecordRaw } from "vue-router"; import { RouteNameRaw, RouteMetaRaw, readyRouteMeta, readyRouteName, defRouteName, } from "./constant"; export type RouteAtom< T extends ModeFlag = any, key = RouteNameRaw[keyof RouteNameRaw] > = { path: string; name: key; meta: key extends keyof RouteMetaRaw ? RouteMetaRaw[key] : never; component: RouteRecordRaw["component"]; redirect?: string; children?: RoutesRaw; }; export type RoutesRaw = RouteAtom[]; export const writeRoutesRaw: RoutesRaw = [ { path: "/graphic/:mode/:action/:id", name: readyRouteName.graphic, meta: readyRouteMeta.graphic, component: () => import("@/views/graphic/index.vue"), }, { path: "/scene", name: readyRouteName.scene, meta: readyRouteMeta.scene, component: () => import("@/views/scene/index.vue"), }, { path: "/photos", name: readyRouteName.photos, meta: readyRouteMeta.photos, component: () => import("@/views/photos/index.vue"), }, { path: "/accidents", name: readyRouteName.accidents, meta: readyRouteMeta.accidents, component: () => import("@/views/accidents/index.vue"), }, { path: "/gena4/:id1/:id2", name: readyRouteName.gena4, meta: readyRouteMeta.gena4, component: () => import("@/views/accidents/index.vue"), }, { path: "/roads", name: readyRouteName.roads, meta: readyRouteMeta.roads, component: () => import("@/views/roads/index.vue"), }, { path: "/tabulation/:id", name: readyRouteName.tabulation, meta: readyRouteMeta.tabulation, component: () => import("@/views/roads/tabulation.vue"), }, ]; export type RoutesRef = ComputedRef<{ list: RoutesRaw; default: typeof defRouteName; }>;