diff --git a/src/layouts/modules/global-menu/base-menu.vue b/src/layouts/modules/global-menu/base-menu.vue index c020c73d0..94351cb94 100644 --- a/src/layouts/modules/global-menu/base-menu.vue +++ b/src/layouts/modules/global-menu/base-menu.vue @@ -57,14 +57,9 @@ function updateExpandedKeys() { } function handleClickMenu(key: RouteKey) { - const meta = routeStore.getSelectedMenuMetaByKey(key); - if (meta?.fixedQuery) { - routerPushByKey(key, { - query: meta.fixedQuery - }); - return; - } - routerPushByKey(key); + const { query } = routeStore.getSelectedMenuMetaByKey(key) || {}; + + routerPushByKey(key, { query }); } watch( diff --git a/src/store/modules/route/index.ts b/src/store/modules/route/index.ts index c09f5099d..c3937e7bc 100644 --- a/src/store/modules/route/index.ts +++ b/src/store/modules/route/index.ts @@ -1,5 +1,5 @@ import { computed, ref } from 'vue'; -import type { RouteMeta, RouteRecordRaw } from 'vue-router'; +import type { RouteRecordRaw } from 'vue-router'; import { defineStore } from 'pinia'; import { useBoolean } from '@sa/hooks'; import type { CustomRoute, ElegantConstRoute, LastLevelRouteKey, RouteKey, RouteMap } from '@elegant-router/types'; @@ -278,9 +278,11 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { * * @param selectedKey Selected menu key */ - function getSelectedMenuMetaByKey(selectedKey: string): RouteMeta | null { + function getSelectedMenuMetaByKey(selectedKey: string) { // The routes in router.options.routes are static, you need to use router.getRoutes() to get all the routes. - return router.getRoutes().find(route => route.name === selectedKey)?.meta || null; + const allRoutes = router.getRoutes(); + + return allRoutes.find(route => route.name === selectedKey)?.meta || null; } return { diff --git a/src/typings/router.d.ts b/src/typings/router.d.ts index bf4c667bd..ffa804c53 100644 --- a/src/typings/router.d.ts +++ b/src/typings/router.d.ts @@ -59,7 +59,7 @@ declare module 'vue-router' { multiTab?: boolean; /** If set, the route will be fixed in tabs, and the value is the order of fixed tabs */ fixedIndexInTab?: number; - /** Fixed query parameters that are automatically carried when entering the route */ - fixedQuery?: Record; + /** if set query parameters, it will be automatically carried when entering the route */ + query?: Record; } }