From ebd16a4d1ab1a95a27838a2d4f20cc1d1e7309ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=87=95=E5=8D=9A=E6=96=87?= <349952469@qq.com> Date: Tue, 17 May 2022 13:54:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(route):=20=E8=B7=AF=E7=94=B1meta?= =?UTF-8?q?=E6=96=B0=E5=A2=9EactiveMenu=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layouts/common/GlobalHeader/components/HeaderMenu.vue | 2 +- .../components/VerticalMixSider/components/MixMenuDrawer.vue | 2 +- .../components/VerticalSider/components/VerticalMenu.vue | 2 +- src/typings/route.d.ts | 2 ++ 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/layouts/common/GlobalHeader/components/HeaderMenu.vue b/src/layouts/common/GlobalHeader/components/HeaderMenu.vue index 22feb27a..86813132 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 9747fa7b..4c9c5758 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 be7be1be..cdfe5047 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 34427cff..da5f4edc 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; }; /** 单个路由的类型结构(动态路由模式:后端返回此类型结构的路由) */ From 3e4f9e282442073447c5c24c33d65bc6130978ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=87=95=E5=8D=9A=E6=96=87?= <349952469@qq.com> Date: Tue, 17 May 2022 14:06:20 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(route):=20=E5=BD=93=E4=B8=BA=E5=B7=A6?= =?UTF-8?q?=E4=BE=A7=E6=B7=B7=E5=90=88=E8=8F=9C=E5=8D=95=E6=97=B6activeMen?= =?UTF-8?q?u=E6=97=A0=E6=95=88=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/GlobalSider/components/VerticalMixSider/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/common/GlobalSider/components/VerticalMixSider/index.vue b/src/layouts/common/GlobalSider/components/VerticalMixSider/index.vue index 9a6d94bd..32751447 100644 --- a/src/layouts/common/GlobalSider/components/VerticalMixSider/index.vue +++ b/src/layouts/common/GlobalSider/components/VerticalMixSider/index.vue @@ -58,7 +58,7 @@ const firstDegreeMenus = computed(() => function getActiveParentRouteName() { firstDegreeMenus.value.some(item => { - const routeName = route.name as string; + const routeName = (route.meta?.activeMenu ? route.meta.activeMenu : route.name) as string; const flag = routeName?.includes(item.routeName); if (flag) { setActiveParentRouteName(item.routeName);