Browse Source

fix: router

lrl 3 years ago
parent
commit
bae16008db

+ 7 - 4
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 => {

+ 1 - 1
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) {

+ 1 - 0
src/store/modules/types.ts

@@ -25,6 +25,7 @@ export type multiType = {
   path: string;
   parentPath: string;
   name: string;
+  query: object;
   meta: any;
 };
 

+ 1 - 0
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,