zlwu 1 سال پیش
والد
کامیت
5514c2a57e
1فایلهای تغییر یافته به همراه49 افزوده شده و 2 حذف شده
  1. 49 2
      web/src/views/index.vue

+ 49 - 2
web/src/views/index.vue

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