| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import type { App } from 'vue'
- import type { RouteRecordRaw } from 'vue-router'
- import { createRouter, createWebHistory } from 'vue-router'
- import remainingRouter from './modules/remaining'
- import { Layout } from '@/utils/routerHelper'
- const collectRouteNames = (routes: RouteRecordRaw[], names = new Set<string>()) => {
- routes.forEach((route) => {
- if (route.name) names.add(route.name as string)
- if (route.children?.length) collectRouteNames(route.children as RouteRecordRaw[], names)
- })
- return names
- }
- const staticRouteNames = collectRouteNames(remainingRouter as RouteRecordRaw[])
- const qmsFallbackRoutes: RouteRecordRaw[] = [
- { path: 'iqc/apply/list', name: 'IqcApplicationList', component: () => import('@/views/qms/ApplicationList.vue'), meta: { module: 'iqc', title: '来料检验申请', noCache: true, hidden: true, canTo: true, activeMenu: '/qms' } },
- { path: 'ipqc/apply/list', name: 'IpqcApplicationList', component: () => import('@/views/qms/ApplicationList.vue'), meta: { module: 'ipqc', title: '过程检验申请', noCache: true, hidden: true, canTo: true, activeMenu: '/qms' } },
- { path: 'fqc/apply/list', name: 'FqcApplicationList', component: () => import('@/views/qms/ApplicationList.vue'), meta: { module: 'fqc', title: '成品检验申请', noCache: true, hidden: true, canTo: true, activeMenu: '/qms' } },
- { path: 'iqc/task/list', name: 'IqcTaskList', component: () => import('@/views/qms/TaskList.vue'), meta: { module: 'iqc', title: '来料检验任务', noCache: true, hidden: true, canTo: true, activeMenu: '/qms' } },
- { path: 'ipqc/task/list', name: 'IpqcTaskList', component: () => import('@/views/qms/TaskList.vue'), meta: { module: 'ipqc', title: '过程检验任务', noCache: true, hidden: true, canTo: true, activeMenu: '/qms' } },
- { path: 'fqc/task/list', name: 'FqcTaskList', component: () => import('@/views/qms/TaskList.vue'), meta: { module: 'fqc', title: '成品检验任务', noCache: true, hidden: true, canTo: true, activeMenu: '/qms' } }
- ]
- // 创建路由实例
- const router = createRouter({
- history: createWebHistory(import.meta.env.VITE_BASE_PATH), // createWebHashHistory URL带#,createWebHistory URL不带#
- strict: true,
- routes: remainingRouter as RouteRecordRaw[],
- scrollBehavior: () => ({ left: 0, top: 0 })
- })
- export const resetRouter = (): void => {
- const resetWhiteNameList = ['Redirect', 'Login', 'NoFound', 'Home']
- router.getRoutes().forEach((route) => {
- const { name } = route
- if (name && !resetWhiteNameList.includes(name as string) && !staticRouteNames.has(name as string)) {
- router.hasRoute(name) && router.removeRoute(name)
- }
- })
- }
- export const ensureQmsRoutes = () => {
- let parentName = router.getRoutes().find((route) => route.path === '/qms' && route.name)?.name as string | undefined
- const ensureParent = () => {
- if (parentName && router.hasRoute(parentName)) return parentName
- if (!router.hasRoute('QmsCenter')) {
- router.addRoute({ path: '/qms', component: Layout, name: 'QmsCenter', meta: { hidden: true } })
- }
- parentName = 'QmsCenter'
- return parentName
- }
- qmsFallbackRoutes.forEach((route) => {
- const fullPath = `/qms/${route.path}`
- if (router.getRoutes().some((r) => r.path === fullPath)) {
- return
- }
- if (route.name && router.hasRoute(route.name as string)) {
- router.removeRoute(route.name as string)
- }
- router.addRoute(ensureParent(), route)
- })
- }
- export const setupRouter = (app: App<Element>) => {
- app.use(router)
- ensureQmsRoutes()
- }
- export default router
|