fix: 菜单分组渲染逻辑 — 相同group合并为一个分组标题

This commit is contained in:
Hermes CI Fix
2026-07-17 09:44:22 +08:00
parent 4f0229fccc
commit 7f0f74a6e9
+15 -12
View File
@@ -91,23 +91,26 @@ const filteredMenus = computed(() => {
// 按分组组织菜单 // 按分组组织菜单
const menuGroups = computed(() => { const menuGroups = computed(() => {
const groups: { label: string; items: typeof MENU_ITEMS }[] = [] const groups: { label: string; items: typeof MENU_ITEMS }[] = []
let currentLabel = '' const groupMap = new Map<string, typeof MENU_ITEMS>()
let currentItems: typeof MENU_ITEMS = []
for (const item of filteredMenus.value) { for (const item of filteredMenus.value) {
if (item.group) { const label = item.group || ''
if (currentItems.length > 0) { if (!label) continue
groups.push({ label: currentLabel, items: currentItems }) if (!groupMap.has(label)) {
} groupMap.set(label, [])
currentLabel = item.group as string
currentItems = [item]
} else {
currentItems.push(item)
} }
groupMap.get(label)!.push(item)
} }
if (currentItems.length > 0) {
groups.push({ label: currentLabel, items: currentItems }) // 按出现顺序输出
const seen = new Set<string>()
for (const item of filteredMenus.value) {
const label = item.group || ''
if (!label || seen.has(label)) continue
seen.add(label)
groups.push({ label, items: groupMap.get(label)! })
} }
return groups return groups
}) })