1 |
- {"remainingRequest":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\test\\ssi-satoken\\ui\\src\\components\\TopNav\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\test\\ssi-satoken\\ui\\src\\components\\TopNav\\index.vue","mtime":1696909835000},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1697005523218},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1697005524089}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBjb25zdGFudFJvdXRlcyB9IGZyb20gIkAvcm91dGVyIjsNCg0KLy8g6ZqQ6JeP5L6n6L655qCP6Lev55SxDQpjb25zdCBoaWRlTGlzdCA9IFsnL2luZGV4JywgJy91c2VyL3Byb2ZpbGUnXTsNCg0KZXhwb3J0IGRlZmF1bHQgew0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICAvLyDpobbpg6jmoI/liJ3lp4vmlbANCiAgICAgIHZpc2libGVOdW1iZXI6IDUsDQogICAgICAvLyDlvZPliY3mv4DmtLvoj5zljZXnmoQgaW5kZXgNCiAgICAgIGN1cnJlbnRJbmRleDogdW5kZWZpbmVkDQogICAgfTsNCiAgfSwNCiAgY29tcHV0ZWQ6IHsNCiAgICB0aGVtZSgpIHsNCiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5zZXR0aW5ncy50aGVtZTsNCiAgICB9LA0KICAgIC8vIOmhtumDqOaYvuekuuiPnOWNlQ0KICAgIHRvcE1lbnVzKCkgew0KICAgICAgbGV0IHRvcE1lbnVzID0gW107DQogICAgICB0aGlzLnJvdXRlcnMubWFwKChtZW51KSA9PiB7DQogICAgICAgIGlmIChtZW51LmhpZGRlbiAhPT0gdHJ1ZSkgew0KICAgICAgICAgIC8vIOWFvOWuuemhtumDqOagj+S4gOe6p+iPnOWNleWGhemDqOi3s+i9rA0KICAgICAgICAgIGlmIChtZW51LnBhdGggPT09ICIvIikgew0KICAgICAgICAgICAgICB0b3BNZW51cy5wdXNoKG1lbnUuY2hpbGRyZW5bMF0pOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIHRvcE1lbnVzLnB1c2gobWVudSk7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9KTsNCiAgICAgIHJldHVybiB0b3BNZW51czsNCiAgICB9LA0KICAgIC8vIOaJgOacieeahOi3r+eUseS/oeaBrw0KICAgIHJvdXRlcnMoKSB7DQogICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUucGVybWlzc2lvbi50b3BiYXJSb3V0ZXJzOw0KICAgIH0sDQogICAgLy8g6K6+572u5a2Q6Lev55SxDQogICAgY2hpbGRyZW5NZW51cygpIHsNCiAgICAgIHZhciBjaGlsZHJlbk1lbnVzID0gW107DQogICAgICB0aGlzLnJvdXRlcnMubWFwKChyb3V0ZXIpID0+IHsNCiAgICAgICAgZm9yICh2YXIgaXRlbSBpbiByb3V0ZXIuY2hpbGRyZW4pIHsNCiAgICAgICAgICBpZiAocm91dGVyLmNoaWxkcmVuW2l0ZW1dLnBhcmVudFBhdGggPT09IHVuZGVmaW5lZCkgew0KICAgICAgICAgICAgaWYocm91dGVyLnBhdGggPT09ICIvIikgew0KICAgICAgICAgICAgICByb3V0ZXIuY2hpbGRyZW5baXRlbV0ucGF0aCA9ICIvIiArIHJvdXRlci5jaGlsZHJlbltpdGVtXS5wYXRoOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgaWYoIXRoaXMuaXNodHRwKHJvdXRlci5jaGlsZHJlbltpdGVtXS5wYXRoKSkgew0KICAgICAgICAgICAgICAgIHJvdXRlci5jaGlsZHJlbltpdGVtXS5wYXRoID0gcm91dGVyLnBhdGggKyAiLyIgKyByb3V0ZXIuY2hpbGRyZW5baXRlbV0ucGF0aDsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcm91dGVyLmNoaWxkcmVuW2l0ZW1dLnBhcmVudFBhdGggPSByb3V0ZXIucGF0aDsNCiAgICAgICAgICB9DQogICAgICAgICAgY2hpbGRyZW5NZW51cy5wdXNoKHJvdXRlci5jaGlsZHJlbltpdGVtXSk7DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgICAgcmV0dXJuIGNvbnN0YW50Um91dGVzLmNvbmNhdChjaGlsZHJlbk1lbnVzKTsNCiAgICB9LA0KICAgIC8vIOm7mOiupOa/gOa0u+eahOiPnOWNlQ0KICAgIGFjdGl2ZU1lbnUoKSB7DQogICAgICBjb25zdCBwYXRoID0gdGhpcy4kcm91dGUucGF0aDsNCiAgICAgIGxldCBhY3RpdmVQYXRoID0gcGF0aDsNCiAgICAgIGlmIChwYXRoICE9PSB1bmRlZmluZWQgJiYgcGF0aC5sYXN0SW5kZXhPZigiLyIpID4gMCAmJiBoaWRlTGlzdC5pbmRleE9mKHBhdGgpID09PSAtMSkgew0KICAgICAgICBjb25zdCB0bXBQYXRoID0gcGF0aC5zdWJzdHJpbmcoMSwgcGF0aC5sZW5ndGgpOw0KICAgICAgICBhY3RpdmVQYXRoID0gIi8iICsgdG1wUGF0aC5zdWJzdHJpbmcoMCwgdG1wUGF0aC5pbmRleE9mKCIvIikpOw0KICAgICAgICBpZiAoIXRoaXMuJHJvdXRlLm1ldGEubGluaykgew0KICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhcHAvdG9nZ2xlU2lkZUJhckhpZGUnLCBmYWxzZSk7DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSBpZighdGhpcy4kcm91dGUuY2hpbGRyZW4pIHsNCiAgICAgICAgYWN0aXZlUGF0aCA9IHBhdGg7DQogICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhcHAvdG9nZ2xlU2lkZUJhckhpZGUnLCB0cnVlKTsNCiAgICAgIH0NCiAgICAgIHRoaXMuYWN0aXZlUm91dGVzKGFjdGl2ZVBhdGgpOw0KICAgICAgcmV0dXJuIGFjdGl2ZVBhdGg7DQogICAgfSwNCiAgfSwNCiAgYmVmb3JlTW91bnQoKSB7DQogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuc2V0VmlzaWJsZU51bWJlcikNCiAgfSwNCiAgYmVmb3JlRGVzdHJveSgpIHsNCiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5zZXRWaXNpYmxlTnVtYmVyKQ0KICB9LA0KICBtb3VudGVkKCkgew0KICAgIHRoaXMuc2V0VmlzaWJsZU51bWJlcigpOw0KICB9LA0KICBtZXRob2RzOiB7DQogICAgLy8g5qC55o2u5a695bqm6K6h566X6K6+572u5pi+56S65qCP5pWwDQogICAgc2V0VmlzaWJsZU51bWJlcigpIHsNCiAgICAgIGNvbnN0IHdpZHRoID0gZG9jdW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAvIDM7DQogICAgICB0aGlzLnZpc2libGVOdW1iZXIgPSBwYXJzZUludCh3aWR0aCAvIDg1KTsNCiAgICB9LA0KICAgIC8vIOiPnOWNlemAieaLqeS6i+S7tg0KICAgIGhhbmRsZVNlbGVjdChrZXksIGtleVBhdGgpIHsNCiAgICAgIHRoaXMuY3VycmVudEluZGV4ID0ga2V5Ow0KICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLnJvdXRlcnMuZmluZChpdGVtID0+IGl0ZW0ucGF0aCA9PT0ga2V5KTsNCiAgICAgIGlmICh0aGlzLmlzaHR0cChrZXkpKSB7DQogICAgICAgIC8vIGh0dHAocyk6Ly8g6Lev5b6E5paw56qX5Y+j5omT5byADQogICAgICAgIHdpbmRvdy5vcGVuKGtleSwgIl9ibGFuayIpOw0KICAgICAgfSBlbHNlIGlmICghcm91dGUgfHwgIXJvdXRlLmNoaWxkcmVuKSB7DQogICAgICAgIC8vIOayoeacieWtkOi3r+eUsei3r+W+hOWGhemDqOaJk+W8gA0KICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7IHBhdGg6IGtleSB9KTsNCiAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FwcC90b2dnbGVTaWRlQmFySGlkZScsIHRydWUpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgLy8g5pi+56S65bem5L6n6IGU5Yqo6I+c5Y2VDQogICAgICAgIHRoaXMuYWN0aXZlUm91dGVzKGtleSk7DQogICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhcHAvdG9nZ2xlU2lkZUJhckhpZGUnLCBmYWxzZSk7DQogICAgICB9DQogICAgfSwNCiAgICAvLyDlvZPliY3mv4DmtLvnmoTot6/nlLENCiAgICBhY3RpdmVSb3V0ZXMoa2V5KSB7DQogICAgICB2YXIgcm91dGVzID0gW107DQogICAgICBpZiAodGhpcy5jaGlsZHJlbk1lbnVzICYmIHRoaXMuY2hpbGRyZW5NZW51cy5sZW5ndGggPiAwKSB7DQogICAgICAgIHRoaXMuY2hpbGRyZW5NZW51cy5tYXAoKGl0ZW0pID0+IHsNCiAgICAgICAgICBpZiAoa2V5ID09IGl0ZW0ucGFyZW50UGF0aCB8fCAoa2V5ID09ICJpbmRleCIgJiYgIiIgPT0gaXRlbS5wYXRoKSkgew0KICAgICAgICAgICAgcm91dGVzLnB1c2goaXRlbSk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICAgIH0NCiAgICAgIGlmKHJvdXRlcy5sZW5ndGggPiAwKSB7DQogICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgiU0VUX1NJREVCQVJfUk9VVEVSUyIsIHJvdXRlcyk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYXBwL3RvZ2dsZVNpZGVCYXJIaWRlJywgdHJ1ZSk7DQogICAgICB9DQogICAgfSwNCiAgICBpc2h0dHAodXJsKSB7DQogICAgICByZXR1cm4gdXJsLmluZGV4T2YoJ2h0dHA6Ly8nKSAhPT0gLTEgfHwgdXJsLmluZGV4T2YoJ2h0dHBzOi8vJykgIT09IC0xDQogICAgfQ0KICB9LA0KfTsNCg=="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/components/TopNav","sourcesContent":["<template>\r\n <el-menu\r\n :default-active=\"activeMenu\"\r\n mode=\"horizontal\"\r\n @select=\"handleSelect\"\r\n >\r\n <template v-for=\"(item, index) in topMenus\">\r\n <el-menu-item :style=\"{'--theme': theme}\" :index=\"item.path\" :key=\"index\" v-if=\"index < visibleNumber\"\r\n ><svg-icon :icon-class=\"item.meta.icon\" />\r\n {{ item.meta.title }}</el-menu-item\r\n >\r\n </template>\r\n\r\n <!-- 顶部菜单超出数量折叠 -->\r\n <el-submenu :style=\"{'--theme': theme}\" index=\"more\" v-if=\"topMenus.length > visibleNumber\">\r\n <template slot=\"title\">更多菜单</template>\r\n <template v-for=\"(item, index) in topMenus\">\r\n <el-menu-item\r\n :index=\"item.path\"\r\n :key=\"index\"\r\n v-if=\"index >= visibleNumber\"\r\n ><svg-icon :icon-class=\"item.meta.icon\" />\r\n {{ item.meta.title }}</el-menu-item\r\n >\r\n </template>\r\n </el-submenu>\r\n </el-menu>\r\n</template>\r\n\r\n<script>\r\nimport { constantRoutes } from \"@/router\";\r\n\r\n// 隐藏侧边栏路由\r\nconst hideList = ['/index', '/user/profile'];\r\n\r\nexport default {\r\n data() {\r\n return {\r\n // 顶部栏初始数\r\n visibleNumber: 5,\r\n // 当前激活菜单的 index\r\n currentIndex: undefined\r\n };\r\n },\r\n computed: {\r\n theme() {\r\n return this.$store.state.settings.theme;\r\n },\r\n // 顶部显示菜单\r\n topMenus() {\r\n let topMenus = [];\r\n this.routers.map((menu) => {\r\n if (menu.hidden !== true) {\r\n // 兼容顶部栏一级菜单内部跳转\r\n if (menu.path === \"/\") {\r\n topMenus.push(menu.children[0]);\r\n } else {\r\n topMenus.push(menu);\r\n }\r\n }\r\n });\r\n return topMenus;\r\n },\r\n // 所有的路由信息\r\n routers() {\r\n return this.$store.state.permission.topbarRouters;\r\n },\r\n // 设置子路由\r\n childrenMenus() {\r\n var childrenMenus = [];\r\n this.routers.map((router) => {\r\n for (var item in router.children) {\r\n if (router.children[item].parentPath === undefined) {\r\n if(router.path === \"/\") {\r\n router.children[item].path = \"/\" + router.children[item].path;\r\n } else {\r\n if(!this.ishttp(router.children[item].path)) {\r\n router.children[item].path = router.path + \"/\" + router.children[item].path;\r\n }\r\n }\r\n router.children[item].parentPath = router.path;\r\n }\r\n childrenMenus.push(router.children[item]);\r\n }\r\n });\r\n return constantRoutes.concat(childrenMenus);\r\n },\r\n // 默认激活的菜单\r\n activeMenu() {\r\n const path = this.$route.path;\r\n let activePath = path;\r\n if (path !== undefined && path.lastIndexOf(\"/\") > 0 && hideList.indexOf(path) === -1) {\r\n const tmpPath = path.substring(1, path.length);\r\n activePath = \"/\" + tmpPath.substring(0, tmpPath.indexOf(\"/\"));\r\n if (!this.$route.meta.link) {\r\n this.$store.dispatch('app/toggleSideBarHide', false);\r\n }\r\n } else if(!this.$route.children) {\r\n activePath = path;\r\n this.$store.dispatch('app/toggleSideBarHide', true);\r\n }\r\n this.activeRoutes(activePath);\r\n return activePath;\r\n },\r\n },\r\n beforeMount() {\r\n window.addEventListener('resize', this.setVisibleNumber)\r\n },\r\n beforeDestroy() {\r\n window.removeEventListener('resize', this.setVisibleNumber)\r\n },\r\n mounted() {\r\n this.setVisibleNumber();\r\n },\r\n methods: {\r\n // 根据宽度计算设置显示栏数\r\n setVisibleNumber() {\r\n const width = document.body.getBoundingClientRect().width / 3;\r\n this.visibleNumber = parseInt(width / 85);\r\n },\r\n // 菜单选择事件\r\n handleSelect(key, keyPath) {\r\n this.currentIndex = key;\r\n const route = this.routers.find(item => item.path === key);\r\n if (this.ishttp(key)) {\r\n // http(s):// 路径新窗口打开\r\n window.open(key, \"_blank\");\r\n } else if (!route || !route.children) {\r\n // 没有子路由路径内部打开\r\n this.$router.push({ path: key });\r\n this.$store.dispatch('app/toggleSideBarHide', true);\r\n } else {\r\n // 显示左侧联动菜单\r\n this.activeRoutes(key);\r\n this.$store.dispatch('app/toggleSideBarHide', false);\r\n }\r\n },\r\n // 当前激活的路由\r\n activeRoutes(key) {\r\n var routes = [];\r\n if (this.childrenMenus && this.childrenMenus.length > 0) {\r\n this.childrenMenus.map((item) => {\r\n if (key == item.parentPath || (key == \"index\" && \"\" == item.path)) {\r\n routes.push(item);\r\n }\r\n });\r\n }\r\n if(routes.length > 0) {\r\n this.$store.commit(\"SET_SIDEBAR_ROUTERS\", routes);\r\n } else {\r\n this.$store.dispatch('app/toggleSideBarHide', true);\r\n }\r\n },\r\n ishttp(url) {\r\n return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1\r\n }\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n.topmenu-container.el-menu--horizontal > .el-menu-item {\r\n float: left;\r\n height: 50px !important;\r\n line-height: 50px !important;\r\n color: #999093 !important;\r\n padding: 0 5px !important;\r\n margin: 0 10px !important;\r\n}\r\n\r\n.topmenu-container.el-menu--horizontal > .el-menu-item.is-active, .el-menu--horizontal > .el-submenu.is-active .el-submenu__title {\r\n border-bottom: 2px solid #{'var(--theme)'} !important;\r\n color: #303133;\r\n}\r\n\r\n/* submenu item */\r\n.topmenu-container.el-menu--horizontal > .el-submenu .el-submenu__title {\r\n float: left;\r\n height: 50px !important;\r\n line-height: 50px !important;\r\n color: #999093 !important;\r\n padding: 0 5px !important;\r\n margin: 0 10px !important;\r\n}\r\n</style>\r\n"]}]}
|