| 1 | {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\src\\components\\TopNav\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\src\\components\\TopNav\\index.vue","mtime":1647228900599},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"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"]}]}
 |