From 02c3a88ed60f3466f851574df925c215186ad528 Mon Sep 17 00:00:00 2001 From: xiaoxian521 <1923740402@qq.com> Date: Wed, 1 Dec 2021 20:18:00 +0800 Subject: [PATCH] perf: tag --- src/router/index.ts | 36 ++++++++++++++++++++++++++---------- src/views/tabs/index.vue | 14 +++++++++++++- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/src/router/index.ts b/src/router/index.ts index 76eb96ef6..edfde8a78 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,15 +1,17 @@ import { Router, + RouteMeta, createRouter, RouteComponent, + RouteRecordName, createWebHashHistory, RouteRecordNormalized } from "vue-router"; -import { RouteConfigs } from "/@/layout/types"; -import { split, uniqBy } from "lodash-es"; import { openLink } from "/@/utils/link"; import NProgress from "/@/utils/progress"; +import { split, uniqBy } from "lodash-es"; import { useTimeoutFn } from "@vueuse/core"; +import { RouteConfigs } from "/@/layout/types"; import { storageSession, storageLocal } from "/@/utils/storage"; import { usePermissionStoreHook } from "/@/store/modules/permission"; import { useMultiTagsStoreHook } from "/@/store/modules/multiTags"; @@ -25,6 +27,7 @@ import externalLink from "./modules/externalLink"; import remainingRouter from "./modules/remaining"; import flowChartRouter from "./modules/flowchart"; import componentsRouter from "./modules/components"; + // 动态路由 import { getAsyncRoutes } from "/@/api/routes"; import { transformI18n } from "/@/plugins/i18n"; @@ -234,16 +237,29 @@ router.beforeEach((to, _from, next) => { if (usePermissionStoreHook().wholeRoutes.length === 0) initRouter(name.username).then((router: Router) => { if (!useMultiTagsStoreHook().getMultiTagsCache) { + const handTag = ( + path: string, + parentPath: string, + name: RouteRecordName, + meta: RouteMeta + ): void => { + useMultiTagsStoreHook().handleTags("push", { + path, + parentPath, + name, + meta + }); + }; + const parentPath = to.matched[0]?.path; if (to.meta?.realPath) { - to.meta.title = `No.${to.params?.id} - 详情信息`; + const { path, name, meta } = to.matched[0]?.children[0]; + handTag(path, parentPath, name, meta); + return router.push(path); + } else { + const { path, name, meta } = to; + handTag(path, parentPath, name, meta); + return router.push(to.path); } - useMultiTagsStoreHook().handleTags("push", { - path: to.path, - parentPath: to.matched[0]?.path, - name: to.name, - meta: to.meta - }); - return router.push(to.path); } router.push(to.path); // 刷新页面更新标签栏与页面路由匹配 diff --git a/src/views/tabs/index.vue b/src/views/tabs/index.vue index af57aac0f..0f0741fb0 100644 --- a/src/views/tabs/index.vue +++ b/src/views/tabs/index.vue @@ -13,7 +13,7 @@ function toDetail(index: number) { parentPath: route.matched[0].path, name: "tabDetail", meta: { - title: `No.${index} - 详情信息`, + title: { zh: `No.${index} - 详情信息`, en: `No.${index} - DetailInfo` }, showLink: false, i18n: false, dynamicLevel: 3, @@ -46,5 +46,17 @@ function toDetail(index: number) { .tabs-container { padding: 10px; background: #fff; + + ::v-deep(.el-collapse-item__header) { + line-height: 20px; + } + + ::v-deep(.el-collapse-item__wrap) { + border-bottom: none; + } + + button { + margin: 10px; + } }