Переглянути джерело

fix(header): 修复菜单切换逻辑确保只展开一个一级菜单

- 添加检查当前菜单状态避免重复展开
- 关闭所有其他已打开的一级菜单
- 关闭所有三级菜单以确保菜单状态一致性
- 保持当前菜单展开状态的正确性
panqiuyao 6 днів тому
батько
коміт
c0bf2f5c09
1 змінених файлів з 18 додано та 1 видалено
  1. 18 1
      frontend/src/components/header-bar/index.vue

+ 18 - 1
frontend/src/components/header-bar/index.vue

@@ -189,7 +189,24 @@ const submenuOpen = reactive<{ [key: number]: boolean }>({})
 const thirdLevelOpen = reactive<{ [key: string]: boolean }>({})
 
 const toggleSubmenu = (index: number) => {
-  submenuOpen[index] = !submenuOpen[index]
+  // 如果当前菜单已经打开,则关闭它
+  if (submenuOpen[index]) {
+    submenuOpen[index] = false
+    return
+  }
+  // 关闭所有其他已打开的一级菜单
+  for (const key in submenuOpen) {
+    const numKey = Number(key)
+    if (numKey !== index) {
+      submenuOpen[numKey] = false
+    }
+  }
+  // 关闭所有三级菜单
+  for (const key in thirdLevelOpen) {
+    thirdLevelOpen[key] = false
+  }
+  // 打开当前菜单
+  submenuOpen[index] = true
 }
 
 const toggleThirdLevel = (parentIndex: number, childIndex: number) => {