This commit is contained in:
zxr
2026-03-21 17:53:40 +08:00
parent 2c3195b903
commit 996f86d3d0
4 changed files with 30 additions and 61 deletions

View File

@@ -6,7 +6,13 @@ import { listenerRouteChange } from '@/utils/route-listener'
import { compile, computed, defineComponent, h, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import type { RouteMeta } from 'vue-router'
import { RouteRecordRaw, useRoute, useRouter } from 'vue-router'
import {
isNavigationFailure,
NavigationFailureType,
RouteRecordRaw,
useRoute,
useRouter,
} from 'vue-router'
import useMenuTree from './use-menu-tree'
import { COMMON_ICONS } from '@/views/ops/pages/system-settings/menu-management/menuIcons'
@@ -45,10 +51,20 @@ export default defineComponent({
selectedKey.value = [item.name as string]
return
}
console.log('item', item)
// Trigger router change
router.push({
name: item.name,
const name = item.name
if (name == null || name === '') {
console.warn('[Menu] 无法跳转:路由缺少 name', item.path, item.meta?.locale)
return
}
if (!router.hasRoute(name as string)) {
console.warn('[Menu] 无法跳转:未注册的路由 name', name, item.meta?.locale)
return
}
router.push({ name }).catch((err) => {
if (isNavigationFailure(err, NavigationFailureType.duplicated)) {
return
}
console.error('[Menu] 路由跳转失败', name, err)
})
}
const findMenuOpenKeys = (target: string) => {
@@ -80,7 +96,8 @@ export default defineComponent({
const keySet = new Set([...menuOpenKeys, ...openKeys.value])
openKeys.value = [...keySet]
selectedKey.value = [activeMenu || menuOpenKeys[menuOpenKeys.length - 1]]
const leafKey = (activeMenu || menuOpenKeys[menuOpenKeys.length - 1]) as string | undefined
selectedKey.value = leafKey ? [leafKey] : []
}
}, true)
const setCollapse = (val: boolean) => {