From bae16008db3ec3cfafca983162a366f8fde73186 Mon Sep 17 00:00:00 2001 From: lrl <742798240@qq.com> Date: Mon, 13 Dec 2021 21:13:54 +0800 Subject: [PATCH] fix: router --- src/router/index.ts | 11 +++++++---- src/store/modules/multiTags.ts | 2 +- src/store/modules/types.ts | 1 + src/views/tabs/index/index.vue | 1 + 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/router/index.ts b/src/router/index.ts index 6caa7429e..cb6a9924e 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -2,7 +2,7 @@ import { Router, RouteMeta, createRouter, RouteRecordName } from "vue-router"; import { toRouteType } from "./types"; import { openLink } from "/@/utils/link"; import NProgress from "/@/utils/progress"; -import { split, uniqBy } from "lodash-es"; +import { split, uniqBy, find, findIndex } from "lodash-es"; import { constantRoutes } from "./modules"; import { transformI18n } from "/@/plugins/i18n"; import remainingRouter from "./modules/remaining"; @@ -102,7 +102,7 @@ router.beforeEach((to: toRouteType, _from, next) => { return router.push(refreshRedirect); } else { const { path } = to; - const index = remainingRouter.findIndex(v => { + const index = findIndex(remainingRouter, v => { return v.path == path; }); const routes = @@ -135,10 +135,13 @@ router.beforeEach((to: toRouteType, _from, next) => { } } } - router.push(to.path); + router.push(to.fullPath); // 刷新页面更新标签栏与页面路由匹配 const localRoutes = storageLocal.getItem("responsive-tags"); - const optionsRoutes = router.options?.routes[0].children; + const home = find(router.options?.routes, function (route) { + return route.path === "/"; + }); + const optionsRoutes = [home, ...router.options?.routes[0].children]; const newLocalRoutes = []; optionsRoutes.forEach(ors => { localRoutes.forEach(lrs => { diff --git a/src/store/modules/multiTags.ts b/src/store/modules/multiTags.ts index 8969435c5..e6420aae2 100644 --- a/src/store/modules/multiTags.ts +++ b/src/store/modules/multiTags.ts @@ -59,7 +59,7 @@ export const useMultiTagsStore = defineStore({ return tag.path === tagVal?.path; }); - if (tagHasExits) return; + if (tagHasExits && !tagVal.query) return; const meta = tagVal?.meta; const dynamicLevel = meta?.dynamicLevel ?? -1; if (dynamicLevel > 0) { diff --git a/src/store/modules/types.ts b/src/store/modules/types.ts index d6c11281d..644ce8622 100644 --- a/src/store/modules/types.ts +++ b/src/store/modules/types.ts @@ -25,6 +25,7 @@ export type multiType = { path: string; parentPath: string; name: string; + query: object; meta: any; }; diff --git a/src/views/tabs/index/index.vue b/src/views/tabs/index/index.vue index f1e940c2a..63178d7d2 100644 --- a/src/views/tabs/index/index.vue +++ b/src/views/tabs/index/index.vue @@ -12,6 +12,7 @@ function toDetail(index: number) { path: `/tabs/detail`, parentPath: route.matched[0].path, name: "tabDetail", + query: { id: index }, meta: { title: { zh: `No.${index} - 详情信息`, en: `No.${index} - DetailInfo` }, showLink: false,