From 77c798eaedab571990930ecf14f8cead43c13640 Mon Sep 17 00:00:00 2001 From: lrl <742798240@qq.com> Date: Tue, 14 Dec 2021 21:59:54 +0800 Subject: [PATCH 1/4] fix: menuModel --- src/layout/components/tag/index.vue | 82 ++++++++++++++--------------- 1 file changed, 39 insertions(+), 43 deletions(-) diff --git a/src/layout/components/tag/index.vue b/src/layout/components/tag/index.vue index 452edbfa6..12c591185 100644 --- a/src/layout/components/tag/index.vue +++ b/src/layout/components/tag/index.vue @@ -17,8 +17,8 @@ import closeLeft from "/@/assets/svg/close_left.svg"; import closeOther from "/@/assets/svg/close_other.svg"; import closeRight from "/@/assets/svg/close_right.svg"; -import { isEqual } from "lodash-es"; import { emitter } from "/@/utils/mitt"; +import { isEqual, isEmpty } from "lodash-es"; import { transformI18n } from "/@/plugins/i18n"; import { storageLocal } from "/@/utils/storage"; import { useRoute, useRouter } from "vue-router"; @@ -367,6 +367,19 @@ function deleteMenu(item, tag?: string) { function onClickDrop(key, item, selectRoute?: RouteConfigs) { if (item && item.disabled) return; + + let selectTagRoute; + if (selectRoute) { + selectTagRoute = { + path: selectRoute.path, + meta: selectRoute.meta, + name: selectRoute.name, + query: selectRoute.query + }; + } else { + selectTagRoute = { path: route.path, meta: route.meta }; + } + // 当前路由信息 switch (key) { case 0: @@ -375,49 +388,19 @@ function onClickDrop(key, item, selectRoute?: RouteConfigs) { break; case 1: // 关闭当前标签页 - selectRoute - ? deleteMenu({ - path: selectRoute.path, - meta: selectRoute.meta, - name: selectRoute.name - }) - : deleteMenu({ path: route.path, meta: route.meta }); + deleteMenu(selectTagRoute); break; case 2: // 关闭左侧标签页 - selectRoute - ? deleteMenu( - { - path: selectRoute.path, - meta: selectRoute.meta - }, - "left" - ) - : deleteMenu({ path: route.path, meta: route.meta }, "left"); + deleteMenu(selectTagRoute, "left"); break; case 3: // 关闭右侧标签页 - selectRoute - ? deleteMenu( - { - path: selectRoute.path, - meta: selectRoute.meta - }, - "right" - ) - : deleteMenu({ path: route.path, meta: route.meta }, "right"); + deleteMenu(selectTagRoute, "right"); break; case 4: // 关闭其他标签页 - selectRoute - ? deleteMenu( - { - path: selectRoute.path, - meta: selectRoute.meta - }, - "other" - ) - : deleteMenu({ path: route.path, meta: route.meta }, "other"); + deleteMenu(selectTagRoute, "other"); break; case 5: // 关闭全部标签页 @@ -430,7 +413,7 @@ function onClickDrop(key, item, selectRoute?: RouteConfigs) { break; } setTimeout(() => { - showMenuModel(route.fullPath); + showMenuModel(route.fullPath, route.query); }); } @@ -456,18 +439,31 @@ function disabledMenus(value: boolean) { } // 检查当前右键的菜单两边是否存在别的菜单,如果左侧的菜单是首页,则不显示关闭左侧标签页,如果右侧没有菜单,则不显示关闭右侧标签页 -function showMenuModel(currentPath: string, refresh = false) { +function showMenuModel( + currentPath: string, + query: object = {}, + refresh = false +) { let allRoute = multiTags.value; let routeLength = multiTags.value.length; - // currentIndex为1时,左侧的菜单是首页,则不显示关闭左侧标签页 - let currentIndex = allRoute.findIndex(v => v.path === currentPath); - // 如果currentIndex等于routeLength-1,右侧没有菜单,则不显示关闭右侧标签页 + let currentIndex = -1; + if (isEmpty(query)) { + currentIndex = allRoute.findIndex(v => v.path === currentPath); + } else { + currentIndex = allRoute.findIndex(v => isEqual(v.query, query)); + } + showMenus(true); if (refresh) { tagsViews.value[0].show = true; } + /** + * currentIndex为1时,左侧的菜单是首页,则不显示关闭左侧标签页 + * 如果currentIndex等于routeLength-1,右侧没有菜单,则不显示关闭右侧标签页 + */ + if (currentIndex === 1 && routeLength !== 2) { // 左侧的菜单是首页,右侧存在别的菜单 tagsViews.value[2].show = false; @@ -506,7 +502,7 @@ function openMenu(tag, e) { } else if (route.path !== tag.path) { // 右键菜单不匹配当前路由,隐藏刷新 tagsViews.value[0].show = false; - showMenuModel(tag.path); + showMenuModel(tag.path, tag.query); } else if ( // eslint-disable-next-line no-dupe-else-if multiTags.value.length === 2 && @@ -517,7 +513,7 @@ function openMenu(tag, e) { tagsViews.value[4].show = false; } else if (route.path === tag.path) { // 右键当前激活的菜单 - showMenuModel(tag.path, true); + showMenuModel(tag.path, tag.query, true); } currentSelect.value = tag; @@ -545,7 +541,7 @@ function tagOnClick(item) { path: item?.path, query: item?.query }); - showMenuModel(item?.path); + showMenuModel(item?.path, item?.query); } // 鼠标移入 From 05ed941638b9635a18c704f9ec2e03202a5a0b88 Mon Sep 17 00:00:00 2001 From: lrl <742798240@qq.com> Date: Tue, 14 Dec 2021 22:04:52 +0800 Subject: [PATCH 2/4] fix: menuModel --- src/layout/components/tag/index.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/layout/components/tag/index.vue b/src/layout/components/tag/index.vue index 12c591185..2a2ab5478 100644 --- a/src/layout/components/tag/index.vue +++ b/src/layout/components/tag/index.vue @@ -272,9 +272,10 @@ function dynamicRouteTag(value: string, parentPath: string): void { // 重新加载 function onFresh() { toggleClass(true, refreshButton, document.querySelector(".rotate")); - const { fullPath } = unref(route); + const { fullPath, query } = unref(route); router.replace({ - path: "/redirect" + fullPath + path: "/redirect" + fullPath, + query: query }); setTimeout(() => { removeClass(document.querySelector(".rotate"), refreshButton); From c81227bb4c35a5711de89b489cb6830b4733177f Mon Sep 17 00:00:00 2001 From: xiaoxian521 <1923740402@qq.com> Date: Wed, 15 Dec 2021 11:04:12 +0800 Subject: [PATCH 3/4] docs: update --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fc2795c04..700a33550 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,13 @@ pnpm build ## 微信交流群 -本人微信:18237613535,拉你进群 +本人微信:18237613535,拉你进群,有什么问题你可以和群友交流 + +## 付费咨询、需求定制、业务组件开发 + +作者精力有限,需要提供服务的可扫下面的二维码加微信 + + ## 许可证 From 3ef9444bcba0cf8543c7389e990e2c7c0876de0f Mon Sep 17 00:00:00 2001 From: xiaoxian521 <1923740402@qq.com> Date: Wed, 15 Dec 2021 11:05:50 +0800 Subject: [PATCH 4/4] docs: update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 700a33550..762296600 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,7 @@ pnpm build 本人微信:18237613535,拉你进群,有什么问题你可以和群友交流 -## 付费咨询、需求定制、业务组件开发 +## 付费咨询、需求定制 作者精力有限,需要提供服务的可扫下面的二维码加微信