| 1 |
- {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\layout\\navMenu\\horizontal.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\layout\\navMenu\\horizontal.vue","mtime":1761185180057},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQppbXBvcnQgU3ViSXRlbSBmcm9tICdAL2xheW91dC9uYXZNZW51L3N1Ykl0ZW0udnVlJzsNCmltcG9ydCB7IG1hcFN0YXRlIH0gZnJvbSAndnVleCc7DQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICduYXZNZW51SG9yaXpvbnRhbCcsDQogIGNvbXBvbmVudHM6IHsgU3ViSXRlbSB9LA0KICBwcm9wczogew0KICAgIG1lbnVMaXN0OiB7DQogICAgICB0eXBlOiBBcnJheSwNCiAgICAgIGRlZmF1bHQ6ICgpID0+IFtdLA0KICAgIH0sDQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgLi4ubWFwU3RhdGUoJ21lbnUnLCBbJ2FjdGl2ZVBhdGgnXSksDQogIH0sDQogIGRhdGEoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIGRlZmF1bHRBY3RpdmU6IG51bGwsDQogICAgfTsNCiAgfSwNCiAgbW91bnRlZCgpIHsNCiAgICB0aGlzLmluaXRFbE1lbnVPZmZzZXRMZWZ0KCk7DQogICAgdGhpcy5zZXRDdXJyZW50Um91dGVySGlnaGxpZ2h0KHRoaXMuJHJvdXRlLnBhdGgpOw0KICB9LA0KICBtZXRob2RzOiB7DQogICAgLy8g6K6+572u5qiq5ZCR5rua5Yqo5p2h5Y+v5Lul6byg5qCH5rua6L2u5rua5YqoDQogICAgb25FbE1lbnVIb3Jpem9udGFsU2Nyb2xsKGUpIHsNCiAgICAgIGNvbnN0IGV2ZW50RGVsdGEgPSBlLndoZWVsRGVsdGEgfHwgLWUuZGVsdGFZICogNDA7DQogICAgICB0aGlzLiRyZWZzLmVsTWVudUhvcml6b250YWxTY3JvbGxSZWYuJHJlZnMud3JhcC5zY3JvbGxMZWZ0ID0NCiAgICAgICAgdGhpcy4kcmVmcy5lbE1lbnVIb3Jpem9udGFsU2Nyb2xsUmVmLiRyZWZzLndyYXAuc2Nyb2xsTGVmdCArIGV2ZW50RGVsdGEgLyA0Ow0KICAgIH0sDQogICAgLy8g5Yid5aeL5YyW5pWw5o2u77yM6aG16Z2i5Yi35paw5pe277yM5rua5Yqo5p2h5rua5Yqo5Yiw5a+55bqU5L2N572uDQogICAgaW5pdEVsTWVudU9mZnNldExlZnQoKSB7DQogICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7DQogICAgICAgIGxldCBlbHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZWwtbWVudS5lbC1tZW51LS1ob3Jpem9udGFsIGxpLmlzLWFjdGl2ZScpOw0KICAgICAgICBpZiAoIWVscykgcmV0dXJuIGZhbHNlOw0KICAgICAgICB0aGlzLiRyZWZzLmVsTWVudUhvcml6b250YWxTY3JvbGxSZWYuJHJlZnMud3JhcC5zY3JvbGxMZWZ0ID0gZWxzLm9mZnNldExlZnQ7DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8vIOi3r+eUsei/h+a7pOmAkuW9kuWHveaVsA0KICAgIGZpbHRlclJvdXRlc0Z1bihhcnIpIHsNCiAgICAgIHJldHVybiBhcnINCiAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaXNIaWRlKQ0KICAgICAgICAubWFwKChpdGVtKSA9PiB7DQogICAgICAgICAgaXRlbSA9IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pOw0KICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSBpdGVtLmNoaWxkcmVuID0gdGhpcy5maWx0ZXJSb3V0ZXNGdW4oaXRlbS5jaGlsZHJlbik7DQogICAgICAgICAgcmV0dXJuIGl0ZW07DQogICAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g5Lyg6YCB5b2T5YmN5a2Q57qn5pWw5o2u5Yiw6I+c5Y2V5LitDQogICAgc2V0U2VuZENsYXNzaWNDaGlsZHJlbihwYXRoKSB7DQogICAgICBjb25zdCBjdXJyZW50UGF0aFNwbGl0ID0gcGF0aC5zcGxpdCgnLycpOw0KICAgICAgbGV0IGN1cnJlbnREYXRhID0ge307DQogICAgICB0aGlzLmZpbHRlclJvdXRlc0Z1bih0aGlzLiRzdG9yZS5zdGF0ZS5yb3V0ZXNMaXN0LnJvdXRlc0xpc3QpLm1hcCgodiwgaykgPT4gew0KICAgICAgICBpZiAodi5wYXRoID09PSBgLyR7Y3VycmVudFBhdGhTcGxpdFsxXX1gKSB7DQogICAgICAgICAgdlsnayddID0gazsNCiAgICAgICAgICBjdXJyZW50RGF0YVsnaXRlbSddID0gW3sgLi4udiB9XTsNCiAgICAgICAgICBjdXJyZW50RGF0YVsnY2hpbGRyZW4nXSA9IFt7IC4uLnYgfV07DQogICAgICAgICAgaWYgKHYuY2hpbGRyZW4pIGN1cnJlbnREYXRhWydjaGlsZHJlbiddID0gdi5jaGlsZHJlbjsNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgICByZXR1cm4gY3VycmVudERhdGE7DQogICAgfSwNCiAgICAvLyDoj5zljZXmv4DmtLvlm57osIMNCiAgICBvbkhvcml6b250YWxTZWxlY3QocGF0aCkgew0KICAgICAgdGhpcy5idXMuJGVtaXQoJ3NldFNlbmRDbGFzc2ljQ2hpbGRyZW4nLCB0aGlzLnNldFNlbmRDbGFzc2ljQ2hpbGRyZW4ocGF0aCkpOw0KICAgIH0sDQogICAgLy8g6K6+572u6aG16Z2i5b2T5YmN6Lev55Sx6auY5LquDQogICAgc2V0Q3VycmVudFJvdXRlckhpZ2hsaWdodChwYXRoKSB7DQogICAgICBjb25zdCBjdXJyZW50UGF0aFNwbGl0ID0gcGF0aC5zcGxpdCgnLycpOw0KICAgICAgaWYgKHRoaXMuJHN0b3JlLnN0YXRlLnRoZW1lQ29uZmlnLnRoZW1lQ29uZmlnLmxheW91dCA9PT0gJ2NsYXNzaWMnKSB7DQogICAgICAgIHRoaXMuZGVmYXVsdEFjdGl2ZSA9IGAvJHtjdXJyZW50UGF0aFNwbGl0WzFdfWA7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmRlZmF1bHRBY3RpdmUgPSBwYXRoOw0KICAgICAgfQ0KICAgIH0sDQogIH0sDQogIHdhdGNoOiB7DQogICAgLy8g55uR5ZCs6Lev55Sx55qE5Y+Y5YyWDQogICAgJHJvdXRlOiB7DQogICAgICBoYW5kbGVyKHRvKSB7DQogICAgICAgIHRoaXMuc2V0Q3VycmVudFJvdXRlckhpZ2hsaWdodCh0by5wYXRoKTsNCiAgICAgIH0sDQogICAgICBkZWVwOiB0cnVlLA0KICAgIH0sDQogIH0sDQp9Ow0K"},{"version":3,"sources":["horizontal.vue"],"names":[],"mappings":";AAuCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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":"horizontal.vue","sourceRoot":"src/layout/navMenu","sourcesContent":["<template>\r\n <div class=\"el-menu-horizontal-warp\">\r\n <el-scrollbar @wheel.native.prevent=\"onElMenuHorizontalScroll\" ref=\"elMenuHorizontalScrollRef\">\r\n <el-menu\r\n router\r\n :default-active=\"activePath || defaultActive\"\r\n background-color=\"transparent\"\r\n mode=\"horizontal\"\r\n @select=\"onHorizontalSelect\"\r\n >\r\n <template v-for=\"val in menuList\">\r\n <el-submenu :index=\"val.path\" v-if=\"val.is_show && val.children && val.children.length > 0\" :key=\"val.path\">\r\n <template slot=\"title\">\r\n <!-- <i class=\"ivu-icon\" :class=\"val.icon ? 'el-icon-' + val.icon : ''\"></i> -->\r\n <span>{{ $t(val.title) }}</span>\r\n </template>\r\n <SubItem :chil=\"val.children\" />\r\n </el-submenu>\r\n <template v-else-if=\"val.is_show\">\r\n <el-menu-item :index=\"val.path\" :key=\"val.path\">\r\n <template slot=\"title\" v-if=\"!val.isLink || (val.isLink && val.isIframe)\">\r\n <!-- <i class=\"ivu-icon\" :class=\"val.icon ? 'el-icon-' + val.icon : ''\"></i> -->\r\n {{ $t(val.title) }}\r\n </template>\r\n <template slot=\"title\" v-else>\r\n <a :href=\"val.isLink\" target=\"_blank\">\r\n <Icon :type=\"val.icon ? val.icon : ''\" />\r\n {{ $t(val.title) }}\r\n </a>\r\n </template>\r\n </el-menu-item>\r\n </template>\r\n </template>\r\n </el-menu>\r\n </el-scrollbar>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport SubItem from '@/layout/navMenu/subItem.vue';\r\nimport { mapState } from 'vuex';\r\nexport default {\r\n name: 'navMenuHorizontal',\r\n components: { SubItem },\r\n props: {\r\n menuList: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n },\r\n computed: {\r\n ...mapState('menu', ['activePath']),\r\n },\r\n data() {\r\n return {\r\n defaultActive: null,\r\n };\r\n },\r\n mounted() {\r\n this.initElMenuOffsetLeft();\r\n this.setCurrentRouterHighlight(this.$route.path);\r\n },\r\n methods: {\r\n // 设置横向滚动条可以鼠标滚轮滚动\r\n onElMenuHorizontalScroll(e) {\r\n const eventDelta = e.wheelDelta || -e.deltaY * 40;\r\n this.$refs.elMenuHorizontalScrollRef.$refs.wrap.scrollLeft =\r\n this.$refs.elMenuHorizontalScrollRef.$refs.wrap.scrollLeft + eventDelta / 4;\r\n },\r\n // 初始化数据,页面刷新时,滚动条滚动到对应位置\r\n initElMenuOffsetLeft() {\r\n this.$nextTick(() => {\r\n let els = document.querySelector('.el-menu.el-menu--horizontal li.is-active');\r\n if (!els) return false;\r\n this.$refs.elMenuHorizontalScrollRef.$refs.wrap.scrollLeft = els.offsetLeft;\r\n });\r\n },\r\n // 路由过滤递归函数\r\n filterRoutesFun(arr) {\r\n return arr\r\n .filter((item) => !item.isHide)\r\n .map((item) => {\r\n item = Object.assign({}, item);\r\n if (item.children) item.children = this.filterRoutesFun(item.children);\r\n return item;\r\n });\r\n },\r\n // 传送当前子级数据到菜单中\r\n setSendClassicChildren(path) {\r\n const currentPathSplit = path.split('/');\r\n let currentData = {};\r\n this.filterRoutesFun(this.$store.state.routesList.routesList).map((v, k) => {\r\n if (v.path === `/${currentPathSplit[1]}`) {\r\n v['k'] = k;\r\n currentData['item'] = [{ ...v }];\r\n currentData['children'] = [{ ...v }];\r\n if (v.children) currentData['children'] = v.children;\r\n }\r\n });\r\n return currentData;\r\n },\r\n // 菜单激活回调\r\n onHorizontalSelect(path) {\r\n this.bus.$emit('setSendClassicChildren', this.setSendClassicChildren(path));\r\n },\r\n // 设置页面当前路由高亮\r\n setCurrentRouterHighlight(path) {\r\n const currentPathSplit = path.split('/');\r\n if (this.$store.state.themeConfig.themeConfig.layout === 'classic') {\r\n this.defaultActive = `/${currentPathSplit[1]}`;\r\n } else {\r\n this.defaultActive = path;\r\n }\r\n },\r\n },\r\n watch: {\r\n // 监听路由的变化\r\n $route: {\r\n handler(to) {\r\n this.setCurrentRouterHighlight(to.path);\r\n },\r\n deep: true,\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n::v-deep .el-scrollbar__bar.is-horizontal {\r\n height: 0;\r\n}\r\n.el-menu-horizontal-warp {\r\n flex: 1;\r\n overflow: hidden;\r\n margin-right: 30px;\r\n ::v-deep .el-scrollbar__bar.is-vertical {\r\n display: none;\r\n }\r\n ::v-deep .el-scrollbar__wrap {\r\n overflow-y: hidden !important;\r\n }\r\n ::v-deepa {\r\n width: 100%;\r\n }\r\n .el-menu.el-menu--horizontal {\r\n display: flex;\r\n height: 100%;\r\n width: 100%;\r\n box-sizing: border-box;\r\n }\r\n}\r\n</style>\r\n"]}]}
|