fix(projects): 修复路由 name 与 path 不一致激活菜单异常问题

This commit is contained in:
xlsea
2025-11-20 10:06:04 +08:00
parent 617eef0b49
commit 789a6bb9c9
2 changed files with 34 additions and 2 deletions
@@ -30,9 +30,40 @@ function useMixMenu() {
}
function getActiveFirstLevelMenuKey() {
const [firstLevelRouteName] = selectedKey.value.split('_');
const currentKey = selectedKey.value;
setActiveFirstLevelMenuKey(firstLevelRouteName);
const firstLevelMenu = allMenus.value.find(menu => {
if (menu.key === currentKey) {
return true;
}
if (menu.children && menu.children.length > 0) {
return findMenuByKey(menu.children, currentKey);
}
return false;
});
if (firstLevelMenu) {
setActiveFirstLevelMenuKey(firstLevelMenu.key);
} else {
const [firstLevelRouteName] = currentKey.split('_');
setActiveFirstLevelMenuKey(firstLevelRouteName);
}
}
function findMenuByKey(menus: App.Global.Menu[], key: string): boolean {
return menus.some(menu => {
if (menu.key === key) {
return true;
}
if (menu.children && menu.children.length > 0) {
return findMenuByKey(menu.children, key);
}
return false;
});
}
const isActiveFirstLevelMenuHasChildren = computed(() => {
@@ -9,6 +9,7 @@ import { useAppStore } from '@/store/modules/app';
import { useThemeStore } from '@/store/modules/theme';
import { useRouteStore } from '@/store/modules/route';
import { useRouterPush } from '@/hooks/common/router';
import { $t } from '@/locales';
import { useMenu, useMixMenuContext } from '../context';
import FirstLevelMenu from '../components/first-level-menu.vue';
import GlobalLogo from '../../global-logo/index.vue';