diff --git a/src/layouts/common/GlobalHeader/components/HeaderMenu.vue b/src/layouts/common/GlobalHeader/components/HeaderMenu.vue index 22feb27a3..86813132d 100644 --- a/src/layouts/common/GlobalHeader/components/HeaderMenu.vue +++ b/src/layouts/common/GlobalHeader/components/HeaderMenu.vue @@ -21,7 +21,7 @@ const theme = useThemeStore(); const { routerPush } = useRouterPush(); const menus = computed(() => routeStore.menus as GlobalMenuOption[]); -const activeKey = computed(() => route.name as string); +const activeKey = computed(() => (route.meta?.activeMenu ? route.meta.activeMenu : route.name) as string); function handleUpdateMenu(_key: string, item: MenuOption) { const menuItem = item as GlobalMenuOption; diff --git a/src/layouts/common/GlobalSider/components/VerticalMixSider/components/MixMenuDrawer.vue b/src/layouts/common/GlobalSider/components/VerticalMixSider/components/MixMenuDrawer.vue index 9747fa7b1..4c9c57589 100644 --- a/src/layouts/common/GlobalSider/components/VerticalMixSider/components/MixMenuDrawer.vue +++ b/src/layouts/common/GlobalSider/components/VerticalMixSider/components/MixMenuDrawer.vue @@ -53,7 +53,7 @@ const { title } = useAppInfo(); const showDrawer = computed(() => (props.visible && props.menus.length) || app.mixSiderFixed); -const activeKey = computed(() => route.name as string); +const activeKey = computed(() => (route.meta?.activeMenu ? route.meta.activeMenu : route.name) as string); const expandedKeys = ref([]); function handleUpdateMenu(_key: string, item: MenuOption) { diff --git a/src/layouts/common/GlobalSider/components/VerticalSider/components/VerticalMenu.vue b/src/layouts/common/GlobalSider/components/VerticalSider/components/VerticalMenu.vue index be7be1be5..cdfe50470 100644 --- a/src/layouts/common/GlobalSider/components/VerticalSider/components/VerticalMenu.vue +++ b/src/layouts/common/GlobalSider/components/VerticalSider/components/VerticalMenu.vue @@ -29,7 +29,7 @@ const theme = useThemeStore(); const routeStore = useRouteStore(); const { routerPush } = useRouterPush(); -const activeKey = computed(() => route.name as string); +const activeKey = computed(() => (route.meta?.activeMenu ? route.meta.activeMenu : route.name) as string); const expandedKeys = ref([]); function handleUpdateMenu(_key: string, item: MenuOption) { diff --git a/src/typings/route.d.ts b/src/typings/route.d.ts index 34427cff7..da5f4edc7 100644 --- a/src/typings/route.d.ts +++ b/src/typings/route.d.ts @@ -93,6 +93,8 @@ declare namespace AuthRoute { order?: number; /** 表示是否是多级路由的中间级路由(用于转换路由数据时筛选多级路由的标识,定义路由时不用填写) */ multi?: boolean; + /** 当前路由需要选中的菜单项(用于跳转至不在左侧菜单显示的路由且需要高亮某个菜单的情况) */ + activeMenu?: RouteKey; }; /** 单个路由的类型结构(动态路由模式:后端返回此类型结构的路由) */