{"remainingRequest":"D:\\源码\\vue-element-admin-master\\node_modules\\babel-loader\\lib\\index.js!D:\\源码\\vue-element-admin-master\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\源码\\vue-element-admin-master\\src\\components\\HeaderSearch\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\源码\\vue-element-admin-master\\src\\components\\HeaderSearch\\index.vue","mtime":1649647926000},{"path":"D:\\源码\\vue-element-admin-master\\babel.config.js","mtime":1649647926000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJEOi9cdTZFOTBcdTc4MDEvdnVlLWVsZW1lbnQtYWRtaW4tbWFzdGVyL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheS5qcyI7CmltcG9ydCBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciBmcm9tICJEOi9cdTZFOTBcdTc4MDEvdnVlLWVsZW1lbnQtYWRtaW4tbWFzdGVyL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc2VhcmNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8gZnVzZSBpcyBhIGxpZ2h0d2VpZ2h0IGZ1enp5LXNlYXJjaCBtb2R1bGUKLy8gbWFrZSBzZWFyY2ggcmVzdWx0cyBtb3JlIGluIGxpbmUgd2l0aCBleHBlY3RhdGlvbnMKaW1wb3J0IEZ1c2UgZnJvbSAnZnVzZS5qcyc7CmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0hlYWRlclNlYXJjaCcsCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHNlYXJjaDogJycsCiAgICAgIG9wdGlvbnM6IFtdLAogICAgICBzZWFyY2hQb29sOiBbXSwKICAgICAgc2hvdzogZmFsc2UsCiAgICAgIGZ1c2U6IHVuZGVmaW5lZAogICAgfTsKICB9LAogIGNvbXB1dGVkOiB7CiAgICByb3V0ZXM6IGZ1bmN0aW9uIHJvdXRlcygpIHsKICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMucGVybWlzc2lvbl9yb3V0ZXM7CiAgICB9CiAgfSwKICB3YXRjaDogewogICAgcm91dGVzOiBmdW5jdGlvbiByb3V0ZXMoKSB7CiAgICAgIHRoaXMuc2VhcmNoUG9vbCA9IHRoaXMuZ2VuZXJhdGVSb3V0ZXModGhpcy5yb3V0ZXMpOwogICAgfSwKICAgIHNlYXJjaFBvb2w6IGZ1bmN0aW9uIHNlYXJjaFBvb2wobGlzdCkgewogICAgICB0aGlzLmluaXRGdXNlKGxpc3QpOwogICAgfSwKICAgIHNob3c6IGZ1bmN0aW9uIHNob3codmFsdWUpIHsKICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xvc2UpOwogICAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsb3NlKTsKICAgICAgfQogICAgfQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHRoaXMuc2VhcmNoUG9vbCA9IHRoaXMuZ2VuZXJhdGVSb3V0ZXModGhpcy5yb3V0ZXMpOwogIH0sCiAgbWV0aG9kczogewogICAgY2xpY2s6IGZ1bmN0aW9uIGNsaWNrKCkgewogICAgICB0aGlzLnNob3cgPSAhdGhpcy5zaG93OwoKICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgIHRoaXMuJHJlZnMuaGVhZGVyU2VhcmNoU2VsZWN0ICYmIHRoaXMuJHJlZnMuaGVhZGVyU2VhcmNoU2VsZWN0LmZvY3VzKCk7CiAgICAgIH0KICAgIH0sCiAgICBjbG9zZTogZnVuY3Rpb24gY2xvc2UoKSB7CiAgICAgIHRoaXMuJHJlZnMuaGVhZGVyU2VhcmNoU2VsZWN0ICYmIHRoaXMuJHJlZnMuaGVhZGVyU2VhcmNoU2VsZWN0LmJsdXIoKTsKICAgICAgdGhpcy5vcHRpb25zID0gW107CiAgICAgIHRoaXMuc2hvdyA9IGZhbHNlOwogICAgfSwKICAgIGNoYW5nZTogZnVuY3Rpb24gY2hhbmdlKHZhbCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgdGhpcy4kcm91dGVyLnB1c2godmFsLnBhdGgpOwogICAgICB0aGlzLnNlYXJjaCA9ICcnOwogICAgICB0aGlzLm9wdGlvbnMgPSBbXTsKICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzLnNob3cgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgaW5pdEZ1c2U6IGZ1bmN0aW9uIGluaXRGdXNlKGxpc3QpIHsKICAgICAgdGhpcy5mdXNlID0gbmV3IEZ1c2UobGlzdCwgewogICAgICAgIHNob3VsZFNvcnQ6IHRydWUsCiAgICAgICAgdGhyZXNob2xkOiAwLjQsCiAgICAgICAgbG9jYXRpb246IDAsCiAgICAgICAgZGlzdGFuY2U6IDEwMCwKICAgICAgICBtYXhQYXR0ZXJuTGVuZ3RoOiAzMiwKICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDEsCiAgICAgICAga2V5czogW3sKICAgICAgICAgIG5hbWU6ICd0aXRsZScsCiAgICAgICAgICB3ZWlnaHQ6IDAuNwogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICdwYXRoJywKICAgICAgICAgIHdlaWdodDogMC4zCiAgICAgICAgfV0KICAgICAgfSk7CiAgICB9LAogICAgLy8gRmlsdGVyIG91dCB0aGUgcm91dGVzIHRoYXQgY2FuIGJlIGRpc3BsYXllZCBpbiB0aGUgc2lkZWJhcgogICAgLy8gQW5kIGdlbmVyYXRlIHRoZSBpbnRlcm5hdGlvbmFsaXplZCB0aXRsZQogICAgZ2VuZXJhdGVSb3V0ZXM6IGZ1bmN0aW9uIGdlbmVyYXRlUm91dGVzKHJvdXRlcykgewogICAgICB2YXIgYmFzZVBhdGggPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcvJzsKICAgICAgdmFyIHByZWZpeFRpdGxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBbXTsKICAgICAgdmFyIHJlcyA9IFtdOwoKICAgICAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHJvdXRlcyksCiAgICAgICAgICBfc3RlcDsKCiAgICAgIHRyeSB7CiAgICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHsKICAgICAgICAgIHZhciByb3V0ZXIgPSBfc3RlcC52YWx1ZTsKCiAgICAgICAgICAvLyBza2lwIGhpZGRlbiByb3V0ZXIKICAgICAgICAgIGlmIChyb3V0ZXIuaGlkZGVuKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBkYXRhID0gewogICAgICAgICAgICBwYXRoOiBwYXRoLnJlc29sdmUoYmFzZVBhdGgsIHJvdXRlci5wYXRoKSwKICAgICAgICAgICAgdGl0bGU6IF90b0NvbnN1bWFibGVBcnJheShwcmVmaXhUaXRsZSkKICAgICAgICAgIH07CgogICAgICAgICAgaWYgKHJvdXRlci5tZXRhICYmIHJvdXRlci5tZXRhLnRpdGxlKSB7CiAgICAgICAgICAgIGRhdGEudGl0bGUgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGRhdGEudGl0bGUpLCBbcm91dGVyLm1ldGEudGl0bGVdKTsKCiAgICAgICAgICAgIGlmIChyb3V0ZXIucmVkaXJlY3QgIT09ICdub1JlZGlyZWN0JykgewogICAgICAgICAgICAgIC8vIG9ubHkgcHVzaCB0aGUgcm91dGVzIHdpdGggdGl0bGUKICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2U6IG5lZWQgdG8gZXhjbHVkZSBwYXJlbnQgcm91dGVyIHdpdGhvdXQgcmVkaXJlY3QKICAgICAgICAgICAgICByZXMucHVzaChkYXRhKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSAvLyByZWN1cnNpdmUgY2hpbGQgcm91dGVzCgoKICAgICAgICAgIGlmIChyb3V0ZXIuY2hpbGRyZW4pIHsKICAgICAgICAgICAgdmFyIHRlbXBSb3V0ZXMgPSB0aGlzLmdlbmVyYXRlUm91dGVzKHJvdXRlci5jaGlsZHJlbiwgZGF0YS5wYXRoLCBkYXRhLnRpdGxlKTsKCiAgICAgICAgICAgIGlmICh0ZW1wUm91dGVzLmxlbmd0aCA+PSAxKSB7CiAgICAgICAgICAgICAgcmVzID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXMpLCBfdG9Db25zdW1hYmxlQXJyYXkodGVtcFJvdXRlcykpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICBfaXRlcmF0b3IuZShlcnIpOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIF9pdGVyYXRvci5mKCk7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXM7CiAgICB9LAogICAgcXVlcnlTZWFyY2g6IGZ1bmN0aW9uIHF1ZXJ5U2VhcmNoKHF1ZXJ5KSB7CiAgICAgIGlmIChxdWVyeSAhPT0gJycpIHsKICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmZ1c2Uuc2VhcmNoKHF1ZXJ5KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLm9wdGlvbnMgPSBbXTsKICAgICAgfQogICAgfQogIH0KfTs="},{"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoBA;AACA;AACA;AACA;AAEA;EACAA,oBADA;EAEAC,IAFA,kBAEA;IACA;MACAC,UADA;MAEAC,WAFA;MAGAC,cAHA;MAIAC,WAJA;MAKAC;IALA;EAOA,CAVA;EAWAC;IACAC,MADA,oBACA;MACA;IACA;EAHA,CAXA;EAgBAC;IACAD,MADA,oBACA;MACA;IACA,CAHA;IAIAJ,UAJA,sBAIAM,IAJA,EAIA;MACA;IACA,CANA;IAOAL,IAPA,gBAOAM,KAPA,EAOA;MACA;QACAC;MACA,CAFA,MAEA;QACAA;MACA;IACA;EAbA,CAhBA;EA+BAC,OA/BA,qBA+BA;IACA;EACA,CAjCA;EAkCAC;IACAC,KADA,mBACA;MACA;;MACA;QACA;MACA;IACA,CANA;IAOAC,KAPA,mBAOA;MACA;MACA;MACA;IACA,CAXA;IAYAC,MAZA,kBAYAC,GAZA,EAYA;MAAA;;MACA;MACA;MACA;MACA;QACA;MACA,CAFA;IAGA,CAnBA;IAoBAC,QApBA,oBAoBAT,IApBA,EAoBA;MACA;QACAU,gBADA;QAEAC,cAFA;QAGAC,WAHA;QAIAC,aAJA;QAKAC,oBALA;QAMAC,qBANA;QAOAC;UACA1B,aADA;UAEA2B;QAFA,GAGA;UACA3B,YADA;UAEA2B;QAFA,CAHA;MAPA;IAeA,CApCA;IAqCA;IACA;IACAC,cAvCA,0BAuCApB,MAvCA,EAuCA;MAAA;MAAA;MACA;;MADA,2CAGAA,MAHA;MAAA;;MAAA;QAGA;UAAA;;UACA;UACA;YAAA;UAAA;;UAEA;YACAqB,yCADA;YAEAC;UAFA;;UAKA;YACA7B;;YAEA;cACA;cACA;cACA8B;YACA;UACA,CAjBA,CAmBA;;;UACA;YACA;;YACA;cACAA;YACA;UACA;QACA;MA7BA;QAAA;MAAA;QAAA;MAAA;;MA8BA;IACA,CAtEA;IAuEAC,WAvEA,uBAuEAC,KAvEA,EAuEA;MACA;QACA;MACA,CAFA,MAEA;QACA;MACA;IACA;EA7EA;AAlCA","names":["name","data","search","options","searchPool","show","fuse","computed","routes","watch","list","value","document","mounted","methods","click","close","change","val","initFuse","shouldSort","threshold","location","distance","maxPatternLength","minMatchCharLength","keys","weight","generateRoutes","path","title","res","querySearch","query"],"sourceRoot":"src/components/HeaderSearch","sources":["index.vue"],"sourcesContent":["<template>\n <div :class=\"{'show':show}\" class=\"header-search\">\n <svg-icon class-name=\"search-icon\" icon-class=\"search\" @click.stop=\"click\" />\n <el-select\n ref=\"headerSearchSelect\"\n v-model=\"search\"\n :remote-method=\"querySearch\"\n filterable\n default-first-option\n remote\n placeholder=\"Search\"\n class=\"header-search-select\"\n @change=\"change\"\n >\n <el-option v-for=\"item in options\" :key=\"item.path\" :value=\"item\" :label=\"item.title.join(' > ')\" />\n </el-select>\n </div>\n</template>\n\n<script>\n// fuse is a lightweight fuzzy-search module\n// make search results more in line with expectations\nimport Fuse from 'fuse.js'\nimport path from 'path'\n\nexport default {\n name: 'HeaderSearch',\n data() {\n return {\n search: '',\n options: [],\n searchPool: [],\n show: false,\n fuse: undefined\n }\n },\n computed: {\n routes() {\n return this.$store.getters.permission_routes\n }\n },\n watch: {\n routes() {\n this.searchPool = this.generateRoutes(this.routes)\n },\n searchPool(list) {\n this.initFuse(list)\n },\n show(value) {\n if (value) {\n document.body.addEventListener('click', this.close)\n } else {\n document.body.removeEventListener('click', this.close)\n }\n }\n },\n mounted() {\n this.searchPool = this.generateRoutes(this.routes)\n },\n methods: {\n click() {\n this.show = !this.show\n if (this.show) {\n this.$refs.headerSearchSelect && this.$refs.headerSearchSelect.focus()\n }\n },\n close() {\n this.$refs.headerSearchSelect && this.$refs.headerSearchSelect.blur()\n this.options = []\n this.show = false\n },\n change(val) {\n this.$router.push(val.path)\n this.search = ''\n this.options = []\n this.$nextTick(() => {\n this.show = false\n })\n },\n initFuse(list) {\n this.fuse = new Fuse(list, {\n shouldSort: true,\n threshold: 0.4,\n location: 0,\n distance: 100,\n maxPatternLength: 32,\n minMatchCharLength: 1,\n keys: [{\n name: 'title',\n weight: 0.7\n }, {\n name: 'path',\n weight: 0.3\n }]\n })\n },\n // Filter out the routes that can be displayed in the sidebar\n // And generate the internationalized title\n generateRoutes(routes, basePath = '/', prefixTitle = []) {\n let res = []\n\n for (const router of routes) {\n // skip hidden router\n if (router.hidden) { continue }\n\n const data = {\n path: path.resolve(basePath, router.path),\n title: [...prefixTitle]\n }\n\n if (router.meta && router.meta.title) {\n data.title = [...data.title, router.meta.title]\n\n if (router.redirect !== 'noRedirect') {\n // only push the routes with title\n // special case: need to exclude parent router without redirect\n res.push(data)\n }\n }\n\n // recursive child routes\n if (router.children) {\n const tempRoutes = this.generateRoutes(router.children, data.path, data.title)\n if (tempRoutes.length >= 1) {\n res = [...res, ...tempRoutes]\n }\n }\n }\n return res\n },\n querySearch(query) {\n if (query !== '') {\n this.options = this.fuse.search(query)\n } else {\n this.options = []\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.header-search {\n font-size: 0 !important;\n\n .search-icon {\n cursor: pointer;\n font-size: 18px;\n vertical-align: middle;\n }\n\n .header-search-select {\n font-size: 18px;\n transition: width 0.2s;\n width: 0;\n overflow: hidden;\n background: transparent;\n border-radius: 0;\n display: inline-block;\n vertical-align: middle;\n\n ::v-deep .el-input__inner {\n border-radius: 0;\n border: 0;\n padding-left: 0;\n padding-right: 0;\n box-shadow: none !important;\n border-bottom: 1px solid #d9d9d9;\n vertical-align: middle;\n }\n }\n\n &.show {\n .header-search-select {\n width: 210px;\n margin-left: 10px;\n }\n }\n}\n</style>\n"]}]}
|