From e60a69b670dd64ee4ae0d6267880010d396a208e Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期日, 18 四月 2021 18:33:13 +0800 Subject: [PATCH] 兼容顶部栏一级菜单内部跳转 --- ruoyi-ui/src/components/TopNav/index.vue | 40 +++++++++++++++++++++++++++------------- 1 files changed, 27 insertions(+), 13 deletions(-) diff --git a/ruoyi-ui/src/components/TopNav/index.vue b/ruoyi-ui/src/components/TopNav/index.vue index 3eebda4..c5e0e01 100644 --- a/ruoyi-ui/src/components/TopNav/index.vue +++ b/ruoyi-ui/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 @@ visibleNumber: 5, // 是否为首次加载 isFrist: false, + // 当前激活菜单的 index + currentIndex: undefined }; }, computed: { @@ -48,7 +47,12 @@ 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 @@ 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 @@ 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 @@ 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 @@ }, // 菜单选择事件 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 @@ } }); } - this.$store.commit("SET_SIDEBAR_ROUTERS", routes); + if(routes.length > 0) { + this.$store.commit("SET_SIDEBAR_ROUTERS", routes); + } + return routes; } }, }; -- Gitblit v1.9.2