web-课程列表
This commit is contained in:
@@ -41,9 +41,6 @@ export function generateRoutes(menus: SysMenu[]): RouteRecordRaw[] {
|
||||
|
||||
// 生成路由
|
||||
menuTree.forEach(menu => {
|
||||
if(menu.type === MenuType.PAGE) {
|
||||
console.log(`[路由生成] 生成独立PAGE路由: ${menu.name} -> ${menu.url}`);
|
||||
}
|
||||
const route = generateRouteFromMenu(menu);
|
||||
|
||||
if (route) {
|
||||
@@ -66,24 +63,10 @@ export function generateRoutes(menus: SysMenu[]): RouteRecordRaw[] {
|
||||
function extractPageChildren(route: any, pageRoutes: RouteRecordRaw[]) {
|
||||
// 检查当前路由是否有 PAGE 类型的子菜单
|
||||
if (route.meta?.pageChildren && Array.isArray(route.meta.pageChildren)) {
|
||||
console.log(`[路由生成] 父路由 ${route.name} 包含 ${route.meta.pageChildren.length} 个PAGE子菜单`);
|
||||
route.meta.pageChildren.forEach((pageMenu: SysMenu) => {
|
||||
console.log(`[路由生成] 开始生成PAGE路由:`, {
|
||||
name: pageMenu.name,
|
||||
menuID: pageMenu.menuID,
|
||||
url: pageMenu.url,
|
||||
component: pageMenu.component,
|
||||
layout: (pageMenu as any).layout,
|
||||
type: pageMenu.type
|
||||
});
|
||||
const pageRoute = generateRouteFromMenu(pageMenu, true); // 作为顶层路由生成
|
||||
if (pageRoute) {
|
||||
console.log(`[路由生成] 生成独立PAGE路由成功:`, {
|
||||
name: pageMenu.name,
|
||||
path: pageRoute.path,
|
||||
component: pageRoute.component,
|
||||
hasChildren: !!pageRoute.children
|
||||
});
|
||||
|
||||
pageRoutes.push(pageRoute);
|
||||
} else {
|
||||
console.error(`[路由生成] 生成独立PAGE路由失败: ${pageMenu.name}`);
|
||||
@@ -153,11 +136,9 @@ function generateRouteFromMenu(menu: SysMenu, isTopLevel = true): RouteRecordRaw
|
||||
} else {
|
||||
// 没有子菜单,也没有指定布局,使用具体的页面组件
|
||||
if (menu.component) {
|
||||
console.log(`[路由生成] 加载组件: ${menu.name} -> ${menu.component}`);
|
||||
route.component = getComponent(menu.component);
|
||||
} else {
|
||||
// 非顶层菜单没有组件时,使用简单的占位组件
|
||||
console.log(`[路由生成] ${menu.name} 没有组件,使用BlankLayout`);
|
||||
route.component = getComponent('BlankLayout');
|
||||
}
|
||||
}
|
||||
@@ -182,7 +163,6 @@ function generateRouteFromMenu(menu: SysMenu, isTopLevel = true): RouteRecordRaw
|
||||
menu.children!.forEach(child => {
|
||||
if (child.type === MenuType.PAGE) {
|
||||
// PAGE 类型的菜单作为独立路由,不作为子路由
|
||||
console.log(`[路由生成] 发现PAGE类型子菜单: ${child.name} (${child.menuID}), 父菜单: ${menu.name}`);
|
||||
pageChildren.push(child);
|
||||
} else {
|
||||
normalChildren.push(child);
|
||||
@@ -200,7 +180,6 @@ function generateRouteFromMenu(menu: SysMenu, isTopLevel = true): RouteRecordRaw
|
||||
// PAGE 类型的菜单需要在外层单独处理(不管是哪一层的菜单)
|
||||
if (pageChildren.length > 0) {
|
||||
// 将 PAGE 类型的子菜单保存到路由的 meta 中,稍后在外层生成
|
||||
console.log(`[路由生成] 保存 ${pageChildren.length} 个PAGE子菜单到 ${menu.name} 的meta中`);
|
||||
route.meta.pageChildren = pageChildren;
|
||||
}
|
||||
|
||||
@@ -270,18 +249,14 @@ function getComponent(componentName: string) {
|
||||
componentPath += '.vue';
|
||||
}
|
||||
|
||||
console.log(`[路由生成] 组件路径转换: ${componentName} -> ${componentPath}`);
|
||||
|
||||
// 动态导入组件
|
||||
return () => {
|
||||
console.log(`[组件加载] 开始加载: ${componentPath}`);
|
||||
return import(/* @vite-ignore */ componentPath)
|
||||
.then(module => {
|
||||
console.log(`[组件加载] 成功: ${componentPath}`, module);
|
||||
return module;
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(`[组件加载] 失败: ${componentPath}`, error);
|
||||
// 返回404组件
|
||||
return import('@/views/error/404.vue').catch(() =>
|
||||
Promise.resolve({
|
||||
|
||||
Reference in New Issue
Block a user