3db7143fae001b0fa69d6ec383d19d94.json 19 KB

1
  1. {"remainingRequest":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js!E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\item\\newItem\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\item\\newItem\\admin\\node_modules\\iview-loader\\index.js??ref--0-2!E:\\item\\newItem\\admin\\src\\components\\main\\components\\tags-nav\\tags-nav.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\item\\newItem\\admin\\src\\components\\main\\components\\tags-nav\\tags-nav.vue","mtime":1677828270155},{"path":"E:\\item\\newItem\\admin\\babel.config.js","mtime":1677828270071},{"path":"E:\\item\\newItem\\admin\\.babelrc","mtime":1677828270070},{"path":"E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\iview-loader\\index.js","mtime":1570440814000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwppbXBvcnQgeyBzaG93VGl0bGUsIHJvdXRlRXF1YWwgfSBmcm9tICdAL2xpYnMvdXRpbCc7CmltcG9ydCBiZWZvcmVDbG9zZSBmcm9tICdAL3JvdXRlci9iZWZvcmUtY2xvc2UnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ1RhZ3NOYXYnLAogIHByb3BzOiB7CiAgICB2YWx1ZTogT2JqZWN0LAogICAgbGlzdDogewogICAgICB0eXBlOiBBcnJheSwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgdGFnQm9keUxlZnQ6IDAsCiAgICAgIHJpZ2h0T2Zmc2V0OiA0MCwKICAgICAgb3V0ZXJQYWRkaW5nOiA0LAogICAgICBjb250ZXh0TWVudUxlZnQ6IDAsCiAgICAgIGNvbnRleHRNZW51VG9wOiAwLAogICAgICB2aXNpYmxlOiBmYWxzZSwKICAgICAgbWVudUxpc3Q6IHsKICAgICAgICBvdGhlcnM6ICflhbPpl63lhbbku5YnLAogICAgICAgIGFsbDogJ+WFs+mXreaJgOaciScKICAgICAgfQogICAgfTsKICB9LAogIGNvbXB1dGVkOiB7CiAgICBjdXJyZW50Um91dGVPYmo6IGZ1bmN0aW9uIGN1cnJlbnRSb3V0ZU9iaigpIHsKICAgICAgdmFyIF90aGlzJHZhbHVlID0gdGhpcy52YWx1ZSwKICAgICAgICAgIG5hbWUgPSBfdGhpcyR2YWx1ZS5uYW1lLAogICAgICAgICAgcGFyYW1zID0gX3RoaXMkdmFsdWUucGFyYW1zLAogICAgICAgICAgcXVlcnkgPSBfdGhpcyR2YWx1ZS5xdWVyeTsKICAgICAgcmV0dXJuIHsKICAgICAgICBuYW1lOiBuYW1lLAogICAgICAgIHBhcmFtczogcGFyYW1zLAogICAgICAgIHF1ZXJ5OiBxdWVyeQogICAgICB9OwogICAgfQogIH0sCiAgbWV0aG9kczogewogICAgaGFuZGxlc2Nyb2xsOiBmdW5jdGlvbiBoYW5kbGVzY3JvbGwoZSkgewogICAgICB2YXIgdHlwZSA9IGUudHlwZTsKICAgICAgdmFyIGRlbHRhID0gMDsKCiAgICAgIGlmICh0eXBlID09PSAnRE9NTW91c2VTY3JvbGwnIHx8IHR5cGUgPT09ICdtb3VzZXdoZWVsJykgewogICAgICAgIGRlbHRhID0gZS53aGVlbERlbHRhID8gZS53aGVlbERlbHRhIDogLShlLmRldGFpbCB8fCAwKSAqIDQwOwogICAgICB9CgogICAgICB0aGlzLmhhbmRsZVNjcm9sbChkZWx0YSk7CiAgICB9LAogICAgaGFuZGxlU2Nyb2xsOiBmdW5jdGlvbiBoYW5kbGVTY3JvbGwob2Zmc2V0KSB7CiAgICAgIHZhciBvdXRlcldpZHRoID0gdGhpcy4kcmVmcy5zY3JvbGxPdXRlci5vZmZzZXRXaWR0aDsKICAgICAgdmFyIGJvZHlXaWR0aCA9IHRoaXMuJHJlZnMuc2Nyb2xsQm9keS5vZmZzZXRXaWR0aDsKCiAgICAgIGlmIChvZmZzZXQgPiAwKSB7CiAgICAgICAgdGhpcy50YWdCb2R5TGVmdCA9IE1hdGgubWluKDAsIHRoaXMudGFnQm9keUxlZnQgKyBvZmZzZXQpOwogICAgICB9IGVsc2UgewogICAgICAgIGlmIChvdXRlcldpZHRoIDwgYm9keVdpZHRoKSB7CiAgICAgICAgICBpZiAodGhpcy50YWdCb2R5TGVmdCA8IC0oYm9keVdpZHRoIC0gb3V0ZXJXaWR0aCkpIHsKICAgICAgICAgICAgdGhpcy50YWdCb2R5TGVmdCA9IHRoaXMudGFnQm9keUxlZnQ7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLnRhZ0JvZHlMZWZ0ID0gTWF0aC5tYXgodGhpcy50YWdCb2R5TGVmdCArIG9mZnNldCwgb3V0ZXJXaWR0aCAtIGJvZHlXaWR0aCk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMudGFnQm9keUxlZnQgPSAwOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGhhbmRsZVRhZ3NPcHRpb246IGZ1bmN0aW9uIGhhbmRsZVRhZ3NPcHRpb24odHlwZSkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ2FsbCcpKSB7CiAgICAgICAgLy8g5YWz6Zet5omA5pyJ77yM6Zmk5LqGaG9tZQogICAgICAgIHZhciByZXMgPSB0aGlzLmxpc3QuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lID09PSBfdGhpcy4kY29uZmlnLmhvbWVOYW1lOwogICAgICAgIH0pOwogICAgICAgIHRoaXMuJGVtaXQoJ29uLWNsb3NlJywgcmVzLCAnYWxsJyk7CiAgICAgIH0gZWxzZSBpZiAodHlwZS5pbmNsdWRlcygnb3RoZXJzJykpIHsKICAgICAgICAvLyDlhbPpl63pmaTlvZPliY3pobXlkoxob21l6aG155qE5YW25LuW6aG1CiAgICAgICAgdmFyIF9yZXMgPSB0aGlzLmxpc3QuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gcm91dGVFcXVhbChfdGhpcy5jdXJyZW50Um91dGVPYmosIGl0ZW0pIHx8IGl0ZW0ubmFtZSA9PT0gX3RoaXMuJGNvbmZpZy5ob21lTmFtZTsKICAgICAgICB9KTsKCiAgICAgICAgdGhpcy4kZW1pdCgnb24tY2xvc2UnLCBfcmVzLCAnb3RoZXJzJywgdGhpcy5jdXJyZW50Um91dGVPYmopOwogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgX3RoaXMuZ2V0VGFnRWxlbWVudEJ5Um91dGUoX3RoaXMuY3VycmVudFJvdXRlT2JqKTsKICAgICAgICB9LCAxMDApOwogICAgICB9CiAgICB9LAogICAgaGFuZGxlQ2xvc2U6IGZ1bmN0aW9uIGhhbmRsZUNsb3NlKGN1cnJlbnQpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgICBpZiAoY3VycmVudC5tZXRhICYmIGN1cnJlbnQubWV0YS5iZWZvcmVDbG9zZU5hbWUgJiYgY3VycmVudC5tZXRhLmJlZm9yZUNsb3NlTmFtZSBpbiBiZWZvcmVDbG9zZSkgewogICAgICAgIG5ldyBQcm9taXNlKGJlZm9yZUNsb3NlW2N1cnJlbnQubWV0YS5iZWZvcmVDbG9zZU5hbWVdKS50aGVuKGZ1bmN0aW9uIChjbG9zZSkgewogICAgICAgICAgaWYgKGNsb3NlKSB7CiAgICAgICAgICAgIF90aGlzMi5jbG9zZShjdXJyZW50KTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmNsb3NlKGN1cnJlbnQpOwogICAgICB9CiAgICB9LAogICAgY2xvc2U6IGZ1bmN0aW9uIGNsb3NlKHJvdXRlKSB7CiAgICAgIHZhciByZXMgPSB0aGlzLmxpc3QuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuICFyb3V0ZUVxdWFsKHJvdXRlLCBpdGVtKTsKICAgICAgfSk7CiAgICAgIHRoaXMuJGVtaXQoJ29uLWNsb3NlJywgcmVzLCB1bmRlZmluZWQsIHJvdXRlKTsKICAgIH0sCiAgICBoYW5kbGVDbGljazogZnVuY3Rpb24gaGFuZGxlQ2xpY2soaXRlbSkgewogICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIGl0ZW0pOwogICAgfSwKICAgIHNob3dUaXRsZUluc2lkZTogZnVuY3Rpb24gc2hvd1RpdGxlSW5zaWRlKGl0ZW0pIHsKICAgICAgcmV0dXJuIHNob3dUaXRsZShpdGVtLCB0aGlzKTsKICAgIH0sCiAgICBpc0N1cnJlbnRUYWc6IGZ1bmN0aW9uIGlzQ3VycmVudFRhZyhpdGVtKSB7CiAgICAgIHJldHVybiByb3V0ZUVxdWFsKHRoaXMuY3VycmVudFJvdXRlT2JqLCBpdGVtKTsKICAgIH0sCiAgICBtb3ZlVG9WaWV3OiBmdW5jdGlvbiBtb3ZlVG9WaWV3KHRhZykgewogICAgICB2YXIgb3V0ZXJXaWR0aCA9IHRoaXMuJHJlZnMuc2Nyb2xsT3V0ZXIub2Zmc2V0V2lkdGg7CiAgICAgIHZhciBib2R5V2lkdGggPSB0aGlzLiRyZWZzLnNjcm9sbEJvZHkub2Zmc2V0V2lkdGg7CgogICAgICBpZiAoYm9keVdpZHRoIDwgb3V0ZXJXaWR0aCkgewogICAgICAgIHRoaXMudGFnQm9keUxlZnQgPSAwOwogICAgICB9IGVsc2UgaWYgKHRhZy5vZmZzZXRMZWZ0IDwgLXRoaXMudGFnQm9keUxlZnQpIHsKICAgICAgICAvLyDmoIfnrb7lnKjlj6/op4bljLrln5/lt6bkvqcKICAgICAgICB0aGlzLnRhZ0JvZHlMZWZ0ID0gLXRhZy5vZmZzZXRMZWZ0ICsgdGhpcy5vdXRlclBhZGRpbmc7CiAgICAgIH0gZWxzZSBpZiAodGFnLm9mZnNldExlZnQgPiAtdGhpcy50YWdCb2R5TGVmdCAmJiB0YWcub2Zmc2V0TGVmdCArIHRhZy5vZmZzZXRXaWR0aCA8IC10aGlzLnRhZ0JvZHlMZWZ0ICsgb3V0ZXJXaWR0aCkgewogICAgICAgIC8vIOagh+etvuWcqOWPr+inhuWMuuWfnwogICAgICAgIHRoaXMudGFnQm9keUxlZnQgPSBNYXRoLm1pbigwLCBvdXRlcldpZHRoIC0gdGFnLm9mZnNldFdpZHRoIC0gdGFnLm9mZnNldExlZnQgLSB0aGlzLm91dGVyUGFkZGluZyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8g5qCH562+5Zyo5Y+v6KeG5Yy65Z+f5Y+z5L6nCiAgICAgICAgdGhpcy50YWdCb2R5TGVmdCA9IC0odGFnLm9mZnNldExlZnQgLSAob3V0ZXJXaWR0aCAtIHRoaXMub3V0ZXJQYWRkaW5nIC0gdGFnLm9mZnNldFdpZHRoKSk7CiAgICAgIH0KICAgIH0sCiAgICBnZXRUYWdFbGVtZW50QnlSb3V0ZTogZnVuY3Rpb24gZ2V0VGFnRWxlbWVudEJ5Um91dGUocm91dGUpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CgogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMzLnJlZnNUYWcgPSBfdGhpczMuJHJlZnMudGFnc1BhZ2VPcGVuZWQ7CgogICAgICAgIF90aGlzMy5yZWZzVGFnLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7CiAgICAgICAgICBpZiAocm91dGVFcXVhbChyb3V0ZSwgaXRlbS4kYXR0cnNbJ2RhdGEtcm91dGUtaXRlbSddKSkgewogICAgICAgICAgICB2YXIgdGFnID0gX3RoaXMzLnJlZnNUYWdbaW5kZXhdLiRlbDsKCiAgICAgICAgICAgIF90aGlzMy5tb3ZlVG9WaWV3KHRhZyk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIGNvbnRleHRNZW51OiBmdW5jdGlvbiBjb250ZXh0TWVudShpdGVtLCBlKSB7CiAgICAgIGlmIChpdGVtLm5hbWUgPT09IHRoaXMuJGNvbmZpZy5ob21lTmFtZSkgewogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTsKICAgICAgdmFyIG9mZnNldExlZnQgPSB0aGlzLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0OwogICAgICB0aGlzLmNvbnRleHRNZW51TGVmdCA9IGUuY2xpZW50WCAtIG9mZnNldExlZnQgKyAxMDsKICAgICAgdGhpcy5jb250ZXh0TWVudVRvcCA9IGUuY2xpZW50WSAtIDY0OwogICAgfSwKICAgIGNsb3NlTWVudTogZnVuY3Rpb24gY2xvc2VNZW51KCkgewogICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTsKICAgIH0KICB9LAogIHdhdGNoOiB7CiAgICAkcm91dGU6IGZ1bmN0aW9uICRyb3V0ZSh0bykgewogICAgICB0aGlzLmdldFRhZ0VsZW1lbnRCeVJvdXRlKHRvKTsKICAgIH0sCiAgICB2aXNpYmxlOiBmdW5jdGlvbiB2aXNpYmxlKHZhbHVlKSB7CiAgICAgIGlmICh2YWx1ZSkgewogICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsb3NlTWVudSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xvc2VNZW51KTsKICAgICAgfQogICAgfQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpczQgPSB0aGlzOwoKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICBfdGhpczQuZ2V0VGFnRWxlbWVudEJ5Um91dGUoX3RoaXM0LiRyb3V0ZSk7CiAgICB9LCAyMDApOwogIH0KfTs="},{"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA;AACA;AACA;EACAA,eADA;EAEAC;IACAC,aADA;IAEAC;MACAC,WADA;MAEAC,OAFA,sBAEA;QACA;MACA;IAJA;EAFA,CAFA;EAWAC,IAXA,kBAWA;IACA;MACAC,cADA;MAEAC,eAFA;MAGAC,eAHA;MAIAC,kBAJA;MAKAC,iBALA;MAMAC,cANA;MAOAC;QACAC,cADA;QAEAC;MAFA;IAPA;EAYA,CAxBA;EAyBAC;IACAC,eADA,6BACA;MACA;MAAA;MAAA;MAAA;MACA;QAAAjB;QAAAkB;QAAAC;MAAA;IACA;EAJA,CAzBA;EA+BAC;IACAC,YADA,wBACAC,CADA,EACA;MACA;MACA;;MACA;QACAC;MACA;;MACA;IACA,CARA;IASAC,YATA,wBASAC,MATA,EASA;MACA;MACA;;MACA;QACA;MACA,CAFA,MAEA;QACA;UACA;YACA;UACA,CAFA,MAEA;YACA;UACA;QACA,CANA,MAMA;UACA;QACA;MACA;IACA,CAzBA;IA0BAC,gBA1BA,4BA0BAtB,IA1BA,EA0BA;MAAA;;MACA;QACA;QACA;UAAA;QAAA;QACA;MACA,CAJA,MAIA;QACA;QACA,4BACA;UAAA;QAAA,CADA;;QAGA;QACAuB;UACA;QACA,CAFA,EAEA,GAFA;MAGA;IACA,CAzCA;IA0CAC,WA1CA,uBA0CAC,OA1CA,EA0CA;MAAA;;MACA;QACA;UACA;YACA;UACA;QACA,CAJA;MAKA,CANA,MAMA;QACA;MACA;IACA,CApDA;IAqDAC,KArDA,iBAqDAC,KArDA,EAqDA;MACA;QAAA;MAAA;MACA;IACA,CAxDA;IAyDAC,WAzDA,uBAyDAC,IAzDA,EAyDA;MACA;IACA,CA3DA;IA4DAC,eA5DA,2BA4DAD,IA5DA,EA4DA;MACA;IACA,CA9DA;IA+DAE,YA/DA,wBA+DAF,IA/DA,EA+DA;MACA;IACA,CAjEA;IAkEAG,UAlEA,sBAkEAC,GAlEA,EAkEA;MACA;MACA;;MACA;QACA;MACA,CAFA,MAEA;QACA;QACA;MACA,CAHA,MAGA,IACAA,sCACAA,iEAFA,EAGA;QACA;QACA;MACA,CANA,MAMA;QACA;QACA;MACA;IACA,CApFA;IAqFAC,oBArFA,gCAqFAP,KArFA,EAqFA;MAAA;;MACA;QACA;;QACA;UACA;YACA;;YACA;UACA;QACA,CALA;MAMA,CARA;IASA,CA/FA;IAgGAQ,WAhGA,uBAgGAN,IAhGA,EAgGAX,CAhGA,EAgGA;MACA;QACA;MACA;;MACA;MACA;MACA;MACA;IACA,CAxGA;IAyGAkB,SAzGA,uBAyGA;MACA;IACA;EA3GA,CA/BA;EA4IAC;IACAC,MADA,kBACAC,EADA,EACA;MACA;IACA,CAHA;IAIA/B,OAJA,mBAIAV,KAJA,EAIA;MACA;QACA0C;MACA,CAFA,MAEA;QACAA;MACA;IACA;EAVA,CA5IA;EAwJAC,OAxJA,qBAwJA;IAAA;;IACAlB;MACA;IACA,CAFA,EAEA,GAFA;EAGA;AA5JA","names":["name","props","value","list","type","default","data","tagBodyLeft","rightOffset","outerPadding","contextMenuLeft","contextMenuTop","visible","menuList","others","all","computed","currentRouteObj","params","query","methods","handlescroll","e","delta","handleScroll","offset","handleTagsOption","setTimeout","handleClose","current","close","route","handleClick","item","showTitleInside","isCurrentTag","moveToView","tag","getTagElementByRoute","contextMenu","closeMenu","watch","$route","to","document","mounted"],"sourceRoot":"src/components/main/components/tags-nav","sources":["tags-nav.vue"],"sourcesContent":["<template>\r\n <div class=\"tags-nav\">\r\n <div class=\"close-con\">\r\n <Dropdown transfer @on-click=\"handleTagsOption\" style=\"margin-top: 7px\">\r\n <Button size=\"small\" type=\"text\">\r\n <Icon :size=\"18\" type=\"ios-close-circle-outline\" />\r\n </Button>\r\n <DropdownMenu slot=\"list\" class=\"close\">\r\n <DropdownItem name=\"close-all\">关闭所有</DropdownItem>\r\n <DropdownItem name=\"close-others\">关闭其他</DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n </div>\r\n <ul v-show=\"visible\" :style=\"{ left: contextMenuLeft + 'px', top: contextMenuTop + 'px' }\" class=\"contextmenu\">\r\n <li v-for=\"(item, key) of menuList\" @click=\"handleTagsOption(key)\" :key=\"key\">{{ item }}</li>\r\n </ul>\r\n <div class=\"btn-con left-btn\">\r\n <Button type=\"text\" @click=\"handleScroll(240)\">\r\n <Icon :size=\"18\" type=\"ios-arrow-back\" />\r\n </Button>\r\n </div>\r\n <div class=\"btn-con right-btn\">\r\n <Button type=\"text\" @click=\"handleScroll(-240)\">\r\n <Icon :size=\"18\" type=\"ios-arrow-forward\" />\r\n </Button>\r\n </div>\r\n <div class=\"scroll-outer\" ref=\"scrollOuter\" @DOMMouseScroll=\"handlescroll\" @mousewheel=\"handlescroll\">\r\n <div ref=\"scrollBody\" class=\"scroll-body\" :style=\"{ left: tagBodyLeft + 'px' }\">\r\n <transition-group name=\"taglist-moving-animation\">\r\n <Tag\r\n type=\"dot\"\r\n v-for=\"(item, index) in list\"\r\n ref=\"tagsPageOpened\"\r\n :key=\"`tag-nav-${index}`\"\r\n :name=\"item.name\"\r\n :data-route-item=\"item\"\r\n @on-close=\"handleClose(item)\"\r\n @click.native=\"handleClick(item)\"\r\n :closable=\"item.name !== $config.homeName\"\r\n :color=\"isCurrentTag(item) ? 'primary' : 'default'\"\r\n @contextmenu.prevent.native=\"contextMenu(item, $event)\"\r\n >{{ showTitleInside(item) }}</Tag\r\n >\r\n </transition-group>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { showTitle, routeEqual } from '@/libs/util';\r\nimport beforeClose from '@/router/before-close';\r\nexport default {\r\n name: 'TagsNav',\r\n props: {\r\n value: Object,\r\n list: {\r\n type: Array,\r\n default() {\r\n return [];\r\n },\r\n },\r\n },\r\n data() {\r\n return {\r\n tagBodyLeft: 0,\r\n rightOffset: 40,\r\n outerPadding: 4,\r\n contextMenuLeft: 0,\r\n contextMenuTop: 0,\r\n visible: false,\r\n menuList: {\r\n others: '关闭其他',\r\n all: '关闭所有',\r\n },\r\n };\r\n },\r\n computed: {\r\n currentRouteObj() {\r\n const { name, params, query } = this.value;\r\n return { name, params, query };\r\n },\r\n },\r\n methods: {\r\n handlescroll(e) {\r\n var type = e.type;\r\n let delta = 0;\r\n if (type === 'DOMMouseScroll' || type === 'mousewheel') {\r\n delta = e.wheelDelta ? e.wheelDelta : -(e.detail || 0) * 40;\r\n }\r\n this.handleScroll(delta);\r\n },\r\n handleScroll(offset) {\r\n const outerWidth = this.$refs.scrollOuter.offsetWidth;\r\n const bodyWidth = this.$refs.scrollBody.offsetWidth;\r\n if (offset > 0) {\r\n this.tagBodyLeft = Math.min(0, this.tagBodyLeft + offset);\r\n } else {\r\n if (outerWidth < bodyWidth) {\r\n if (this.tagBodyLeft < -(bodyWidth - outerWidth)) {\r\n this.tagBodyLeft = this.tagBodyLeft;\r\n } else {\r\n this.tagBodyLeft = Math.max(this.tagBodyLeft + offset, outerWidth - bodyWidth);\r\n }\r\n } else {\r\n this.tagBodyLeft = 0;\r\n }\r\n }\r\n },\r\n handleTagsOption(type) {\r\n if (type.includes('all')) {\r\n // 关闭所有,除了home\r\n let res = this.list.filter((item) => item.name === this.$config.homeName);\r\n this.$emit('on-close', res, 'all');\r\n } else if (type.includes('others')) {\r\n // 关闭除当前页和home页的其他页\r\n let res = this.list.filter(\r\n (item) => routeEqual(this.currentRouteObj, item) || item.name === this.$config.homeName,\r\n );\r\n this.$emit('on-close', res, 'others', this.currentRouteObj);\r\n setTimeout(() => {\r\n this.getTagElementByRoute(this.currentRouteObj);\r\n }, 100);\r\n }\r\n },\r\n handleClose(current) {\r\n if (current.meta && current.meta.beforeCloseName && current.meta.beforeCloseName in beforeClose) {\r\n new Promise(beforeClose[current.meta.beforeCloseName]).then((close) => {\r\n if (close) {\r\n this.close(current);\r\n }\r\n });\r\n } else {\r\n this.close(current);\r\n }\r\n },\r\n close(route) {\r\n let res = this.list.filter((item) => !routeEqual(route, item));\r\n this.$emit('on-close', res, undefined, route);\r\n },\r\n handleClick(item) {\r\n this.$emit('input', item);\r\n },\r\n showTitleInside(item) {\r\n return showTitle(item, this);\r\n },\r\n isCurrentTag(item) {\r\n return routeEqual(this.currentRouteObj, item);\r\n },\r\n moveToView(tag) {\r\n const outerWidth = this.$refs.scrollOuter.offsetWidth;\r\n const bodyWidth = this.$refs.scrollBody.offsetWidth;\r\n if (bodyWidth < outerWidth) {\r\n this.tagBodyLeft = 0;\r\n } else if (tag.offsetLeft < -this.tagBodyLeft) {\r\n // 标签在可视区域左侧\r\n this.tagBodyLeft = -tag.offsetLeft + this.outerPadding;\r\n } else if (\r\n tag.offsetLeft > -this.tagBodyLeft &&\r\n tag.offsetLeft + tag.offsetWidth < -this.tagBodyLeft + outerWidth\r\n ) {\r\n // 标签在可视区域\r\n this.tagBodyLeft = Math.min(0, outerWidth - tag.offsetWidth - tag.offsetLeft - this.outerPadding);\r\n } else {\r\n // 标签在可视区域右侧\r\n this.tagBodyLeft = -(tag.offsetLeft - (outerWidth - this.outerPadding - tag.offsetWidth));\r\n }\r\n },\r\n getTagElementByRoute(route) {\r\n this.$nextTick(() => {\r\n this.refsTag = this.$refs.tagsPageOpened;\r\n this.refsTag.forEach((item, index) => {\r\n if (routeEqual(route, item.$attrs['data-route-item'])) {\r\n let tag = this.refsTag[index].$el;\r\n this.moveToView(tag);\r\n }\r\n });\r\n });\r\n },\r\n contextMenu(item, e) {\r\n if (item.name === this.$config.homeName) {\r\n return;\r\n }\r\n this.visible = true;\r\n const offsetLeft = this.$el.getBoundingClientRect().left;\r\n this.contextMenuLeft = e.clientX - offsetLeft + 10;\r\n this.contextMenuTop = e.clientY - 64;\r\n },\r\n closeMenu() {\r\n this.visible = false;\r\n },\r\n },\r\n watch: {\r\n $route(to) {\r\n this.getTagElementByRoute(to);\r\n },\r\n visible(value) {\r\n if (value) {\r\n document.body.addEventListener('click', this.closeMenu);\r\n } else {\r\n document.body.removeEventListener('click', this.closeMenu);\r\n }\r\n },\r\n },\r\n mounted() {\r\n setTimeout(() => {\r\n this.getTagElementByRoute(this.$route);\r\n }, 200);\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"less\">\r\n.close .ivu-dropdown-item {\r\n // color: rgba(255, 255, 255, 0.7) !important;\r\n}\r\n@import './tags-nav.less';\r\n</style>\r\n"]}]}