03dee4d369a47c7622ec9ea7f3e7c19d.json 13 KB

1
  1. {"remainingRequest":"D:\\Desktop\\supervision-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\Desktop\\supervision-ui\\src\\components\\TopNav\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\Desktop\\supervision-ui\\src\\components\\TopNav\\index.vue","mtime":1647101026772},{"path":"D:\\Desktop\\supervision-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1647101096564},{"path":"D:\\Desktop\\supervision-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1647101099358},{"path":"D:\\Desktop\\supervision-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1647101096564},{"path":"D:\\Desktop\\supervision-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1647222689264}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBjb25zdGFudFJvdXRlcyB9IGZyb20gIkAvcm91dGVyIjsNCg0KZXhwb3J0IGRlZmF1bHQgew0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICAvLyDpobbpg6jmoI/liJ3lp4vmlbANCiAgICAgIHZpc2libGVOdW1iZXI6IDUsDQogICAgICAvLyDmmK/lkKbkuLrpppbmrKHliqDovb0NCiAgICAgIGlzRnJpc3Q6IGZhbHNlLA0KICAgICAgLy8g5b2T5YmN5r+A5rS76I+c5Y2V55qEIGluZGV4DQogICAgICBjdXJyZW50SW5kZXg6IHVuZGVmaW5lZA0KICAgIH07DQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgdGhlbWUoKSB7DQogICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuc2V0dGluZ3MudGhlbWU7DQogICAgfSwNCiAgICAvLyDpobbpg6jmmL7npLroj5zljZUNCiAgICB0b3BNZW51cygpIHsNCiAgICAgIGxldCB0b3BNZW51cyA9IFtdOw0KICAgICAgdGhpcy5yb3V0ZXJzLm1hcCgobWVudSkgPT4gew0KICAgICAgICBpZiAobWVudS5oaWRkZW4gIT09IHRydWUpIHsNCiAgICAgICAgICAvLyDlhbzlrrnpobbpg6jmoI/kuIDnuqfoj5zljZXlhoXpg6jot7PovawNCiAgICAgICAgICBpZiAobWVudS5wYXRoID09PSAiLyIpIHsNCiAgICAgICAgICAgICAgdG9wTWVudXMucHVzaChtZW51LmNoaWxkcmVuWzBdKTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICB0b3BNZW51cy5wdXNoKG1lbnUpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgICByZXR1cm4gdG9wTWVudXM7DQogICAgfSwNCiAgICAvLyDmiYDmnInnmoTot6/nlLHkv6Hmga8NCiAgICByb3V0ZXJzKCkgew0KICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLnBlcm1pc3Npb24udG9wYmFyUm91dGVyczsNCiAgICB9LA0KICAgIC8vIOiuvue9ruWtkOi3r+eUsQ0KICAgIGNoaWxkcmVuTWVudXMoKSB7DQogICAgICB2YXIgY2hpbGRyZW5NZW51cyA9IFtdOw0KICAgICAgdGhpcy5yb3V0ZXJzLm1hcCgocm91dGVyKSA9PiB7DQogICAgICAgIGZvciAodmFyIGl0ZW0gaW4gcm91dGVyLmNoaWxkcmVuKSB7DQogICAgICAgICAgaWYgKHJvdXRlci5jaGlsZHJlbltpdGVtXS5wYXJlbnRQYXRoID09PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgIGlmKHJvdXRlci5wYXRoID09PSAiLyIpIHsNCiAgICAgICAgICAgICAgcm91dGVyLmNoaWxkcmVuW2l0ZW1dLnBhdGggPSAiL3JlZGlyZWN0LyIgKyByb3V0ZXIuY2hpbGRyZW5baXRlbV0ucGF0aDsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIGlmKCF0aGlzLmlzaHR0cChyb3V0ZXIuY2hpbGRyZW5baXRlbV0ucGF0aCkpIHsNCiAgICAgICAgICAgICAgICByb3V0ZXIuY2hpbGRyZW5baXRlbV0ucGF0aCA9IHJvdXRlci5wYXRoICsgIi8iICsgcm91dGVyLmNoaWxkcmVuW2l0ZW1dLnBhdGg7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJvdXRlci5jaGlsZHJlbltpdGVtXS5wYXJlbnRQYXRoID0gcm91dGVyLnBhdGg7DQogICAgICAgICAgfQ0KICAgICAgICAgIGNoaWxkcmVuTWVudXMucHVzaChyb3V0ZXIuY2hpbGRyZW5baXRlbV0pOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICAgIHJldHVybiBjb25zdGFudFJvdXRlcy5jb25jYXQoY2hpbGRyZW5NZW51cyk7DQogICAgfSwNCiAgICAvLyDpu5jorqTmv4DmtLvnmoToj5zljZUNCiAgICBhY3RpdmVNZW51KCkgew0KICAgICAgY29uc3QgcGF0aCA9IHRoaXMuJHJvdXRlLnBhdGg7DQogICAgICBsZXQgYWN0aXZlUGF0aCA9IHRoaXMuZGVmYXVsdFJvdXRlcigpOw0KICAgICAgaWYgKHBhdGgubGFzdEluZGV4T2YoIi8iKSA+IDApIHsNCiAgICAgICAgY29uc3QgdG1wUGF0aCA9IHBhdGguc3Vic3RyaW5nKDEsIHBhdGgubGVuZ3RoKTsNCiAgICAgICAgYWN0aXZlUGF0aCA9ICIvIiArIHRtcFBhdGguc3Vic3RyaW5nKDAsIHRtcFBhdGguaW5kZXhPZigiLyIpKTsNCiAgICAgIH0gZWxzZSBpZiAoIi9pbmRleCIgPT0gcGF0aCB8fCAiIiA9PSBwYXRoKSB7DQogICAgICAgIGlmICghdGhpcy5pc0ZyaXN0KSB7DQogICAgICAgICAgdGhpcy5pc0ZyaXN0ID0gdHJ1ZTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBhY3RpdmVQYXRoID0gImluZGV4IjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgdmFyIHJvdXRlcyA9IHRoaXMuYWN0aXZlUm91dGVzKGFjdGl2ZVBhdGgpOw0KICAgICAgaWYgKHJvdXRlcy5sZW5ndGggPT09IDApIHsNCiAgICAgICAgYWN0aXZlUGF0aCA9IHRoaXMuY3VycmVudEluZGV4IHx8IHRoaXMuZGVmYXVsdFJvdXRlcigpDQogICAgICAgIHRoaXMuYWN0aXZlUm91dGVzKGFjdGl2ZVBhdGgpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIGFjdGl2ZVBhdGg7DQogICAgfSwNCiAgfSwNCiAgYmVmb3JlTW91bnQoKSB7DQogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuc2V0VmlzaWJsZU51bWJlcikNCiAgfSwNCiAgYmVmb3JlRGVzdHJveSgpIHsNCiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5zZXRWaXNpYmxlTnVtYmVyKQ0KICB9LA0KICBtb3VudGVkKCkgew0KICAgIHRoaXMuc2V0VmlzaWJsZU51bWJlcigpOw0KICB9LA0KICBtZXRob2RzOiB7DQogICAgLy8g5qC55o2u5a695bqm6K6h566X6K6+572u5pi+56S65qCP5pWwDQogICAgc2V0VmlzaWJsZU51bWJlcigpIHsNCiAgICAgIGNvbnN0IHdpZHRoID0gZG9jdW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAvIDM7DQogICAgICB0aGlzLnZpc2libGVOdW1iZXIgPSBwYXJzZUludCh3aWR0aCAvIDg1KTsNCiAgICB9LA0KICAgIC8vIOm7mOiupOa/gOa0u+eahOi3r+eUsQ0KICAgIGRlZmF1bHRSb3V0ZXIoKSB7DQogICAgICBsZXQgcm91dGVyOw0KICAgICAgT2JqZWN0LmtleXModGhpcy5yb3V0ZXJzKS5zb21lKChrZXkpID0+IHsNCiAgICAgICAgaWYgKCF0aGlzLnJvdXRlcnNba2V5XS5oaWRkZW4pIHsNCiAgICAgICAgICByb3V0ZXIgPSB0aGlzLnJvdXRlcnNba2V5XS5wYXRoOw0KICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICAgIHJldHVybiByb3V0ZXI7DQogICAgfSwNCiAgICAvLyDoj5zljZXpgInmi6nkuovku7YNCiAgICBoYW5kbGVTZWxlY3Qoa2V5LCBrZXlQYXRoKSB7DQogICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGtleTsNCiAgICAgIGlmICh0aGlzLmlzaHR0cChrZXkpKSB7DQogICAgICAgIC8vIGh0dHAocyk6Ly8g6Lev5b6E5paw56qX5Y+j5omT5byADQogICAgICAgIHdpbmRvdy5vcGVuKGtleSwgIl9ibGFuayIpOw0KICAgICAgfSBlbHNlIGlmIChrZXkuaW5kZXhPZigiL3JlZGlyZWN0IikgIT09IC0xKSB7DQogICAgICAgIC8vIC9yZWRpcmVjdCDot6/lvoTlhoXpg6jmiZPlvIANCiAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goeyBwYXRoOiBrZXkucmVwbGFjZSgiL3JlZGlyZWN0IiwgIiIpIH0pOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgLy8g5pi+56S65bem5L6n6IGU5Yqo6I+c5Y2VDQogICAgICAgIHRoaXMuYWN0aXZlUm91dGVzKGtleSk7DQogICAgICB9DQogICAgfSwNCiAgICAvLyDlvZPliY3mv4DmtLvnmoTot6/nlLENCiAgICBhY3RpdmVSb3V0ZXMoa2V5KSB7DQogICAgICB2YXIgcm91dGVzID0gW107DQogICAgICBpZiAodGhpcy5jaGlsZHJlbk1lbnVzICYmIHRoaXMuY2hpbGRyZW5NZW51cy5sZW5ndGggPiAwKSB7DQogICAgICAgIHRoaXMuY2hpbGRyZW5NZW51cy5tYXAoKGl0ZW0pID0+IHsNCiAgICAgICAgICBpZiAoa2V5ID09IGl0ZW0ucGFyZW50UGF0aCB8fCAoa2V5ID09ICJpbmRleCIgJiYgIiIgPT0gaXRlbS5wYXRoKSkgew0KICAgICAgICAgICAgcm91dGVzLnB1c2goaXRlbSk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICAgIH0NCiAgICAgIGlmKHJvdXRlcy5sZW5ndGggPiAwKSB7DQogICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgiU0VUX1NJREVCQVJfUk9VVEVSUyIsIHJvdXRlcyk7DQogICAgICB9DQogICAgICByZXR1cm4gcm91dGVzOw0KICAgIH0sDQoJaXNodHRwKHVybCkgew0KICAgICAgcmV0dXJuIHVybC5pbmRleE9mKCdodHRwOi8vJykgIT09IC0xIHx8IHVybC5pbmRleE9mKCdodHRwczovLycpICE9PSAtMQ0KICAgIH0NCiAgfSwNCn07DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA;;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;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\nexport default {\r\n data() {\r\n return {\r\n // 顶部栏初始数\r\n visibleNumber: 5,\r\n // 是否为首次加载\r\n isFrist: false,\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 = \"/redirect/\" + 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 = this.defaultRouter();\r\n if (path.lastIndexOf(\"/\") > 0) {\r\n const tmpPath = path.substring(1, path.length);\r\n activePath = \"/\" + tmpPath.substring(0, tmpPath.indexOf(\"/\"));\r\n } else if (\"/index\" == path || \"\" == path) {\r\n if (!this.isFrist) {\r\n this.isFrist = true;\r\n } else {\r\n activePath = \"index\";\r\n }\r\n }\r\n var routes = this.activeRoutes(activePath);\r\n if (routes.length === 0) {\r\n activePath = this.currentIndex || this.defaultRouter()\r\n this.activeRoutes(activePath);\r\n }\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 defaultRouter() {\r\n let router;\r\n Object.keys(this.routers).some((key) => {\r\n if (!this.routers[key].hidden) {\r\n router = this.routers[key].path;\r\n return true;\r\n }\r\n });\r\n return router;\r\n },\r\n // 菜单选择事件\r\n handleSelect(key, keyPath) {\r\n this.currentIndex = key;\r\n if (this.ishttp(key)) {\r\n // http(s):// 路径新窗口打开\r\n window.open(key, \"_blank\");\r\n } else if (key.indexOf(\"/redirect\") !== -1) {\r\n // /redirect 路径内部打开\r\n this.$router.push({ path: key.replace(\"/redirect\", \"\") });\r\n } else {\r\n // 显示左侧联动菜单\r\n this.activeRoutes(key);\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 }\r\n return routes;\r\n },\r\n\tishttp(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"]}]}