兼容顶部栏一级菜单内部跳转
This commit is contained in:
		| @@ -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; | ||||
|     } | ||||
|   }, | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user