|
@@ -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;
|