feige
2024-02-20 b9f97457e9d8e8a0f784c25b103697fca8fea2e4
1
{"remainingRequest":"C:\\Users\\feige\\Desktop\\RuoYi-Vue-master\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\feige\\Desktop\\RuoYi-Vue-master\\RuoYi-Vue-master\\ruoyi-ui\\src\\components\\TopNav\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"C:\\Users\\feige\\Desktop\\RuoYi-Vue-master\\RuoYi-Vue-master\\ruoyi-ui\\src\\components\\TopNav\\index.vue","mtime":1676881540000},{"path":"C:\\Users\\feige\\Desktop\\RuoYi-Vue-master\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\feige\\Desktop\\RuoYi-Vue-master\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"C:\\Users\\feige\\Desktop\\RuoYi-Vue-master\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\feige\\Desktop\\RuoYi-Vue-master\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IGNvbnN0YW50Um91dGVzIH0gZnJvbSAiQC9yb3V0ZXIiOwoKLy8g6ZqQ6JeP5L6n6L655qCP6Lev55SxCmNvbnN0IGhpZGVMaXN0ID0gWycvaW5kZXgnLCAnL3VzZXIvcHJvZmlsZSddOwoKZXhwb3J0IGRlZmF1bHQgewogIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICAvLyDpobbpg6jmoI/liJ3lp4vmlbAKICAgICAgdmlzaWJsZU51bWJlcjogNSwKICAgICAgLy8g5b2T5YmN5r+A5rS76I+c5Y2V55qEIGluZGV4CiAgICAgIGN1cnJlbnRJbmRleDogdW5kZWZpbmVkCiAgICB9OwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIHRoZW1lKCkgewogICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuc2V0dGluZ3MudGhlbWU7CiAgICB9LAogICAgLy8g6aG26YOo5pi+56S66I+c5Y2VCiAgICB0b3BNZW51cygpIHsKICAgICAgbGV0IHRvcE1lbnVzID0gW107CiAgICAgIHRoaXMucm91dGVycy5tYXAoKG1lbnUpID0+IHsKICAgICAgICBpZiAobWVudS5oaWRkZW4gIT09IHRydWUpIHsKICAgICAgICAgIC8vIOWFvOWuuemhtumDqOagj+S4gOe6p+iPnOWNleWGhemDqOi3s+i9rAogICAgICAgICAgaWYgKG1lbnUucGF0aCA9PT0gIi8iKSB7CiAgICAgICAgICAgICAgdG9wTWVudXMucHVzaChtZW51LmNoaWxkcmVuWzBdKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdG9wTWVudXMucHVzaChtZW51KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgICByZXR1cm4gdG9wTWVudXM7CiAgICB9LAogICAgLy8g5omA5pyJ55qE6Lev55Sx5L+h5oGvCiAgICByb3V0ZXJzKCkgewogICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUucGVybWlzc2lvbi50b3BiYXJSb3V0ZXJzOwogICAgfSwKICAgIC8vIOiuvue9ruWtkOi3r+eUsQogICAgY2hpbGRyZW5NZW51cygpIHsKICAgICAgdmFyIGNoaWxkcmVuTWVudXMgPSBbXTsKICAgICAgdGhpcy5yb3V0ZXJzLm1hcCgocm91dGVyKSA9PiB7CiAgICAgICAgZm9yICh2YXIgaXRlbSBpbiByb3V0ZXIuY2hpbGRyZW4pIHsKICAgICAgICAgIGlmIChyb3V0ZXIuY2hpbGRyZW5baXRlbV0ucGFyZW50UGF0aCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGlmKHJvdXRlci5wYXRoID09PSAiLyIpIHsKICAgICAgICAgICAgICByb3V0ZXIuY2hpbGRyZW5baXRlbV0ucGF0aCA9ICIvIiArIHJvdXRlci5jaGlsZHJlbltpdGVtXS5wYXRoOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGlmKCF0aGlzLmlzaHR0cChyb3V0ZXIuY2hpbGRyZW5baXRlbV0ucGF0aCkpIHsKICAgICAgICAgICAgICAgIHJvdXRlci5jaGlsZHJlbltpdGVtXS5wYXRoID0gcm91dGVyLnBhdGggKyAiLyIgKyByb3V0ZXIuY2hpbGRyZW5baXRlbV0ucGF0aDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcm91dGVyLmNoaWxkcmVuW2l0ZW1dLnBhcmVudFBhdGggPSByb3V0ZXIucGF0aDsKICAgICAgICAgIH0KICAgICAgICAgIGNoaWxkcmVuTWVudXMucHVzaChyb3V0ZXIuY2hpbGRyZW5baXRlbV0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHJldHVybiBjb25zdGFudFJvdXRlcy5jb25jYXQoY2hpbGRyZW5NZW51cyk7CiAgICB9LAogICAgLy8g6buY6K6k5r+A5rS755qE6I+c5Y2VCiAgICBhY3RpdmVNZW51KCkgewogICAgICBjb25zdCBwYXRoID0gdGhpcy4kcm91dGUucGF0aDsKICAgICAgbGV0IGFjdGl2ZVBhdGggPSBwYXRoOwogICAgICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkICYmIHBhdGgubGFzdEluZGV4T2YoIi8iKSA+IDAgJiYgaGlkZUxpc3QuaW5kZXhPZihwYXRoKSA9PT0gLTEpIHsKICAgICAgICBjb25zdCB0bXBQYXRoID0gcGF0aC5zdWJzdHJpbmcoMSwgcGF0aC5sZW5ndGgpOwogICAgICAgIGFjdGl2ZVBhdGggPSAiLyIgKyB0bXBQYXRoLnN1YnN0cmluZygwLCB0bXBQYXRoLmluZGV4T2YoIi8iKSk7CiAgICAgICAgaWYgKCF0aGlzLiRyb3V0ZS5tZXRhLmxpbmspIHsKICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhcHAvdG9nZ2xlU2lkZUJhckhpZGUnLCBmYWxzZSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYoIXRoaXMuJHJvdXRlLmNoaWxkcmVuKSB7CiAgICAgICAgYWN0aXZlUGF0aCA9IHBhdGg7CiAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FwcC90b2dnbGVTaWRlQmFySGlkZScsIHRydWUpOwogICAgICB9CiAgICAgIHRoaXMuYWN0aXZlUm91dGVzKGFjdGl2ZVBhdGgpOwogICAgICByZXR1cm4gYWN0aXZlUGF0aDsKICAgIH0sCiAgfSwKICBiZWZvcmVNb3VudCgpIHsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnNldFZpc2libGVOdW1iZXIpCiAgfSwKICBiZWZvcmVEZXN0cm95KCkgewogICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuc2V0VmlzaWJsZU51bWJlcikKICB9LAogIG1vdW50ZWQoKSB7CiAgICB0aGlzLnNldFZpc2libGVOdW1iZXIoKTsKICB9LAogIG1ldGhvZHM6IHsKICAgIC8vIOagueaNruWuveW6puiuoeeul+iuvue9ruaYvuekuuagj+aVsAogICAgc2V0VmlzaWJsZU51bWJlcigpIHsKICAgICAgY29uc3Qgd2lkdGggPSBkb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gMzsKICAgICAgdGhpcy52aXNpYmxlTnVtYmVyID0gcGFyc2VJbnQod2lkdGggLyA4NSk7CiAgICB9LAogICAgLy8g6I+c5Y2V6YCJ5oup5LqL5Lu2CiAgICBoYW5kbGVTZWxlY3Qoa2V5LCBrZXlQYXRoKSB7CiAgICAgIHRoaXMuY3VycmVudEluZGV4ID0ga2V5OwogICAgICBjb25zdCByb3V0ZSA9IHRoaXMucm91dGVycy5maW5kKGl0ZW0gPT4gaXRlbS5wYXRoID09PSBrZXkpOwogICAgICBpZiAodGhpcy5pc2h0dHAoa2V5KSkgewogICAgICAgIC8vIGh0dHAocyk6Ly8g6Lev5b6E5paw56qX5Y+j5omT5byACiAgICAgICAgd2luZG93Lm9wZW4oa2V5LCAiX2JsYW5rIik7CiAgICAgIH0gZWxzZSBpZiAoIXJvdXRlIHx8ICFyb3V0ZS5jaGlsZHJlbikgewogICAgICAgIC8vIOayoeacieWtkOi3r+eUsei3r+W+hOWGhemDqOaJk+W8gAogICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHsgcGF0aDoga2V5IH0pOwogICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhcHAvdG9nZ2xlU2lkZUJhckhpZGUnLCB0cnVlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyDmmL7npLrlt6bkvqfogZTliqjoj5zljZUKICAgICAgICB0aGlzLmFjdGl2ZVJvdXRlcyhrZXkpOwogICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhcHAvdG9nZ2xlU2lkZUJhckhpZGUnLCBmYWxzZSk7CiAgICAgIH0KICAgIH0sCiAgICAvLyDlvZPliY3mv4DmtLvnmoTot6/nlLEKICAgIGFjdGl2ZVJvdXRlcyhrZXkpIHsKICAgICAgdmFyIHJvdXRlcyA9IFtdOwogICAgICBpZiAodGhpcy5jaGlsZHJlbk1lbnVzICYmIHRoaXMuY2hpbGRyZW5NZW51cy5sZW5ndGggPiAwKSB7CiAgICAgICAgdGhpcy5jaGlsZHJlbk1lbnVzLm1hcCgoaXRlbSkgPT4gewogICAgICAgICAgaWYgKGtleSA9PSBpdGVtLnBhcmVudFBhdGggfHwgKGtleSA9PSAiaW5kZXgiICYmICIiID09IGl0ZW0ucGF0aCkpIHsKICAgICAgICAgICAgcm91dGVzLnB1c2goaXRlbSk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgaWYocm91dGVzLmxlbmd0aCA+IDApIHsKICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoIlNFVF9TSURFQkFSX1JPVVRFUlMiLCByb3V0ZXMpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhcHAvdG9nZ2xlU2lkZUJhckhpZGUnLCB0cnVlKTsKICAgICAgfQogICAgfSwKICAgIGlzaHR0cCh1cmwpIHsKICAgICAgcmV0dXJuIHVybC5pbmRleE9mKCdodHRwOi8vJykgIT09IC0xIHx8IHVybC5pbmRleE9mKCdodHRwczovLycpICE9PSAtMQogICAgfQogIH0sCn07Cg=="},{"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>\n  <el-menu\n    :default-active=\"activeMenu\"\n    mode=\"horizontal\"\n    @select=\"handleSelect\"\n  >\n    <template v-for=\"(item, index) in topMenus\">\n      <el-menu-item :style=\"{'--theme': theme}\" :index=\"item.path\" :key=\"index\" v-if=\"index < visibleNumber\"\n        ><svg-icon :icon-class=\"item.meta.icon\" />\n        {{ item.meta.title }}</el-menu-item\n      >\n    </template>\n\n    <!-- 顶部菜单超出数量折叠 -->\n    <el-submenu :style=\"{'--theme': theme}\" index=\"more\" v-if=\"topMenus.length > visibleNumber\">\n      <template slot=\"title\">更多菜单</template>\n      <template v-for=\"(item, index) in topMenus\">\n        <el-menu-item\n          :index=\"item.path\"\n          :key=\"index\"\n          v-if=\"index >= visibleNumber\"\n          ><svg-icon :icon-class=\"item.meta.icon\" />\n          {{ item.meta.title }}</el-menu-item\n        >\n      </template>\n    </el-submenu>\n  </el-menu>\n</template>\n\n<script>\nimport { constantRoutes } from \"@/router\";\n\n// 隐藏侧边栏路由\nconst hideList = ['/index', '/user/profile'];\n\nexport default {\n  data() {\n    return {\n      // 顶部栏初始数\n      visibleNumber: 5,\n      // 当前激活菜单的 index\n      currentIndex: undefined\n    };\n  },\n  computed: {\n    theme() {\n      return this.$store.state.settings.theme;\n    },\n    // 顶部显示菜单\n    topMenus() {\n      let topMenus = [];\n      this.routers.map((menu) => {\n        if (menu.hidden !== true) {\n          // 兼容顶部栏一级菜单内部跳转\n          if (menu.path === \"/\") {\n              topMenus.push(menu.children[0]);\n          } else {\n              topMenus.push(menu);\n          }\n        }\n      });\n      return topMenus;\n    },\n    // 所有的路由信息\n    routers() {\n      return this.$store.state.permission.topbarRouters;\n    },\n    // 设置子路由\n    childrenMenus() {\n      var childrenMenus = [];\n      this.routers.map((router) => {\n        for (var item in router.children) {\n          if (router.children[item].parentPath === undefined) {\n            if(router.path === \"/\") {\n              router.children[item].path = \"/\" + router.children[item].path;\n            } else {\n              if(!this.ishttp(router.children[item].path)) {\n                router.children[item].path = router.path + \"/\" + router.children[item].path;\n              }\n            }\n            router.children[item].parentPath = router.path;\n          }\n          childrenMenus.push(router.children[item]);\n        }\n      });\n      return constantRoutes.concat(childrenMenus);\n    },\n    // 默认激活的菜单\n    activeMenu() {\n      const path = this.$route.path;\n      let activePath = path;\n      if (path !== undefined && path.lastIndexOf(\"/\") > 0 && hideList.indexOf(path) === -1) {\n        const tmpPath = path.substring(1, path.length);\n        activePath = \"/\" + tmpPath.substring(0, tmpPath.indexOf(\"/\"));\n        if (!this.$route.meta.link) {\n          this.$store.dispatch('app/toggleSideBarHide', false);\n        }\n      } else if(!this.$route.children) {\n        activePath = path;\n        this.$store.dispatch('app/toggleSideBarHide', true);\n      }\n      this.activeRoutes(activePath);\n      return activePath;\n    },\n  },\n  beforeMount() {\n    window.addEventListener('resize', this.setVisibleNumber)\n  },\n  beforeDestroy() {\n    window.removeEventListener('resize', this.setVisibleNumber)\n  },\n  mounted() {\n    this.setVisibleNumber();\n  },\n  methods: {\n    // 根据宽度计算设置显示栏数\n    setVisibleNumber() {\n      const width = document.body.getBoundingClientRect().width / 3;\n      this.visibleNumber = parseInt(width / 85);\n    },\n    // 菜单选择事件\n    handleSelect(key, keyPath) {\n      this.currentIndex = key;\n      const route = this.routers.find(item => item.path === key);\n      if (this.ishttp(key)) {\n        // http(s):// 路径新窗口打开\n        window.open(key, \"_blank\");\n      } else if (!route || !route.children) {\n        // 没有子路由路径内部打开\n        this.$router.push({ path: key });\n        this.$store.dispatch('app/toggleSideBarHide', true);\n      } else {\n        // 显示左侧联动菜单\n        this.activeRoutes(key);\n        this.$store.dispatch('app/toggleSideBarHide', false);\n      }\n    },\n    // 当前激活的路由\n    activeRoutes(key) {\n      var routes = [];\n      if (this.childrenMenus && this.childrenMenus.length > 0) {\n        this.childrenMenus.map((item) => {\n          if (key == item.parentPath || (key == \"index\" && \"\" == item.path)) {\n            routes.push(item);\n          }\n        });\n      }\n      if(routes.length > 0) {\n        this.$store.commit(\"SET_SIDEBAR_ROUTERS\", routes);\n      } else {\n        this.$store.dispatch('app/toggleSideBarHide', true);\n      }\n    },\n    ishttp(url) {\n      return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1\n    }\n  },\n};\n</script>\n\n<style lang=\"scss\">\n.topmenu-container.el-menu--horizontal > .el-menu-item {\n  float: left;\n  height: 50px !important;\n  line-height: 50px !important;\n  color: #999093 !important;\n  padding: 0 5px !important;\n  margin: 0 10px !important;\n}\n\n.topmenu-container.el-menu--horizontal > .el-menu-item.is-active, .el-menu--horizontal > .el-submenu.is-active .el-submenu__title {\n  border-bottom: 2px solid #{'var(--theme)'} !important;\n  color: #303133;\n}\n\n/* submenu item */\n.topmenu-container.el-menu--horizontal > .el-submenu .el-submenu__title {\n  float: left;\n  height: 50px !important;\n  line-height: 50px !important;\n  color: #999093 !important;\n  padding: 0 5px !important;\n  margin: 0 10px !important;\n}\n</style>\n"]}]}