| 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\\navBars\\tagsView\\tagsView.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\layout\\navBars\\tagsView\\tagsView.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:DQppbXBvcnQgQ29udGV4dG1lbnUgZnJvbSAnQC9sYXlvdXQvbmF2QmFycy90YWdzVmlldy9jb250ZXh0bWVudSc7DQppbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSAnQC91dGlscy9zdG9yYWdlLmpzJzsNCmltcG9ydCB7IG1hcE11dGF0aW9ucyB9IGZyb20gJ3Z1ZXgnOw0KaW1wb3J0IHNldHRpbmcgZnJvbSAnQC9zZXR0aW5nJzsNCg0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAndGFnc1ZpZXcnLA0KICBjb21wb25lbnRzOiB7IENvbnRleHRtZW51IH0sDQogIGRhdGEoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIHVzZXJJbmZvOiB7fSwNCiAgICAgIC8vIHRhZ3NWaWV3TGlzdDogW10sDQogICAgICB0YWdzRHJvcGRvd246IHsNCiAgICAgICAgeDogJycsDQogICAgICAgIHk6ICcnLA0KICAgICAgfSwNCiAgICAgIHRhZ3NSZWZzSW5kZXg6IDAsDQogICAgICB0YWdzUm91dGVQYXRoOiB0aGlzLiRyb3V0ZS5wYXRoLA0KICAgICAgLy8gdGFnc1ZpZXdSb3V0ZXNMaXN0OiBbXSwNCiAgICAgIGRyb3Bkb3duTGlzdDogWw0KICAgICAgICB7IGlkOiAwLCB0eHQ6ICdtZXNzYWdlLnRhZ3NWaWV3LnJlZnJlc2gnLCBhZmZpeDogZmFsc2UsIGljb246ICdlbC1pY29uLXJlZnJlc2gtcmlnaHQnIH0sDQogICAgICAgIHsgaWQ6IDEsIHR4dDogJ21lc3NhZ2UudGFnc1ZpZXcuY2xvc2UnLCBhZmZpeDogZmFsc2UsIGljb246ICdlbC1pY29uLWNsb3NlJyB9LA0KICAgICAgICB7IGlkOiAyLCB0eHQ6ICdtZXNzYWdlLnRhZ3NWaWV3LmNsb3NlT3RoZXInLCBhZmZpeDogZmFsc2UsIGljb246ICdlbC1pY29uLWNpcmNsZS1jbG9zZScgfSwNCiAgICAgICAgeyBpZDogMywgdHh0OiAnbWVzc2FnZS50YWdzVmlldy5jbG9zZUFsbCcsIGFmZml4OiBmYWxzZSwgaWNvbjogJ2VsLWljb24tZm9sZGVyLWRlbGV0ZScgfSwNCiAgICAgIF0sDQogICAgICBzY3JvbGxUYWdJY29uOiBmYWxzZSwNCiAgICB9Ow0KICB9LA0KICBjb21wdXRlZDogew0KICAgIC8vIOiOt+WPluW4g+WxgOmFjee9ruS/oeaBrw0KICAgIGdldFRoZW1lQ29uZmlnKCkgew0KICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLnRoZW1lQ29uZmlnLnRoZW1lQ29uZmlnOw0KICAgIH0sDQogICAgLy8g5Yqo5oCB6K6+572uIHRhZ3NWaWV3IOmjjuagvOagt+W8jw0KICAgIHNldFRhZ3NTdHlsZSgpIHsNCiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS50aGVtZUNvbmZpZy50aGVtZUNvbmZpZy50YWdzU3R5bGU7DQogICAgfSwNCiAgICB0YWdzVmlld0xpc3QoKSB7DQogICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuYXBwLnRhZ05hdkxpc3Q7DQogICAgfSwNCiAgICB0YWdzVmlld1JvdXRlc0xpc3QoKSB7DQogICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuYXBwLnRhZ05hdkxpc3Q7DQogICAgfSwNCiAgfSwNCiAgY3JlYXRlZCgpIHsNCiAgICAvLyDnm5HlkKzpnZ7mnKzpobXpnaLosIPnlKggMCDliLfmlrDlvZPliY3vvIwxIOWFs+mXreW9k+WJje+8jDIg5YWz6Zet5YW25a6D77yMMyDlhbPpl63lhajpg6gNCiAgICB0aGlzLmJ1cy4kb24oJ29uQ3VycmVudENvbnRleHRtZW51Q2xpY2snLCAoZGF0YSkgPT4gew0KICAgICAgdGhpcy5vbkN1cnJlbnRDb250ZXh0bWVudUNsaWNrKGRhdGEpOw0KICAgIH0pOw0KICB9LA0KICBtb3VudGVkKCkgew0KICAgIGlmICghdGhpcy4kc3RvcmUuc3RhdGUuYXBwLnRhZ05hdkxpc3QubGVuZ3RoKSB7DQogICAgICB0aGlzLmdldFRhZ3NWaWV3Um91dGVzKCk7DQogICAgfQ0KICAgIGlmICh0aGlzLiRyZWZzLnRhZ3NWaWV3cz8ub2Zmc2V0V2lkdGggPCB0aGlzLiRyZWZzLnNjcm9sbGJhclJlZi4kcmVmcy53cmFwLnNjcm9sbFdpZHRoKSB7DQogICAgICB0aGlzLnNjcm9sbFRhZ0ljb24gPSB0cnVlOw0KICAgIH0NCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gew0KICAgICAgaWYgKHRoaXMuJHJlZnMudGFnc1ZpZXdzPy5vZmZzZXRXaWR0aCA8IHRoaXMuJHJlZnMuc2Nyb2xsYmFyUmVmLiRyZWZzLndyYXAuc2Nyb2xsV2lkdGgpIHsNCiAgICAgICAgdGhpcy5zY3JvbGxUYWdJY29uID0gdHJ1ZTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuc2Nyb2xsVGFnSWNvbiA9IGZhbHNlOw0KICAgICAgfQ0KICAgIH0pOw0KICB9LA0KICBtZXRob2RzOiB7DQogICAgLi4ubWFwTXV0YXRpb25zKFsnc2V0QnJlYWRDcnVtYicsICdzZXRUYWdOYXZMaXN0JywgJ2FkZFRhZycsICdzZXRMb2NhbCcsICdzZXRIb21lUm91dGUnLCAnY2xvc2VUYWcnXSksDQogICAgY2xpY2tEcm9wZG93bihlKSB7DQogICAgICBsZXQgZGF0YSA9IHsgaWQ6IGUsIHBhdGg6IHRoaXMuJHJvdXRlLnBhdGggfTsNCiAgICAgIHRoaXMub25DdXJyZW50Q29udGV4dG1lbnVDbGljayhkYXRhKTsNCiAgICB9LA0KICAgIC8vIOiOt+WPlui3r+eUseS/oeaBrw0KICAgIGdldFJvdXRlc0xpc3QoKSB7DQogICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUucm91dGVzTGlzdC5yb3V0ZXNMaXN0Ow0KICAgIH0sDQogICAgLy8g5b2T5YmN55qEIHRhZ3NWaWV3IOmhueeCueWHu+aXtg0KICAgIG9uVGFnc0NsaWNrKHYsIGspIHsNCiAgICAgIHRoaXMudGFnc1JvdXRlUGF0aCA9IHYucGF0aDsNCiAgICAgIHRoaXMudGFnc1JlZnNJbmRleCA9IGs7DQogICAgICB0aGlzLiRyb3V0ZXIucHVzaCh2KTsNCiAgICB9LA0KICAgIC8vIOiOt+WPliB0YWdzVmlldyDnmoTkuIvmoIfvvJrnlKjkuo7lpITnkIYgdGFnc1ZpZXcg54K55Ye75pe255qE5qiq5ZCR5rua5YqoDQogICAgZ2V0VGFnc1JlZnNJbmRleChwYXRoKSB7DQogICAgICBpZiAodGhpcy50YWdzVmlld0xpc3QubGVuZ3RoID4gMCkgew0KICAgICAgICB0aGlzLnRhZ3NSZWZzSW5kZXggPSB0aGlzLnRhZ3NWaWV3TGlzdC5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0ucGF0aCA9PT0gcGF0aCk7DQogICAgICB9DQogICAgfSwNCiAgICAvLyDpvKDmoIfmu5rova7mu5rliqgNCiAgICBvbkhhbmRsZVNjcm9sbChlKSB7DQogICAgICB0aGlzLiRyZWZzLnNjcm9sbGJhclJlZi4kcmVmcy53cmFwLnNjcm9sbExlZnQgKz0gZS53aGVlbERlbHRhIC8gNDsNCiAgICB9LA0KICAgIHNjcm9sbFRhZyhwcm9kdWN0aW9uKSB7DQogICAgICBsZXQgc2Nyb2xsUmVmcyA9IHRoaXMuJHJlZnMuc2Nyb2xsYmFyUmVmLiRyZWZzLndyYXAuc2Nyb2xsV2lkdGg7DQogICAgICBsZXQgc2Nyb2xsTGVmdCA9IHRoaXMuJHJlZnMuc2Nyb2xsYmFyUmVmLiRyZWZzLndyYXAuc2Nyb2xsTGVmdDsNCiAgICAgIGlmIChwcm9kdWN0aW9uID09PSAnbGVmdCcpIHsNCiAgICAgICAgdGhpcy4kcmVmcy5zY3JvbGxiYXJSZWYuJHJlZnMud3JhcC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdCAtIDMwMCA8PSAwID8gMCA6IHNjcm9sbExlZnQgLSAzMDA7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLiRyZWZzLnNjcm9sbGJhclJlZi4kcmVmcy53cmFwLnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0ICsgMzAwID49IHNjcm9sbFJlZnMgPyBzY3JvbGxSZWZzIDogc2Nyb2xsTGVmdCArIDMwMDsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIHRhZ3NWaWV3IOaoquWQkea7muWKqA0KICAgIHRhZ3NWaWV3bW92ZVRvQ3VycmVudFRhZygpIHsNCiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsNCiAgICAgICAgY29uc3QgdGFnc1JlZnMgPSB0aGlzLiRyZWZzLnRhZ3NSZWZzOw0KICAgICAgICBpZiAoIXRhZ3NSZWZzKSByZXR1cm47DQogICAgICAgIGlmICh0YWdzUmVmcy5sZW5ndGggPD0gMCkgcmV0dXJuIGZhbHNlOw0KICAgICAgICAvLyDlvZPliY0gbGkg5YWD57SgDQogICAgICAgIGxldCBsaURvbSA9IHRhZ3NSZWZzW3RoaXMudGFnc1JlZnNJbmRleF07DQogICAgICAgIC8vIOW9k+WJjSBsaSDlhYPntKDkuIvmoIcNCiAgICAgICAgbGV0IGxpSW5kZXggPSB0aGlzLnRhZ3NSZWZzSW5kZXg7DQogICAgICAgIC8vIOW9k+WJjSB1bCDkuIsgbGkg5YWD57Sg5oC76ZW/5bqmDQogICAgICAgIGxldCBsaUxlbmd0aCA9IHRhZ3NSZWZzLmxlbmd0aDsNCiAgICAgICAgLy8g5pyA5YmNIGxpDQogICAgICAgIGxldCBsaUZpcnN0ID0gdGFnc1JlZnNbMF07DQogICAgICAgIC8vIOacgOWQjiBsaQ0KICAgICAgICBsZXQgbGlMYXN0ID0gdGFnc1JlZnNbdGFnc1JlZnMubGVuZ3RoIC0gMV07DQogICAgICAgIC8vIOW9k+WJjea7muWKqOadoeeahOWAvA0KICAgICAgICBsZXQgc2Nyb2xsUmVmcyA9IHRoaXMuJHJlZnMuc2Nyb2xsYmFyUmVmLiRyZWZzLndyYXA7DQogICAgICAgIC8vIOW9k+WJjea7muWKqOadoea7muWKqOWuveW6pg0KICAgICAgICBsZXQgc2Nyb2xsUyA9IHNjcm9sbFJlZnMuc2Nyb2xsV2lkdGg7DQogICAgICAgIC8vIOW9k+WJjea7muWKqOadoeWBj+enu+WuveW6pg0KICAgICAgICBsZXQgb2Zmc2V0VyA9IHNjcm9sbFJlZnMub2Zmc2V0V2lkdGg7DQogICAgICAgIC8vIOW9k+WJjea7muWKqOadoeWBj+enu+i3neemuw0KICAgICAgICBsZXQgc2Nyb2xsTCA9IHNjcm9sbFJlZnMuc2Nyb2xsTGVmdDsNCiAgICAgICAgLy8g5LiK5LiA5LiqIHRhZ3MgbGkgZG9tDQogICAgICAgIGxldCBsaVByZXZUYWcgPSB0YWdzUmVmc1t0aGlzLnRhZ3NSZWZzSW5kZXggLSAxXTsNCiAgICAgICAgLy8g5LiL5LiA5LiqIHRhZ3MgbGkgZG9tDQogICAgICAgIGxldCBsaU5leHRUYWcgPSB0YWdzUmVmc1t0aGlzLnRhZ3NSZWZzSW5kZXggKyAxXTsNCiAgICAgICAgLy8g5LiK5LiA5LiqIHRhZ3MgbGkgZG9tIOeahOWBj+enu+i3neemuw0KICAgICAgICBsZXQgYmVmb3JlUHJldkwgPSAnJzsNCiAgICAgICAgLy8g5LiL5LiA5LiqIHRhZ3MgbGkgZG9tIOeahOWBj+enu+i3neemuw0KICAgICAgICBsZXQgYWZ0ZXJOZXh0TCA9ICcnOw0KICAgICAgICBpZiAobGlEb20gPT09IGxpRmlyc3QpIHsNCiAgICAgICAgICAvLyDlpLTpg6gNCiAgICAgICAgICBzY3JvbGxSZWZzLnNjcm9sbExlZnQgPSAwOw0KICAgICAgICB9IGVsc2UgaWYgKGxpRG9tID09PSBsaUxhc3QpIHsNCiAgICAgICAgICAvLyDlsL7pg6gNCiAgICAgICAgICBzY3JvbGxSZWZzLnNjcm9sbExlZnQgPSBzY3JvbGxTIC0gb2Zmc2V0VzsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAvLyDpnZ7lpLQv5bC+6YOoDQogICAgICAgICAgaWYgKGxpSW5kZXggPT09IDApIGJlZm9yZVByZXZMID0gbGlGaXJzdD8ub2Zmc2V0TGVmdCAtIDU7DQogICAgICAgICAgZWxzZSBiZWZvcmVQcmV2TCA9IGxpUHJldlRhZz8ub2Zmc2V0TGVmdCAtIDU7DQogICAgICAgICAgaWYgKGxpSW5kZXggPT09IGxpTGVuZ3RoKSBhZnRlck5leHRMID0gbGlMYXN0Py5vZmZzZXRMZWZ0ICsgbGlMYXN0Lm9mZnNldFdpZHRoICsgNTsNCiAgICAgICAgICBlbHNlIGFmdGVyTmV4dEwgPSBsaU5leHRUYWc/Lm9mZnNldExlZnQgKyBsaU5leHRUYWcub2Zmc2V0V2lkdGggKyA1Ow0KICAgICAgICAgIGlmIChhZnRlck5leHRMID4gc2Nyb2xsTCArIG9mZnNldFcpIHsNCiAgICAgICAgICAgIHNjcm9sbFJlZnMuc2Nyb2xsTGVmdCA9IGFmdGVyTmV4dEwgLSBvZmZzZXRXOw0KICAgICAgICAgIH0gZWxzZSBpZiAoYmVmb3JlUHJldkwgPCBzY3JvbGxMKSB7DQogICAgICAgICAgICBzY3JvbGxSZWZzLnNjcm9sbExlZnQgPSBiZWZvcmVQcmV2TDsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLy8g5pu05paw5rua5Yqo5p2h77yM6Ziy5q2i5LiN5Ye6546wDQogICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsYmFyKCk7DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8vIOabtOaWsOa7muWKqOadoeaYvuekug0KICAgIHVwZGF0ZVNjcm9sbGJhcigpIHsNCiAgICAgIHRoaXMuJHJlZnMuc2Nyb2xsYmFyUmVmLnVwZGF0ZSgpOw0KICAgIH0sDQogICAgLy8g6YCS5b2S5p+l5om+5b2T5YmN6Lev5b6E5LiL55qE57uE5Lu25L+h5oGvDQogICAgZmlsdGVyQ3VycmVudE1lbnUoYXJyLCBjdXJyZW50UGF0aCwgY2FsbGJhY2spIHsNCiAgICAgIGFyci5tYXAoKGl0ZW0pID0+IHsNCiAgICAgICAgaWYgKGl0ZW0ucGF0aCA9PT0gY3VycmVudFBhdGgpIHsNCiAgICAgICAgICBjYWxsYmFjayhpdGVtKTsNCiAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgaXRlbSA9IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pOw0KICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikgew0KICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gPSB0aGlzLmZpbHRlckN1cnJlbnRNZW51KGl0ZW0uY2hpbGRyZW4sIGN1cnJlbnRQYXRoLCBjYWxsYmFjayk7DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g5pWw57uE5a+56LGh5Y676YeNDQogICAgZHVwbGljYXRlKGFycikgew0KICAgICAgbGV0IG5ld29iaiA9IHt9Ow0KICAgICAgYXJyID0gYXJyLnJlZHVjZSgocHJlVmFsLCBjdXJWYWwpID0+IHsNCiAgICAgICAgbmV3b2JqW2N1clZhbC5wYXRoXSA/ICcnIDogKG5ld29ialtjdXJWYWwucGF0aF0gPSBwcmVWYWwucHVzaChjdXJWYWwpKTsNCiAgICAgICAgcmV0dXJuIHByZVZhbDsNCiAgICAgIH0sIFtdKTsNCiAgICAgIHJldHVybiBhcnI7DQogICAgfSwNCiAgICAvLyDojrflj5YgdnVleCDkuK3nmoQgdGFnc1ZpZXdSb3V0ZXMg5YiX6KGoDQogICAgZ2V0VGFnc1ZpZXdSb3V0ZXMoKSB7DQogICAgICB0aGlzLnRhZ3NSb3V0ZVBhdGggPSB0aGlzLiRyb3V0ZS5wYXRoOw0KICAgICAgdGhpcy5zZXRUYWdOYXZMaXN0KHRoaXMuJHN0b3JlLnN0YXRlLm1lbnVzLm9uZUx2TWVudXMpOw0KDQogICAgICB0aGlzLmluaXRUYWdzVmlld0xpc3QoKTsNCiAgICB9LA0KICAgIC8vIOWtmOWCqCB0YWdzVmlld0xpc3Qg5Yiw5rWP6KeI5Zmo5Li05pe257yT5a2Y5Lit77yM6aG16Z2i5Yi35paw5pe277yM5L+d55WZ6K6w5b2VDQogICAgYWRkQnJvd3NlclNldFNlc3Npb24odGFnTmF2TGlzdCkgew0KICAgICAgdGhpcy5zZXRUYWdOYXZMaXN0KHRhZ05hdkxpc3QpOw0KICAgIH0sDQogICAgLy8g5Yid5aeL5YyW6K6+572u5LqGIHRhZ3NWaWV3IOaVsOaNrg0KICAgIGluaXRUYWdzVmlld0xpc3QoKSB7DQogICAgICAvLyBpZiAoU2Vzc2lvbi5nZXQoJ3RhZ3NWaWV3TGlzdCcpICYmIHRoaXMuJHN0b3JlLnN0YXRlLnRoZW1lQ29uZmlnLnRoZW1lQ29uZmlnLmlzQ2FjaGVUYWdzVmlldykgew0KICAgICAgLy8gICB0aGlzLnRhZ3NWaWV3TGlzdCA9IFNlc3Npb24uZ2V0KCd0YWdzVmlld0xpc3QnKTsNCiAgICAgIC8vIH0gZWxzZSB7DQogICAgICBsZXQgYXJyID0gW107DQogICAgICB0aGlzLnRhZ3NWaWV3Um91dGVzTGlzdC5tYXAoKHYpID0+IHsNCiAgICAgICAgaWYgKHYubWV0YSAmJiB2Lm1ldGEuaXNBZmZpeCkgYXJyLnB1c2goeyAuLi52IH0pOw0KICAgICAgfSk7DQogICAgICAvLyB9DQogICAgICB0aGlzLnNldFRhZ05hdkxpc3QoYXJyKTsNCiAgICAgIC8vIOWIneWni+WMluW9k+WJjeWFg+e0oChsaSnnmoTkuIvmoIcNCiAgICAgIHRoaXMuZ2V0VGFnc1JlZnNJbmRleCh0aGlzLiRyb3V0ZS5wYXRoKTsNCiAgICAgIC8vIOa3u+WKoOWIneWni+WMluaoquWQkea7muWKqOadoeenu+WKqOWIsOWvueW6lOS9jee9rg0KICAgICAgdGhpcy50YWdzVmlld21vdmVUb0N1cnJlbnRUYWcoKTsNCiAgICB9LA0KICAgIC8vIOa3u+WKoCB0YWdzVmlld++8muacquiuvue9rumakOiXj++8iGlzSGlkZe+8ieS5n+a3u+WKoOWIsOWcqCB0YWdzVmlldyDkuK0NCiAgICBhZGRUYWdzVmlldyhwYXRoLCB0bykgew0KICAgICAgaWYgKHRoaXMudGFnc1ZpZXdMaXN0LnNvbWUoKHYpID0+IHYucGF0aCA9PT0gcGF0aCkpIHJldHVybiBmYWxzZTsNCiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnRhZ3NWaWV3Um91dGVzTGlzdC5maW5kKCh2KSA9PiB2LnBhdGggPT09IHBhdGgpOw0KICAgICAgaWYgKGl0ZW0uaXNMaW5rICYmICFpdGVtLmlzSWZyYW1lKSByZXR1cm4gZmFsc2U7DQogICAgICBpdGVtLnF1ZXJ5ID0gdG8/LnF1ZXJ5ID8gdG8/LnF1ZXJ5IDogdGhpcy4kcm91dGUucXVlcnk7DQogICAgICB0aGlzLnRhZ3NWaWV3TGlzdC5wdXNoKHsgLi4uaXRlbSB9KTsNCiAgICAgIHRoaXMuYWRkQnJvd3NlclNldFNlc3Npb24odGhpcy50YWdzVmlld0xpc3QpOw0KICAgIH0sDQogICAgLy8g5Y+z6ZSu6I+c5Y2V54K55Ye75pe25pi+56S66I+c5Y2V5YiX6KGoDQogICAgb25Db250ZXh0bWVudSh2LCBlKSB7DQogICAgICBsZXQgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBlOw0KICAgICAgdGhpcy50YWdzRHJvcGRvd24ueCA9IGNsaWVudFg7DQogICAgICB0aGlzLnRhZ3NEcm9wZG93bi55ID0gY2xpZW50WTsNCiAgICAgIHRoaXMuJHJlZnMudGFnc0NvbnRleHRtZW51Lm9wZW5Db250ZXh0bWVudSh2KTsNCiAgICB9LA0KICAgIG9uQ29udGV4dG1lbnVJY29uKGUpIHt9LA0KICAgIC8vIOW9k+WJjemhueWPs+mUruiPnOWNleeCueWHuw0KICAgIG9uQ3VycmVudENvbnRleHRtZW51Q2xpY2soZGF0YSkgew0KICAgICAgbGV0IHsgaWQsIHBhdGggfSA9IGRhdGE7DQogICAgICBsZXQgY3VycmVudFRhZyA9IHRoaXMudGFnc1ZpZXdMaXN0LmZpbmQoKHYpID0+IHYucGF0aCA9PT0gcGF0aCk7DQogICAgICBzd2l0Y2ggKGlkKSB7DQogICAgICAgIGNhc2UgMDoNCiAgICAgICAgICB0aGlzLnJlZnJlc2hDdXJyZW50VGFnc1ZpZXcocGF0aCk7DQogICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goeyBwYXRoLCBxdWVyeTogY3VycmVudFRhZy5xdWVyeSB9KTsNCiAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAxOg0KICAgICAgICAgIHRoaXMuY2xvc2VDdXJyZW50VGFnc1ZpZXcocGF0aCk7DQogICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgMjoNCiAgICAgICAgICB0aGlzLmNsb3NlT3RoZXJUYWdzVmlldyhwYXRoLCBjdXJyZW50VGFnLnF1ZXJ5KTsNCiAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAzOg0KICAgICAgICAgIHRoaXMuY2xvc2VBbGxUYWdzVmlldyhwYXRoKTsNCiAgICAgICAgICBicmVhazsNCiAgICAgIH0NCiAgICB9LA0KICAgIHJlZnJlc2hJY29uKCkgew0KICAgICAgdGhpcy4kbmV4dFRpY2soKGUpID0+IHsNCiAgICAgICAgaWYgKHRoaXMuJHJlZnMudGFnc1ZpZXdzPy5vZmZzZXRXaWR0aCA8IHRoaXMuJHJlZnMuc2Nyb2xsYmFyUmVmLiRyZWZzLndyYXAuc2Nyb2xsV2lkdGgpIHsNCiAgICAgICAgICB0aGlzLnNjcm9sbFRhZ0ljb24gPSB0cnVlOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuc2Nyb2xsVGFnSWNvbiA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8vIDHjgIHliLfmlrDlvZPliY0gdGFnc1ZpZXfvvJoNCiAgICByZWZyZXNoQ3VycmVudFRhZ3NWaWV3KHBhdGgpIHsNCiAgICAgIHRoaXMuYnVzLiRlbWl0KCdvblRhZ3NWaWV3UmVmcmVzaFJvdXRlclZpZXcnLCBwYXRoKTsNCiAgICB9LA0KICAgIC8vIDLjgIHlhbPpl63lvZPliY0gdGFnc1ZpZXfvvJrlvZPliY3pobkgYHRhZ3Mtdmlld2AgaWNvbiDlhbPpl63ml7bngrnlh7vvvIzlpoLmnpzmmK/orr7nva7kuoblm7rlrprnmoTvvIhpc0FmZml477yJ77yM5LiN5Y+v5Lul5YWz6ZetDQogICAgY2xvc2VDdXJyZW50VGFnc1ZpZXcocGF0aCkgew0KICAgICAgdGhpcy50YWdzVmlld0xpc3QubWFwKCh2LCBrLCBhcnIpID0+IHsNCiAgICAgICAgaWYgKCF2Lm1ldGEuaXNBZmZpeCkgew0KICAgICAgICAgIGlmICh2LnBhdGggPT09IHBhdGgpIHsNCiAgICAgICAgICAgIHRoaXMudGFnc1ZpZXdMaXN0LnNwbGljZShrLCAxKTsNCiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gew0KICAgICAgICAgICAgICAvLyDmnIDlkI7kuIDkuKoNCiAgICAgICAgICAgICAgaWYgKHRoaXMudGFnc1ZpZXdMaXN0Lmxlbmd0aCA9PT0gaykNCiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7IHBhdGg6IGFyclthcnIubGVuZ3RoIC0gMV0ucGF0aCwgcXVlcnk6IGFyclthcnIubGVuZ3RoIC0gMV0ucXVlcnkgfSk7DQogICAgICAgICAgICAgIC8vIOWQpuWIme+8jOi3s+i9rOWIsOS4i+S4gOS4qg0KICAgICAgICAgICAgICBlbHNlIHRoaXMuJHJvdXRlci5wdXNoKHsgcGF0aDogYXJyW2tdLnBhdGgsIHF1ZXJ5OiBhcnJba10ucXVlcnkgfSk7DQogICAgICAgICAgICB9LCAwKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgICAgdGhpcy5zZXRUYWdOYXZMaXN0KHRoaXMudGFnc1ZpZXdMaXN0KTsNCiAgICAgIC8vICAgdGhpcy5hZGRCcm93c2VyU2V0U2Vzc2lvbih0aGlzLnRhZ05hdkxpc3QpOw0KICAgIH0sDQogICAgLy8gM+OAgeWFs+mXreWFtuWugyB0YWdzVmlld++8muWmguaenOaYr+iuvue9ruS6huWbuuWumueahO+8iGlzQWZmaXjvvInvvIzkuI3ov5vooYzlhbPpl60NCiAgICBjbG9zZU90aGVyVGFnc1ZpZXcocGF0aCwgcXVlcnkpIHsNCiAgICAgIGxldCB0YWdzVmlld0xpc3QgPSBbXTsNCiAgICAgIHRoaXMudGFnc1ZpZXdSb3V0ZXNMaXN0Lm1hcCgodikgPT4gew0KICAgICAgICBpZiAoKHYubWV0YSAmJiB2Lm1ldGEuaXNBZmZpeCkgfHwgdi5wYXRoID09PSBwYXRoKSB7DQogICAgICAgICAgdGFnc1ZpZXdMaXN0LnB1c2goeyAuLi52IH0pOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICAgIHRoaXMuYWRkQnJvd3NlclNldFNlc3Npb24odGFnc1ZpZXdMaXN0KTsNCiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHsgcGF0aCwgcXVlcnkgfSk7DQoNCiAgICAgIC8vIHRoaXMuYWRkVGFnc1ZpZXcocGF0aCk7DQogICAgfSwNCiAgICAvLyA044CB5YWz6Zet5YWo6YOoIHRhZ3NWaWV377ya5aaC5p6c5piv6K6+572u5LqG5Zu65a6a55qE77yIaXNBZmZpeO+8ie+8jOS4jei/m+ihjOWFs+mXrQ0KICAgIGNsb3NlQWxsVGFnc1ZpZXcocGF0aCkgew0KICAgICAgbGV0IHRhZ3NWaWV3TGlzdCA9IFtdOw0KICAgICAgdGhpcy50YWdzVmlld1JvdXRlc0xpc3QubWFwKCh2KSA9PiB7DQogICAgICAgIGlmICh2Lm1ldGEuaXNBZmZpeCkgew0KICAgICAgICAgIHRhZ3NWaWV3TGlzdC5wdXNoKHsgLi4udiB9KTsNCiAgICAgICAgICBpZiAodGFnc1ZpZXdMaXN0LnNvbWUoKHYpID0+IHYucGF0aCA9PT0gcGF0aCkpIHRoaXMuJHJvdXRlci5wdXNoKHsgcGF0aCwgcXVlcnk6IHRoaXMuJHJvdXRlLnF1ZXJ5IH0pOw0KICAgICAgICAgIGVsc2UgdGhpcy4kcm91dGVyLnB1c2goeyBwYXRoOiB2LnBhdGgsIHF1ZXJ5OiB0aGlzLiRyb3V0ZS5xdWVyeSB9KTsNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgICB0aGlzLmFkZEJyb3dzZXJTZXRTZXNzaW9uKHRhZ3NWaWV3TGlzdCk7DQogICAgfSwNCiAgfSwNCiAgd2F0Y2g6IHsNCiAgICAvLyDnm5HlkKzot6/nlLHlj5jljJYNCiAgICAkcm91dGU6IHsNCiAgICAgIGhhbmRsZXIodG8pIHsNCiAgICAgICAgdGhpcy50YWdzUm91dGVQYXRoID0gdG8ucGF0aDsNCiAgICAgICAgdGhpcy5hZGRUYWdzVmlldyh0by5wYXRoLCB0byk7DQogICAgICAgIHRoaXMuZ2V0VGFnc1JlZnNJbmRleCh0by5wYXRoKTsNCiAgICAgICAgdGhpcy50YWdzVmlld21vdmVUb0N1cnJlbnRUYWcoKTsNCiAgICAgICAgdGhpcy5yZWZyZXNoSWNvbigpOw0KICAgICAgfSwNCiAgICAgIGRlZXA6IHRydWUsDQogICAgfSwNCiAgfSwNCiAgZGVzdHJveWVkKCkgew0KICAgIC8vIOWPlua2iOmdnuacrOmhtemdouiwg+eUqOebkeWQrO+8iGZ1bi90YWdzVmlld++8iQ0KICAgIHRoaXMuYnVzLiRvZmYoJ29uQ3VycmVudENvbnRleHRtZW51Q2xpY2snKTsNCiAgfSwNCn07DQo="},{"version":3,"sources":["tagsView.vue"],"names":[],"mappings":";AAmDA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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","file":"tagsView.vue","sourceRoot":"src/layout/navBars/tagsView","sourcesContent":["<template>\r\n <div ref=\"tagsViews\" class=\"layout-navbars-tagsview\">\r\n <i v-if=\"scrollTagIcon\" class=\"direction el-icon-arrow-left\" v-db-click @click=\"scrollTag('left')\"></i>\r\n <el-scrollbar ref=\"scrollbarRef\" @wheel.native.prevent=\"onHandleScroll\">\r\n <ul class=\"layout-navbars-tagsview-ul\" :class=\"setTagsStyle\" ref=\"tagsUlRef\">\r\n <li\r\n v-for=\"(v, k) in tagsViewList\"\r\n :key=\"k\"\r\n class=\"layout-navbars-tagsview-ul-li\"\r\n :data-name=\"v.name\"\r\n :class=\"{ 'is-active': v.path === tagsRoutePath }\"\r\n @contextmenu.prevent=\"onContextmenu(v, $event)\"\r\n v-db-click\r\n @click=\"onTagsClick(v, k)\"\r\n ref=\"tagsRefs\"\r\n >\r\n <i\r\n class=\"layout-navbars-tagsview-ul-li-iconfont font14 is-tagsview-icon\"\r\n :class=\"v.icon\"\r\n v-if=\"v.path !== tagsRoutePath && getThemeConfig.isTagsviewIcon\"\r\n ></i>\r\n <span>{{ $t(v.meta.title) }}</span>\r\n <!-- <i\r\n class=\"el-icon-refresh-right layout-navbars-tagsview-ul-li-icon ml5\"\r\n v-if=\"v.path === tagsRoutePath\"\r\n v-db-click @click.stop=\"refreshCurrentTagsView(v.path)\"\r\n ></i> -->\r\n <i\r\n class=\"el-icon-close layout-navbars-tagsview-ul-li-icon ml5\"\r\n v-if=\"!v.isAffix\"\r\n v-db-click\r\n @click.stop=\"closeCurrentTagsView(v.path)\"\r\n ></i>\r\n </li>\r\n </ul>\r\n </el-scrollbar>\r\n <i v-if=\"scrollTagIcon\" class=\"direction el-icon-arrow-right\" v-db-click @click=\"scrollTag('right')\"></i>\r\n <el-dropdown @command=\"clickDropdown\" v-if=\"tagsViewList.length > 2\">\r\n <span class=\"setting-tag el-dropdown-link\"><i class=\"el-icon-menu\"></i></span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item v-for=\"item in dropdownList\" :command=\"item.id\" :key=\"item.id\">\r\n <i :class=\"item.icon\"></i>\r\n {{ $t(item.txt) }}</el-dropdown-item\r\n >\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <Contextmenu :dropdown=\"tagsDropdown\" ref=\"tagsContextmenu\" @currentContextmenuClick=\"onCurrentContextmenuClick\" />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Contextmenu from '@/layout/navBars/tagsView/contextmenu';\r\nimport { Session } from '@/utils/storage.js';\r\nimport { mapMutations } from 'vuex';\r\nimport setting from '@/setting';\r\n\r\nexport default {\r\n name: 'tagsView',\r\n components: { Contextmenu },\r\n data() {\r\n return {\r\n userInfo: {},\r\n // tagsViewList: [],\r\n tagsDropdown: {\r\n x: '',\r\n y: '',\r\n },\r\n tagsRefsIndex: 0,\r\n tagsRoutePath: this.$route.path,\r\n // tagsViewRoutesList: [],\r\n dropdownList: [\r\n { id: 0, txt: 'message.tagsView.refresh', affix: false, icon: 'el-icon-refresh-right' },\r\n { id: 1, txt: 'message.tagsView.close', affix: false, icon: 'el-icon-close' },\r\n { id: 2, txt: 'message.tagsView.closeOther', affix: false, icon: 'el-icon-circle-close' },\r\n { id: 3, txt: 'message.tagsView.closeAll', affix: false, icon: 'el-icon-folder-delete' },\r\n ],\r\n scrollTagIcon: false,\r\n };\r\n },\r\n computed: {\r\n // 获取布局配置信息\r\n getThemeConfig() {\r\n return this.$store.state.themeConfig.themeConfig;\r\n },\r\n // 动态设置 tagsView 风格样式\r\n setTagsStyle() {\r\n return this.$store.state.themeConfig.themeConfig.tagsStyle;\r\n },\r\n tagsViewList() {\r\n return this.$store.state.app.tagNavList;\r\n },\r\n tagsViewRoutesList() {\r\n return this.$store.state.app.tagNavList;\r\n },\r\n },\r\n created() {\r\n // 监听非本页面调用 0 刷新当前,1 关闭当前,2 关闭其它,3 关闭全部\r\n this.bus.$on('onCurrentContextmenuClick', (data) => {\r\n this.onCurrentContextmenuClick(data);\r\n });\r\n },\r\n mounted() {\r\n if (!this.$store.state.app.tagNavList.length) {\r\n this.getTagsViewRoutes();\r\n }\r\n if (this.$refs.tagsViews?.offsetWidth < this.$refs.scrollbarRef.$refs.wrap.scrollWidth) {\r\n this.scrollTagIcon = true;\r\n }\r\n window.addEventListener('resize', () => {\r\n if (this.$refs.tagsViews?.offsetWidth < this.$refs.scrollbarRef.$refs.wrap.scrollWidth) {\r\n this.scrollTagIcon = true;\r\n } else {\r\n this.scrollTagIcon = false;\r\n }\r\n });\r\n },\r\n methods: {\r\n ...mapMutations(['setBreadCrumb', 'setTagNavList', 'addTag', 'setLocal', 'setHomeRoute', 'closeTag']),\r\n clickDropdown(e) {\r\n let data = { id: e, path: this.$route.path };\r\n this.onCurrentContextmenuClick(data);\r\n },\r\n // 获取路由信息\r\n getRoutesList() {\r\n return this.$store.state.routesList.routesList;\r\n },\r\n // 当前的 tagsView 项点击时\r\n onTagsClick(v, k) {\r\n this.tagsRoutePath = v.path;\r\n this.tagsRefsIndex = k;\r\n this.$router.push(v);\r\n },\r\n // 获取 tagsView 的下标:用于处理 tagsView 点击时的横向滚动\r\n getTagsRefsIndex(path) {\r\n if (this.tagsViewList.length > 0) {\r\n this.tagsRefsIndex = this.tagsViewList.findIndex((item) => item.path === path);\r\n }\r\n },\r\n // 鼠标滚轮滚动\r\n onHandleScroll(e) {\r\n this.$refs.scrollbarRef.$refs.wrap.scrollLeft += e.wheelDelta / 4;\r\n },\r\n scrollTag(production) {\r\n let scrollRefs = this.$refs.scrollbarRef.$refs.wrap.scrollWidth;\r\n let scrollLeft = this.$refs.scrollbarRef.$refs.wrap.scrollLeft;\r\n if (production === 'left') {\r\n this.$refs.scrollbarRef.$refs.wrap.scrollLeft = scrollLeft - 300 <= 0 ? 0 : scrollLeft - 300;\r\n } else {\r\n this.$refs.scrollbarRef.$refs.wrap.scrollLeft = scrollLeft + 300 >= scrollRefs ? scrollRefs : scrollLeft + 300;\r\n }\r\n },\r\n // tagsView 横向滚动\r\n tagsViewmoveToCurrentTag() {\r\n this.$nextTick(() => {\r\n const tagsRefs = this.$refs.tagsRefs;\r\n if (!tagsRefs) return;\r\n if (tagsRefs.length <= 0) return false;\r\n // 当前 li 元素\r\n let liDom = tagsRefs[this.tagsRefsIndex];\r\n // 当前 li 元素下标\r\n let liIndex = this.tagsRefsIndex;\r\n // 当前 ul 下 li 元素总长度\r\n let liLength = tagsRefs.length;\r\n // 最前 li\r\n let liFirst = tagsRefs[0];\r\n // 最后 li\r\n let liLast = tagsRefs[tagsRefs.length - 1];\r\n // 当前滚动条的值\r\n let scrollRefs = this.$refs.scrollbarRef.$refs.wrap;\r\n // 当前滚动条滚动宽度\r\n let scrollS = scrollRefs.scrollWidth;\r\n // 当前滚动条偏移宽度\r\n let offsetW = scrollRefs.offsetWidth;\r\n // 当前滚动条偏移距离\r\n let scrollL = scrollRefs.scrollLeft;\r\n // 上一个 tags li dom\r\n let liPrevTag = tagsRefs[this.tagsRefsIndex - 1];\r\n // 下一个 tags li dom\r\n let liNextTag = tagsRefs[this.tagsRefsIndex + 1];\r\n // 上一个 tags li dom 的偏移距离\r\n let beforePrevL = '';\r\n // 下一个 tags li dom 的偏移距离\r\n let afterNextL = '';\r\n if (liDom === liFirst) {\r\n // 头部\r\n scrollRefs.scrollLeft = 0;\r\n } else if (liDom === liLast) {\r\n // 尾部\r\n scrollRefs.scrollLeft = scrollS - offsetW;\r\n } else {\r\n // 非头/尾部\r\n if (liIndex === 0) beforePrevL = liFirst?.offsetLeft - 5;\r\n else beforePrevL = liPrevTag?.offsetLeft - 5;\r\n if (liIndex === liLength) afterNextL = liLast?.offsetLeft + liLast.offsetWidth + 5;\r\n else afterNextL = liNextTag?.offsetLeft + liNextTag.offsetWidth + 5;\r\n if (afterNextL > scrollL + offsetW) {\r\n scrollRefs.scrollLeft = afterNextL - offsetW;\r\n } else if (beforePrevL < scrollL) {\r\n scrollRefs.scrollLeft = beforePrevL;\r\n }\r\n }\r\n // 更新滚动条,防止不出现\r\n this.updateScrollbar();\r\n });\r\n },\r\n // 更新滚动条显示\r\n updateScrollbar() {\r\n this.$refs.scrollbarRef.update();\r\n },\r\n // 递归查找当前路径下的组件信息\r\n filterCurrentMenu(arr, currentPath, callback) {\r\n arr.map((item) => {\r\n if (item.path === currentPath) {\r\n callback(item);\r\n return false;\r\n }\r\n item = Object.assign({}, item);\r\n if (item.children) {\r\n item.children = this.filterCurrentMenu(item.children, currentPath, callback);\r\n }\r\n });\r\n },\r\n // 数组对象去重\r\n duplicate(arr) {\r\n let newobj = {};\r\n arr = arr.reduce((preVal, curVal) => {\r\n newobj[curVal.path] ? '' : (newobj[curVal.path] = preVal.push(curVal));\r\n return preVal;\r\n }, []);\r\n return arr;\r\n },\r\n // 获取 vuex 中的 tagsViewRoutes 列表\r\n getTagsViewRoutes() {\r\n this.tagsRoutePath = this.$route.path;\r\n this.setTagNavList(this.$store.state.menus.oneLvMenus);\r\n\r\n this.initTagsViewList();\r\n },\r\n // 存储 tagsViewList 到浏览器临时缓存中,页面刷新时,保留记录\r\n addBrowserSetSession(tagNavList) {\r\n this.setTagNavList(tagNavList);\r\n },\r\n // 初始化设置了 tagsView 数据\r\n initTagsViewList() {\r\n // if (Session.get('tagsViewList') && this.$store.state.themeConfig.themeConfig.isCacheTagsView) {\r\n // this.tagsViewList = Session.get('tagsViewList');\r\n // } else {\r\n let arr = [];\r\n this.tagsViewRoutesList.map((v) => {\r\n if (v.meta && v.meta.isAffix) arr.push({ ...v });\r\n });\r\n // }\r\n this.setTagNavList(arr);\r\n // 初始化当前元素(li)的下标\r\n this.getTagsRefsIndex(this.$route.path);\r\n // 添加初始化横向滚动条移动到对应位置\r\n this.tagsViewmoveToCurrentTag();\r\n },\r\n // 添加 tagsView:未设置隐藏(isHide)也添加到在 tagsView 中\r\n addTagsView(path, to) {\r\n if (this.tagsViewList.some((v) => v.path === path)) return false;\r\n const item = this.tagsViewRoutesList.find((v) => v.path === path);\r\n if (item.isLink && !item.isIframe) return false;\r\n item.query = to?.query ? to?.query : this.$route.query;\r\n this.tagsViewList.push({ ...item });\r\n this.addBrowserSetSession(this.tagsViewList);\r\n },\r\n // 右键菜单点击时显示菜单列表\r\n onContextmenu(v, e) {\r\n let { clientX, clientY } = e;\r\n this.tagsDropdown.x = clientX;\r\n this.tagsDropdown.y = clientY;\r\n this.$refs.tagsContextmenu.openContextmenu(v);\r\n },\r\n onContextmenuIcon(e) {},\r\n // 当前项右键菜单点击\r\n onCurrentContextmenuClick(data) {\r\n let { id, path } = data;\r\n let currentTag = this.tagsViewList.find((v) => v.path === path);\r\n switch (id) {\r\n case 0:\r\n this.refreshCurrentTagsView(path);\r\n this.$router.push({ path, query: currentTag.query });\r\n break;\r\n case 1:\r\n this.closeCurrentTagsView(path);\r\n break;\r\n case 2:\r\n this.closeOtherTagsView(path, currentTag.query);\r\n break;\r\n case 3:\r\n this.closeAllTagsView(path);\r\n break;\r\n }\r\n },\r\n refreshIcon() {\r\n this.$nextTick((e) => {\r\n if (this.$refs.tagsViews?.offsetWidth < this.$refs.scrollbarRef.$refs.wrap.scrollWidth) {\r\n this.scrollTagIcon = true;\r\n } else {\r\n this.scrollTagIcon = false;\r\n }\r\n });\r\n },\r\n // 1、刷新当前 tagsView:\r\n refreshCurrentTagsView(path) {\r\n this.bus.$emit('onTagsViewRefreshRouterView', path);\r\n },\r\n // 2、关闭当前 tagsView:当前项 `tags-view` icon 关闭时点击,如果是设置了固定的(isAffix),不可以关闭\r\n closeCurrentTagsView(path) {\r\n this.tagsViewList.map((v, k, arr) => {\r\n if (!v.meta.isAffix) {\r\n if (v.path === path) {\r\n this.tagsViewList.splice(k, 1);\r\n setTimeout(() => {\r\n // 最后一个\r\n if (this.tagsViewList.length === k)\r\n this.$router.push({ path: arr[arr.length - 1].path, query: arr[arr.length - 1].query });\r\n // 否则,跳转到下一个\r\n else this.$router.push({ path: arr[k].path, query: arr[k].query });\r\n }, 0);\r\n }\r\n }\r\n });\r\n this.setTagNavList(this.tagsViewList);\r\n // this.addBrowserSetSession(this.tagNavList);\r\n },\r\n // 3、关闭其它 tagsView:如果是设置了固定的(isAffix),不进行关闭\r\n closeOtherTagsView(path, query) {\r\n let tagsViewList = [];\r\n this.tagsViewRoutesList.map((v) => {\r\n if ((v.meta && v.meta.isAffix) || v.path === path) {\r\n tagsViewList.push({ ...v });\r\n }\r\n });\r\n this.addBrowserSetSession(tagsViewList);\r\n this.$router.push({ path, query });\r\n\r\n // this.addTagsView(path);\r\n },\r\n // 4、关闭全部 tagsView:如果是设置了固定的(isAffix),不进行关闭\r\n closeAllTagsView(path) {\r\n let tagsViewList = [];\r\n this.tagsViewRoutesList.map((v) => {\r\n if (v.meta.isAffix) {\r\n tagsViewList.push({ ...v });\r\n if (tagsViewList.some((v) => v.path === path)) this.$router.push({ path, query: this.$route.query });\r\n else this.$router.push({ path: v.path, query: this.$route.query });\r\n }\r\n });\r\n this.addBrowserSetSession(tagsViewList);\r\n },\r\n },\r\n watch: {\r\n // 监听路由变化\r\n $route: {\r\n handler(to) {\r\n this.tagsRoutePath = to.path;\r\n this.addTagsView(to.path, to);\r\n this.getTagsRefsIndex(to.path);\r\n this.tagsViewmoveToCurrentTag();\r\n this.refreshIcon();\r\n },\r\n deep: true,\r\n },\r\n },\r\n destroyed() {\r\n // 取消非本页面调用监听(fun/tagsView)\r\n this.bus.$off('onCurrentContextmenuClick');\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-dropdown-menu {\r\n width: 130px;\r\n}\r\n.setting-tag {\r\n padding: 0 10px;\r\n cursor: pointer;\r\n}\r\n.direction {\r\n padding: 0 3px;\r\n}\r\n.direction:hover {\r\n line-height: 34px;\r\n background-color: #f7f2f2;\r\n cursor: pointer;\r\n transition: all 0.3s;\r\n}\r\n.layout-navbars-tagsview {\r\n flex: 1;\r\n z-index: 10;\r\n background-color: var(--prev-bg-white);\r\n -webkit-box-shadow: 0 1px 4px rgba(113, 128, 165, 0.1);\r\n box-shadow: 0 1px 4px rgba(113, 128, 165, 0.1);\r\n display: flex;\r\n align-items: center;\r\n & ::v-deep .is-vertical {\r\n display: none !important;\r\n }\r\n &-ul {\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n // width: 100%;\r\n height: 34px;\r\n display: flex;\r\n align-items: center;\r\n white-space: nowrap;\r\n color: var(--prev-color-text-regular);\r\n font-size: 12px;\r\n padding: 0 15px;\r\n &-li {\r\n height: 26px;\r\n line-height: 26px;\r\n display: flex;\r\n align-items: center;\r\n border: 1px solid #ebeef5;\r\n padding: 0 12px 0 15px;\r\n margin-right: 5px;\r\n border-radius: 2px;\r\n position: relative;\r\n z-index: 0;\r\n cursor: pointer;\r\n justify-content: space-between;\r\n transition: all 0.3s cubic-bezier(0.2, 1, 0.3, 1);\r\n &::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: var(--prev-tag-active-color);\r\n z-index: -1;\r\n opacity: 0;\r\n // transform: scale3d(0.7, 1, 1);\r\n // transition: transform 0.3s, opacity 0.3s;\r\n // transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);\r\n }\r\n &:hover {\r\n color: var(--prev-color-primary-light-9);\r\n transition: all 0.3s cubic-bezier(0.2, 1, 0.3, 1);\r\n border-color: transparent;\r\n &::before {\r\n opacity: 1;\r\n transform: translate3d(0, 0, 0);\r\n border-radius: 2px;\r\n }\r\n .is-tagsview-icon {\r\n color: var(--prev-color-primary-light-9);\r\n\r\n transition: all 0.3s cubic-bezier(0.2, 1, 0.3, 1);\r\n }\r\n }\r\n &-iconfont {\r\n position: relative;\r\n left: -5px;\r\n top: 1px;\r\n color: var(--prev-color-primary-light-9);\r\n }\r\n &-icon {\r\n border-radius: 100%;\r\n position: relative;\r\n height: 14px;\r\n width: 14px;\r\n text-align: center;\r\n line-height: 14px;\r\n top: 0px;\r\n }\r\n .is-tagsview-icon {\r\n color: var(--prev-color-text-regular);\r\n transition: all 0.3s cubic-bezier(0.2, 1, 0.3, 1);\r\n }\r\n }\r\n .is-active {\r\n color: var(--prev-color-primary-light-3);\r\n transition: all 0.3s cubic-bezier(0.2, 1, 0.3, 1);\r\n border-color: transparent;\r\n &::before {\r\n opacity: 1;\r\n transform: translate3d(0, 0, 0);\r\n border-radius: 2px;\r\n }\r\n }\r\n }\r\n & ::-webkit-scrollbar {\r\n display: none !important;\r\n }\r\n // // 风格2\r\n // .tags-style-two {\r\n // }\r\n // // 风格3\r\n // .tags-style-three {\r\n // }\r\n // // 风格4\r\n // 风格1\r\n .tags-style-one {\r\n .is-active {\r\n background: none !important;\r\n color: #fff !important;\r\n }\r\n }\r\n // 风格4\r\n .tags-style-four {\r\n .layout-navbars-tagsview-ul-li {\r\n margin-right: 0 !important;\r\n border: none !important;\r\n position: relative;\r\n border-radius: 3px !important;\r\n\r\n .layout-icon-active {\r\n display: none;\r\n }\r\n .layout-icon-three {\r\n display: block;\r\n }\r\n &:hover {\r\n background: none !important;\r\n }\r\n }\r\n .is-active {\r\n background: none !important;\r\n color: #fff !important;\r\n }\r\n }\r\n // 风格5\r\n .tags-style-five {\r\n align-items: flex-end;\r\n .tags-style-five-svg {\r\n -webkit-mask-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzAiIGhlaWdodD0iNzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSI+CgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKC0wLjEzMzUwNiA1MC4xMTkyIDUwKSIgaWQ9InN2Z18xIiBkPSJtMTAwLjExOTE5LDEwMGMtNTUuMjI4LDAgLTEwMCwtNDQuNzcyIC0xMDAsLTEwMGwwLDEwMGwxMDAsMHoiIG9wYWNpdHk9InVuZGVmaW5lZCIgc3Ryb2tlPSJudWxsIiBmaWxsPSIjRjhFQUU3Ii8+CiAgPHBhdGggZD0ibS0wLjYzNzY2LDcuMzEyMjhjMC4xMTkxOSwwIDAuMjE3MzcsMC4wNTc5NiAwLjQ3Njc2LDAuMTE5MTljMC4yMzIsMC4wNTQ3NyAwLjI3MzI5LDAuMDM0OTEgMC4zNTc1NywwLjExOTE5YzAuMDg0MjgsMC4wODQyOCAwLjM1NzU3LDAgMC40NzY3NiwwbDAuMTE5MTksMGwwLjIzODM4LDAiIGlkPSJzdmdfMiIgc3Ryb2tlPSJudWxsIiBmaWxsPSJub25lIi8+CiAgPHBhdGggZD0ibTI4LjkyMTM0LDY5LjA1MjQ0YzAsMC4xMTkxOSAwLDAuMjM4MzggMCwwLjM1NzU3bDAsMC4xMTkxOWwwLDAuMTE5MTkiIGlkPSJzdmdfMyIgc3Ryb2tlPSJudWxsIiBmaWxsPSJub25lIi8+CiAgPHJlY3QgaWQ9InN2Z180IiBoZWlnaHQ9IjAiIHdpZHRoPSIxLjMxMTA4IiB5PSI2LjgzNTUyIiB4PSItMC4wNDE3MSIgc3Ryb2tlPSJudWxsIiBmaWxsPSJub25lIi8+CiAgPHJlY3QgaWQ9InN2Z181IiBoZWlnaHQ9IjEuNzg3ODQiIHdpZHRoPSIwLjExOTE5IiB5PSI2OC40NTY1IiB4PSIyOC45MjEzNCIgc3Ryb2tlPSJudWxsIiBmaWxsPSJub25lIi8+CiAgPHJlY3QgaWQ9InN2Z182IiBoZWlnaHQ9IjQuODg2NzciIHdpZHRoPSIxOS4wNzAzMiIgeT0iNTEuMjkzMjEiIHg9IjM2LjY2ODY2IiBzdHJva2U9Im51bGwiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+'),\r\n url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzAiIGhlaWdodD0iNzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSI+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPHBhdGggdHJhbnNmb3JtPSJyb3RhdGUoLTg5Ljc2MjQgNy4zMzAxNCA1NS4xMjUyKSIgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzEiIGZpbGw9IiNGOEVBRTciIGQ9Im02Mi41NzQ0OSwxMTcuNTIwODZjLTU1LjIyOCwwIC0xMDAsLTQ0Ljc3MiAtMTAwLC0xMDBsMCwxMDBsMTAwLDB6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPgogIDxwYXRoIGQ9Im0tMC42Mzc2Niw3LjMxMjI4YzAuMTE5MTksMCAwLjIxNzM3LDAuMDU3OTYgMC40NzY3NiwwLjExOTE5YzAuMjMyLDAuMDU0NzcgMC4yNzMyOSwwLjAzNDkxIDAuMzU3NTcsMC4xMTkxOWMwLjA4NDI4LDAuMDg0MjggMC4zNTc1NywwIDAuNDc2NzYsMGwwLjExOTE5LDBsMC4yMzgzOCwwIiBpZD0ic3ZnXzIiIHN0cm9rZT0ibnVsbCIgZmlsbD0ibm9uZSIvPgogIDxwYXRoIGQ9Im0yOC45MjEzNCw2OS4wNTI0NGMwLDAuMTE5MTkgMCwwLjIzODM4IDAsMC4zNTc1N2wwLDAuMTE5MTlsMCwwLjExOTE5IiBpZD0ic3ZnXzMiIHN0cm9rZT0ibnVsbCIgZmlsbD0ibm9uZSIvPgogIDxyZWN0IGlkPSJzdmdfNCIgaGVpZ2h0PSIwIiB3aWR0aD0iMS4zMTEwOCIgeT0iNi44MzU1MiIgeD0iLTAuMDQxNzEiIHN0cm9rZT0ibnVsbCIgZmlsbD0ibm9uZSIvPgogIDxyZWN0IGlkPSJzdmdfNSIgaGVpZ2h0PSIxLjc4Nzg0IiB3aWR0aD0iMC4xMTkxOSIgeT0iNjguNDU2NSIgeD0iMjguOTIxMzQiIHN0cm9rZT0ibnVsbCIgZmlsbD0ibm9uZSIvPgogIDxyZWN0IGlkPSJzdmdfNiIgaGVpZ2h0PSI0Ljg4Njc3IiB3aWR0aD0iMTkuMDcwMzIiIHk9IjUxLjI5MzIxIiB4PSIzNi42Njg2NiIgc3Ryb2tlPSJudWxsIiBmaWxsPSJub25lIi8+CiA8L2c+Cjwvc3ZnPg=='),\r\n url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect rx='8' width='100%' height='100%' fill='%23F8EAE7'/></svg>\");\r\n -webkit-mask-size: 18px 30px, 20px 30px, calc(100% - 30px) calc(100% + 17px);\r\n -webkit-mask-position: right bottom, left bottom, center top;\r\n -webkit-mask-repeat: no-repeat;\r\n }\r\n .layout-navbars-tagsview-ul-li {\r\n padding: 0 5px;\r\n border-width: 15px 27px 15px;\r\n border-style: solid;\r\n border-color: transparent;\r\n margin: 0 -15px;\r\n .layout-icon-active,\r\n .layout-navbars-tagsview-ul-li-iconfont,\r\n .layout-navbars-tagsview-ul-li-refresh {\r\n display: none;\r\n }\r\n .layout-icon-three {\r\n display: block;\r\n }\r\n &:hover {\r\n @extend .tags-style-five-svg;\r\n background: var(--prev-color-primary-light-9);\r\n color: unset;\r\n }\r\n }\r\n .is-active {\r\n @extend .tags-style-five-svg;\r\n background: var(--prev-color-primary-light-9) !important;\r\n color: var(--prev-color-primary) !important;\r\n z-index: 1;\r\n }\r\n }\r\n}\r\n</style>\r\n"]}]}
|