| | |
| | | import ParentView from '@/components/ParentView/index.vue'; |
| | | import InnerLink from '@/layout/components/InnerLink/index.vue'; |
| | | |
| | | import { createCustomNameComponent } from '@/utils/createCustomNameComponent'; |
| | | |
| | | // 匹配views里面所有的.vue文件 |
| | | const modules = import.meta.glob('./../../views/**/*.vue'); |
| | | export const usePermissionStore = defineStore('permission', () => { |
| | |
| | | const sidebarRouters = ref<RouteRecordRaw[]>([]); |
| | | |
| | | const getRoutes = (): RouteRecordRaw[] => { |
| | | return routes.value; |
| | | return routes.value as RouteRecordRaw[]; |
| | | }; |
| | | const getSidebarRoutes = (): RouteRecordRaw[] => { |
| | | return sidebarRouters.value; |
| | | return sidebarRouters.value as RouteRecordRaw[]; |
| | | }; |
| | | const getTopbarRoutes = (): RouteRecordRaw[] => { |
| | | return topbarRouters.value; |
| | | return topbarRouters.value as RouteRecordRaw[]; |
| | | }; |
| | | |
| | | const setRoutes = (newRoutes: RouteRecordRaw[]): void => { |
| | |
| | | } else if (route.component?.toString() === 'InnerLink') { |
| | | route.component = InnerLink; |
| | | } else { |
| | | route.component = loadView(route.component); |
| | | route.component = loadView(route.component, route.name as string); |
| | | } |
| | | if (route.children != null && route.children && route.children.length) { |
| | | route.children = filterAsyncRouter(route.children, route, type); |
| | |
| | | return res; |
| | | }; |
| | | |
| | | export const loadView = (view: any) => { |
| | | export const loadView = (view: any, name: string) => { |
| | | let res; |
| | | for (const path in modules) { |
| | | const dir = path.split('views/')[1].split('.vue')[0]; |
| | | const viewsIndex = path.indexOf('/views/'); |
| | | let dir = path.substring(viewsIndex + 7); |
| | | dir = dir.substring(0, dir.lastIndexOf('.vue')); |
| | | if (dir === view) { |
| | | res = () => modules[path](); |
| | | res = createCustomNameComponent(modules[path], { name }); |
| | | return res; |
| | | } |
| | | } |
| | | return res; |
| | |
| | | allRoutes.forEach((route) => { |
| | | const name = route.name.toString(); |
| | | if (name && nameList.includes(name)) { |
| | | console.error(`路由名称: [${name}] 重复, 会造成 404`); |
| | | const message = `路由名称: [${name}] 重复, 会造成 404`; |
| | | console.error(message); |
| | | ElNotification({ |
| | | title: '路由名称重复', |
| | | message, |
| | | type: 'error' |
| | | }); |
| | | return; |
| | | } |
| | | nameList.push(route.name.toString()); |