提交代码
This commit is contained in:
1 parent
d5316b3d37
commit
5514c2a57e
1 file changed
+49
-2
+49
-2
@@ -304,9 +304,21 @@ const flattenMenus = (menus: any[], parentChain: string[] = [], parentPath = '',
|
||||
menus.forEach((menu, menuIndex) => {
|
||||
// 跳过隐藏的菜单
|
||||
if (menu.hidden === true) {
|
||||
console.log(`跳过隐藏菜单: ${menu.meta?.title || menu.name}`);
|
||||
return;
|
||||
}
|
||||
|
||||
// 添加调试信息,特别关注工作流菜单
|
||||
if (menu.meta?.title === '工作流' || menu.name === 'Workflow11616') {
|
||||
console.log('=== 工作流菜单处理开始 ===');
|
||||
console.log('工作流菜单原始数据:', menu);
|
||||
console.log('工作流菜单组件类型:', menu.component);
|
||||
console.log('工作流菜单是否有子菜单:', !!menu.children);
|
||||
console.log('工作流菜单子菜单数量:', menu.children?.length || 0);
|
||||
console.log('工作流菜单层级:', level);
|
||||
console.log('工作流菜单父路径:', parentPath);
|
||||
}
|
||||
|
||||
// 构建完整路径 - 移到外层,确保在递归调用中也能访问
|
||||
let fullPath = menu.path;
|
||||
|
||||
@@ -363,8 +375,40 @@ const flattenMenus = (menus: any[], parentChain: string[] = [], parentPath = '',
|
||||
// 检查是否有可见的子菜单
|
||||
const hasVisibleChildren = menu.children && menu.children.some((child: any) => !child.hidden);
|
||||
|
||||
// 只有叶子节点(没有子菜单或子菜单都是隐藏的)才作为可点击的菜单项
|
||||
if (!hasVisibleChildren && fullPath && fullPath !== '/') {
|
||||
// 检查是否为目录类型菜单
|
||||
// 1. 组件为Layout或ParentView字符串
|
||||
// 2. 组件为Vue对象且没有子菜单(可能是目录)
|
||||
// 3. menuType为'M'(目录类型)
|
||||
const isDirectoryMenu = menu.component === 'Layout' ||
|
||||
menu.component === 'ParentView' ||
|
||||
(typeof menu.component === 'object' && !hasVisibleChildren) ||
|
||||
menu.menuType === 'M';
|
||||
|
||||
// 添加工作流菜单的详细调试信息
|
||||
if (menu.meta?.title === '工作流' || menu.name === 'Workflow11616') {
|
||||
console.log('=== 工作流菜单判断过程 ===');
|
||||
console.log('hasVisibleChildren:', hasVisibleChildren);
|
||||
console.log('isDirectoryMenu:', isDirectoryMenu);
|
||||
console.log('menu.component:', menu.component);
|
||||
console.log('menu.component类型:', typeof menu.component);
|
||||
console.log('menu.menuType:', menu.menuType);
|
||||
console.log('menu.children:', menu.children);
|
||||
console.log('fullPath:', fullPath);
|
||||
console.log('level:', level);
|
||||
console.log('是否应该创建菜单项:', !hasVisibleChildren && !isDirectoryMenu && fullPath && fullPath !== '/');
|
||||
console.log('完整菜单对象:', JSON.stringify(menu, null, 2));
|
||||
}
|
||||
|
||||
// 目录菜单处理逻辑:如果是目录菜单且没有子菜单,直接跳过
|
||||
if (isDirectoryMenu && !hasVisibleChildren) {
|
||||
if (menu.meta?.title === '工作流' || menu.name === 'Workflow11616') {
|
||||
console.log('=== 工作流菜单被跳过 ===');
|
||||
console.log('原因: 是目录菜单且没有子菜单');
|
||||
}
|
||||
// 不创建菜单项,直接跳过
|
||||
}
|
||||
// 只有叶子节点(没有子菜单或子菜单都是隐藏的)且不是目录菜单才作为可点击的菜单项
|
||||
else if (!hasVisibleChildren && !isDirectoryMenu && fullPath && fullPath !== '/') {
|
||||
const menuAction: MenuAction = {
|
||||
id: `menu-${menu.name || fullPath}`,
|
||||
title: menu.meta.title,
|
||||
@@ -389,6 +433,9 @@ const flattenMenus = (menus: any[], parentChain: string[] = [], parentPath = '',
|
||||
);
|
||||
|
||||
result.push(menuAction);
|
||||
} else if (menu.meta?.title === '工作流' || menu.name === 'Workflow11616') {
|
||||
console.log('=== 工作流菜单被过滤掉 ===');
|
||||
console.log('原因: 是目录菜单或没有有效路径');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user