|
|
|
@ -8,6 +8,7 @@ import { toRaw } from 'vue'; |
|
|
|
import { PAGE_LAYOUT_COMPONENT } from '/@/router/constant'; |
|
|
|
// import { isDevMode } from '/@/utils/env';
|
|
|
|
import dynamicImport from './dynamicImport'; |
|
|
|
import { omit } from 'lodash-es'; |
|
|
|
|
|
|
|
let currentTo: RouteLocationNormalized | null = null; |
|
|
|
|
|
|
|
@ -23,8 +24,16 @@ export function setCurrentTo(to: RouteLocationNormalized) { |
|
|
|
export function genRouteModule(moduleList: AppRouteModule[]) { |
|
|
|
const ret: AppRouteRecordRaw[] = []; |
|
|
|
for (const routeMod of moduleList) { |
|
|
|
const routes = routeMod.routes as any; |
|
|
|
const layout = routeMod.layout; |
|
|
|
let routes = []; |
|
|
|
let layout: AppRouteRecordRaw | undefined; |
|
|
|
if (Reflect.has(routeMod, 'routes')) { |
|
|
|
routes = routeMod.routes as any; |
|
|
|
layout = routeMod.layout; |
|
|
|
} else if (Reflect.has(routeMod, 'path')) { |
|
|
|
layout = omit(routeMod, 'children') as any; |
|
|
|
routes = routeMod.children || []; |
|
|
|
} |
|
|
|
|
|
|
|
const router = createRouter({ routes, history: createWebHashHistory() }); |
|
|
|
|
|
|
|
const flatList = (toRaw(router.getRoutes()).filter( |
|
|
|
@ -45,7 +54,8 @@ export function genRouteModule(moduleList: AppRouteModule[]) { |
|
|
|
|
|
|
|
// 动态引入
|
|
|
|
// TODO 错误写法
|
|
|
|
function asyncImportRoute(routes: AppRouteRecordRaw[]) { |
|
|
|
function asyncImportRoute(routes: AppRouteRecordRaw[] | undefined) { |
|
|
|
if (!routes) return; |
|
|
|
routes.forEach((item) => { |
|
|
|
const { component } = item; |
|
|
|
const { children } = item; |
|
|
|
@ -60,10 +70,14 @@ function asyncImportRoute(routes: AppRouteRecordRaw[]) { |
|
|
|
// 将后台对象转成路由对象
|
|
|
|
export function transformObjToRoute(routeList: AppRouteModule[]) { |
|
|
|
routeList.forEach((route) => { |
|
|
|
asyncImportRoute(route.routes); |
|
|
|
asyncImportRoute(Reflect.has(route, 'routes') ? route.routes : route.children || []); |
|
|
|
if (route.layout) { |
|
|
|
route.layout.component = |
|
|
|
route.layout.component === 'PAGE_LAYOUT' ? PAGE_LAYOUT_COMPONENT : ''; |
|
|
|
} else { |
|
|
|
route.component = route.component === 'PAGE_LAYOUT' ? PAGE_LAYOUT_COMPONENT : ''; |
|
|
|
const _layout = omit(route, 'children') as any; |
|
|
|
route.layout = _layout; |
|
|
|
} |
|
|
|
}); |
|
|
|
return routeList; |
|
|
|
|