|
|
@@ -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('原因: 是目录菜单或没有有效路径');
|
|
|
}
|
|
|
}
|
|
|
|