From 41c6aa91478ced9f3eeac98563c1500cdd1cfa6f Mon Sep 17 00:00:00 2001 From: YunaiV <zhijiantianya@gmail.com> Date: Tue, 15 Feb 2022 20:42:41 +0800 Subject: [PATCH] =?UTF-8?q?v3.5.0=20=E5=85=BC=E5=AE=B9=E9=A1=B6=E9=83=A8?= =?UTF-8?q?=E6=A0=8F=E4=B8=80=E7=BA=A7=E8=8F=9C=E5=8D=95=E5=86=85=E9=83=A8?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/TopNav/index.vue | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/yudao-ui-admin/src/components/TopNav/index.vue b/yudao-ui-admin/src/components/TopNav/index.vue index 2764c55cc..0b22db8e1 100644 --- a/yudao-ui-admin/src/components/TopNav/index.vue +++ b/yudao-ui-admin/src/components/TopNav/index.vue @@ -30,9 +30,6 @@ <script> import { constantRoutes } from "@/router"; -// 不需要激活的路由 -const noactiveList = ["/user/profile", "/dict/type", "/gen/edit", "/job/log"]; - export default { data() { return { @@ -40,6 +37,8 @@ export default { visibleNumber: 5, // 是否为首次加载 isFrist: false, + // 当前激活菜单的 index + currentIndex: undefined }; }, computed: { @@ -48,7 +47,12 @@ export default { let topMenus = []; this.routers.map((menu) => { if (menu.hidden !== true) { - topMenus.push(menu); + // 兼容顶部栏一级菜单内部跳转 + if (menu.path === "/") { + topMenus.push(menu.children[0]); + } else { + topMenus.push(menu); + } } }); return topMenus; @@ -63,7 +67,11 @@ export default { this.routers.map((router) => { for (var item in router.children) { if (router.children[item].parentPath === undefined) { - router.children[item].path = router.path + "/" + router.children[item].path; + if(router.path === "/") { + router.children[item].path = "/redirect/" + router.children[item].path; + } else { + router.children[item].path = router.path + "/" + router.children[item].path; + } router.children[item].parentPath = router.path; } childrenMenus.push(router.children[item]); @@ -75,12 +83,6 @@ export default { activeMenu() { const path = this.$route.path; let activePath = this.routers[0].path; - var noactive = noactiveList.some(function (item) { - return path.indexOf(item) !== -1; - }); - if (noactive) { - return; - } if (path.lastIndexOf("/") > 0) { const tmpPath = path.substring(1, path.length); activePath = "/" + tmpPath.substring(0, tmpPath.indexOf("/")); @@ -91,7 +93,11 @@ export default { activePath = "index"; } } - this.activeRoutes(activePath); + var routes = this.activeRoutes(activePath); + if (routes.length === 0) { + activePath = this.currentIndex || this.routers[0].path + this.activeRoutes(activePath); + } return activePath; }, }, @@ -112,10 +118,15 @@ export default { }, // 菜单选择事件 handleSelect(key, keyPath) { + this.currentIndex = key; if (key.indexOf("http://") !== -1 || key.indexOf("https://") !== -1) { // http(s):// 路径新窗口打开 window.open(key, "_blank"); + } else if (key.indexOf("/redirect") !== -1) { + // /redirect 路径内部打开 + this.$router.push({ path: key.replace("/redirect", "") }); } else { + // 显示左侧联动菜单 this.activeRoutes(key); } }, @@ -129,7 +140,10 @@ export default { } }); } - this.$store.commit("SET_SIDEBAR_ROUTERS", routes); + if(routes.length > 0) { + this.$store.commit("SET_SIDEBAR_ROUTERS", routes); + } + return routes; } }, };