You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
19 KiB
1 line
19 KiB
{"remainingRequest":"G:\\bishe\\2024\\springboot\\143_论文\\039_springboot流浪天使乐园管理系统设计与实现\\vue\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!G:\\bishe\\2024\\springboot\\143_论文\\039_springboot流浪天使乐园管理系统设计与实现\\vue\\admin\\src\\components\\index\\TagsView\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"G:\\bishe\\2024\\springboot\\143_论文\\039_springboot流浪天使乐园管理系统设计与实现\\vue\\admin\\src\\components\\index\\TagsView\\index.vue","mtime":1703907409000},{"path":"G:\\bishe\\2024\\springboot\\143_论文\\039_springboot流浪天使乐园管理系统设计与实现\\vue\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"G:\\bishe\\2024\\springboot\\143_论文\\039_springboot流浪天使乐园管理系统设计与实现\\vue\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":499162500000},{"path":"G:\\bishe\\2024\\springboot\\143_论文\\039_springboot流浪天使乐园管理系统设计与实现\\vue\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"G:\\bishe\\2024\\springboot\\143_论文\\039_springboot流浪天使乐园管理系统设计与实现\\vue\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBTY3JvbGxQYW5lIGZyb20gJy4vU2Nyb2xsUGFuZScKaW1wb3J0IHBhdGggZnJvbSAncGF0aCcKaW1wb3J0IHsKCWdlbmVyYXRlVGl0bGUKfSBmcm9tICdAL3V0aWxzL2kxOG4nCmltcG9ydCBtZW51IGZyb20gJ0AvdXRpbHMvbWVudScKaW1wb3J0IHsgcm91dGVzIH0gZnJvbSAnQC9yb3V0ZXIvcm91dGVyLXN0YXRpYy5qcycKCmV4cG9ydCBkZWZhdWx0IHsKCWNvbXBvbmVudHM6IHsKCQlTY3JvbGxQYW5lCgl9LAoJZGF0YSgpIHsKCQlyZXR1cm4gewoJCQl2aXNpYmxlOiBmYWxzZSwKCQkJdG9wOiAwLAoJCQlsZWZ0OiAwLAoJCQlzZWxlY3RlZFRhZzoge30sCgkJCWFmZml4VGFnczogW10sCgkJCXJvdXRlczogW10KCQl9Cgl9LAoJY29tcHV0ZWQ6IHsKCQl2aXNpdGVkVmlld3MoKSB7CgkJCXJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS50YWdzVmlldy52aXNpdGVkVmlld3MKCQl9LAoJCS8vIHJvdXRlcygpIHsKCQkvLyAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5tZW51LnJvdXRlcwoJCS8vIH0KCX0sCgl3YXRjaDogewoJCSRyb3V0ZSgpIHsKCQkJdGhpcy5hZGRUYWdzKCkKCQkJdGhpcy5tb3ZlVG9DdXJyZW50VGFnKCkKCQl9LAoJCXZpc2libGUodmFsdWUpIHsKCQkJaWYgKHZhbHVlKSB7CgkJCQlkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZU1lbnUpCgkJCX0gZWxzZSB7CgkJCQlkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZU1lbnUpCgkJCX0KCQl9Cgl9LAoJbW91bnRlZCgpIHsKCQl0aGlzLmluaXRUYWdzKCkKCQl0aGlzLmFkZFRhZ3MoKQoJfSwKCWNyZWF0ZWQoKSB7CgkJdGhpcy5yb3V0ZXMgPSBtZW51CgkJCgkJbGV0IG1lbnVMaXN0ID0gW10KCQljb25zdCBtZW51cyA9IG1lbnUubGlzdCgpCgkJaWYgKG1lbnVzKSB7CgkJCW1lbnVMaXN0ID0gbWVudXMKCQl9IGVsc2UgewoJCQlsZXQgcGFyYW1zID0gewoJCQkJcGFnZTogMSwKCQkJCWxpbWl0OiAxLAoJCQkJc29ydDogJ2lkJywKCQkJfQoJCQoJCQl0aGlzLiRodHRwKHsKCQkJCXVybDogIm1lbnUvbGlzdCIsCgkJCQltZXRob2Q6ICJnZXQiLAoJCQkJcGFyYW1zOiBwYXJhbXMKCQkJfSkudGhlbigoewoJCQkJZGF0YQoJCQl9KSA9PiB7CgkJCQlpZiAoZGF0YSAmJiBkYXRhLmNvZGUgPT09IDApIHsKCQkJCQltZW51TGlzdCA9IEpTT04ucGFyc2UoZGF0YS5kYXRhLmxpc3RbMF0ubWVudWpzb24pOwoJCQkJCXRoaXMuJHN0b3JhZ2Uuc2V0KCJtZW51cyIsIG1lbnVMaXN0KTsKCQkJCX0KCQkJfSkKCQl9CgkJdGhpcy5yb2xlID0gdGhpcy4kc3RvcmFnZS5nZXQoJ3JvbGUnKQoJCQoJCWZvciAobGV0IGkgPSAwOyBpIDwgbWVudUxpc3QubGVuZ3RoOyBpKyspIHsKCQkJaWYgKG1lbnVMaXN0W2ldLnJvbGVOYW1lID09IHRoaXMucm9sZSkgewoJCQkJdGhpcy5yb3V0ZXMgPSBtZW51TGlzdFtpXS5iYWNrTWVudTsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCXRoaXMucm91dGVzID0gcm91dGVzLmNvbmNhdCh0aGlzLnJvdXRlcyk7CgkJLy8gY29uc29sZS5sb2codGhpcy52aXNpdGVkVmlld3MpCgkJLy8gY29uc29sZS5sb2codGhpcy5yb3V0ZXMpCgkJLy8gdGhpcy5pbml0VGFncygpCgkJLy8gdGhpcy5hZGRUYWdzKCkKCX0sCgltZXRob2RzOiB7CgkJaXNBY3RpdmUocm91dGUpIHsKCQkJcmV0dXJuIHJvdXRlLnBhdGggPT09IHRoaXMuJHJvdXRlLnBhdGgKCQl9LAoJCWZpbHRlckFmZml4VGFncyhyb3V0ZXMsIGJhc2VQYXRoID0gJy8nKSB7CgkJCWxldCB0YWdzID0gW10KCQkJcm91dGVzLmZvckVhY2gocm91dGUgPT4gewoJCQkJaWYgKHJvdXRlLm1ldGEgJiYgcm91dGUubWV0YS5hZmZpeCkgewoJCQkJCWNvbnN0IHRhZ1BhdGggPSBwYXRoLnJlc29sdmUoYmFzZVBhdGgsIHJvdXRlLnBhdGgpCgkJCQkJdGFncy5wdXNoKHsKCQkJCQkJZnVsbFBhdGg6IHRhZ1BhdGgsCgkJCQkJCXBhdGg6IHRhZ1BhdGgsCgkJCQkJCW5hbWU6IHJvdXRlLm5hbWUsCgkJCQkJCW1ldGE6IHsKCQkJCQkJCS4uLnJvdXRlLm1ldGEKCQkJCQkJfQoJCQkJCX0pCgkJCQl9CgkJCQlpZiAocm91dGUuY2hpbGRyZW4pIHsKCQkJCQljb25zdCB0ZW1wVGFncyA9IHRoaXMuZmlsdGVyQWZmaXhUYWdzKHJvdXRlLmNoaWxkcmVuLCByb3V0ZS5wYXRoKQoJCQkJCWlmICh0ZW1wVGFncy5sZW5ndGggPj0gMSkgewoJCQkJCQl0YWdzID0gWy4uLnRhZ3MsIC4uLnRlbXBUYWdzXQoJCQkJCX0KCQkJCX0KCQkJfSkKCQkJcmV0dXJuIHRhZ3MKCQl9LAoJCWdlbmVyYXRlVGl0bGUsCgkJaW5pdFRhZ3MoKSB7CgkJCWNvbnN0IGFmZml4VGFncyA9IHRoaXMuYWZmaXhUYWdzID0gdGhpcy5maWx0ZXJBZmZpeFRhZ3ModGhpcy5yb3V0ZXMpCgkJCWZvciAoY29uc3QgdGFnIG9mIGFmZml4VGFncykgewoJCQkJLy8gTXVzdCBoYXZlIHRhZyBuYW1lCgkJCQlpZiAodGFnLm5hbWUpIHsKCQkJCQl0aGlzLiRzdG9yZS5kaXNwYXRjaCgndGFnc1ZpZXcvYWRkVmlzaXRlZFZpZXcnLCB0YWcpCgkJCQl9CgkJCX0KCQl9LAoJCWFkZFRhZ3MoKSB7CgkJCWNvbnN0IHsKCQkJCW5hbWUKCQkJfSA9IHRoaXMuJHJvdXRlCgkJCWlmIChuYW1lKSB7CgkJCQl0aGlzLiRzdG9yZS5kaXNwYXRjaCgndGFnc1ZpZXcvYWRkVmlldycsIHRoaXMuJHJvdXRlKQoJCQl9CgkJCXJldHVybiBmYWxzZQoJCX0sCgkJbW92ZVRvQ3VycmVudFRhZygpIHsKCQkJY29uc3QgdGFncyA9IHRoaXMuJHJlZnMudGFnCgkJCXRoaXMuJG5leHRUaWNrKCgpID0+IHsKCQkJCWZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHsKCQkJCQlpZiAodGFnLnRvLnBhdGggPT09IHRoaXMuJHJvdXRlLnBhdGgpIHsKCQkJCQkJdGhpcy4kcmVmcy5zY3JvbGxQYW5lLm1vdmVUb1RhcmdldCh0YWcpCgkJCQkJCS8vIHdoZW4gcXVlcnkgaXMgZGlmZmVyZW50IHRoZW4gdXBkYXRlCgkJCQkJCWlmICh0YWcudG8uZnVsbFBhdGggIT09IHRoaXMuJHJvdXRlLmZ1bGxQYXRoKSB7CgkJCQkJCQl0aGlzLiRzdG9yZS5kaXNwYXRjaCgndGFnc1ZpZXcvdXBkYXRlVmlzaXRlZFZpZXcnLCB0aGlzLiRyb3V0ZSkKCQkJCQkJfQoJCQkJCQlicmVhawoJCQkJCX0KCQkJCX0KCQkJfSkKCQl9LAoJCXJlZnJlc2hTZWxlY3RlZFRhZyh2aWV3KSB7CgkJCXRoaXMuJHN0b3JlLmRpc3BhdGNoKCd0YWdzVmlldy9kZWxDYWNoZWRWaWV3JywgdmlldykudGhlbigoKSA9PiB7CgkJCQljb25zdCB7CgkJCQkJZnVsbFBhdGgKCQkJCX0gPSB2aWV3CgkJCQl0aGlzLiRuZXh0VGljaygoKSA9PiB7CgkJCQkJdGhpcy4kcm91dGVyLnJlcGxhY2UoewoJCQkJCQlwYXRoOiAnL3JlZGlyZWN0JyArIGZ1bGxQYXRoCgkJCQkJfSkKCQkJCX0pCgkJCX0pCgkJfSwKCQljbG9zZVNlbGVjdGVkVGFnKHZpZXcpIHsKCQkJdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3RhZ3NWaWV3L2RlbFZpZXcnLCB2aWV3KS50aGVuKCh7CgkJCQl2aXNpdGVkVmlld3MKCQkJfSkgPT4gewoJCQkJaWYgKHRoaXMuaXNBY3RpdmUodmlldykpIHsKCQkJCQl0aGlzLnRvTGFzdFZpZXcodmlzaXRlZFZpZXdzLCB2aWV3KQoJCQkJfQoJCQl9KQoJCX0sCgkJY2xvc2VPdGhlcnNUYWdzKCkgewoJCQl0aGlzLiRyb3V0ZXIucHVzaCh0aGlzLnNlbGVjdGVkVGFnKQoJCQl0aGlzLiRzdG9yZS5kaXNwYXRjaCgndGFnc1ZpZXcvZGVsT3RoZXJzVmlld3MnLCB0aGlzLnNlbGVjdGVkVGFnKS50aGVuKCgpID0+IHsKCQkJCXRoaXMubW92ZVRvQ3VycmVudFRhZygpCgkJCX0pCgkJfSwKCQljbG9zZUFsbFRhZ3ModmlldykgewoJCQl0aGlzLiRzdG9yZS5kaXNwYXRjaCgndGFnc1ZpZXcvZGVsQWxsVmlld3MnKS50aGVuKCh7CgkJCQl2aXNpdGVkVmlld3MKCQkJfSkgPT4gewoJCQkJaWYgKHRoaXMuYWZmaXhUYWdzLnNvbWUodGFnID0+IHRhZy5wYXRoID09PSB2aWV3LnBhdGgpKSB7CgkJCQkJcmV0dXJuCgkJCQl9CgkJCQl0aGlzLnRvTGFzdFZpZXcodmlzaXRlZFZpZXdzLCB2aWV3KQoJCQl9KQoJCX0sCgkJdG9MYXN0Vmlldyh2aXNpdGVkVmlld3MsIHZpZXcpIHsKCQkJY29uc3QgbGF0ZXN0VmlldyA9IHZpc2l0ZWRWaWV3cy5zbGljZSgtMSlbMF0KCQkJaWYgKGxhdGVzdFZpZXcpIHsKCQkJCXRoaXMuJHJvdXRlci5wdXNoKGxhdGVzdFZpZXcpCgkJCX0gZWxzZSB7CgkJCQkvLyBub3cgdGhlIGRlZmF1bHQgaXMgdG8gcmVkaXJlY3QgdG8gdGhlIGhvbWUgcGFnZSBpZiB0aGVyZSBpcyBubyB0YWdzLXZpZXcsCgkJCQkvLyB5b3UgY2FuIGFkanVzdCBpdCBhY2NvcmRpbmcgdG8geW91ciBuZWVkcy4KCQkJCWlmICh2aWV3Lm5hbWUgPT09ICdEYXNoYm9hcmQnKSB7CgkJCQkJLy8gdG8gcmVsb2FkIGhvbWUgcGFnZQoJCQkJCXRoaXMuJHJvdXRlci5yZXBsYWNlKHsKCQkJCQkJcGF0aDogJy9yZWRpcmVjdCcgKyB2aWV3LmZ1bGxQYXRoCgkJCQkJfSkKCQkJCX0gZWxzZSB7CgkJCQkJdGhpcy4kcm91dGVyLnB1c2goJy8nKQoJCQkJfQoJCQl9CgkJfSwKCQlvcGVuTWVudSh0YWcsIGUpIHsKCQkJY29uc3QgbWVudU1pbldpZHRoID0gMTA1CgkJCWNvbnN0IG9mZnNldExlZnQgPSB0aGlzLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC8vIGNvbnRhaW5lciBtYXJnaW4gbGVmdAoJCQljb25zdCBvZmZzZXRXaWR0aCA9IHRoaXMuJGVsLm9mZnNldFdpZHRoIC8vIGNvbnRhaW5lciB3aWR0aAoJCQljb25zdCBtYXhMZWZ0ID0gb2Zmc2V0V2lkdGggLSBtZW51TWluV2lkdGggLy8gbGVmdCBib3VuZGFyeQoJCQljb25zdCBsZWZ0ID0gZS5jbGllbnRYIC0gb2Zmc2V0TGVmdCArIDE1IC8vIDE1OiBtYXJnaW4gcmlnaHQKCgkJCWlmIChsZWZ0ID4gbWF4TGVmdCkgewoJCQkJdGhpcy5sZWZ0ID0gbWF4TGVmdAoJCQl9IGVsc2UgewoJCQkJdGhpcy5sZWZ0ID0gbGVmdAoJCQl9CgoJCQl0aGlzLnRvcCA9IGUuY2xpZW50WQoJCQl0aGlzLnZpc2libGUgPSB0cnVlCgkJCXRoaXMuc2VsZWN0ZWRUYWcgPSB0YWcKCQl9LAoJCWNsb3NlTWVudSgpIHsKCQkJdGhpcy52aXNpYmxlID0gZmFsc2UKCQl9Cgl9Cn0K"},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAoBA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/components/index/TagsView","sourcesContent":["<template>\r\n\t<div id=\"tags-view-container\" class=\"tags-view-container\" :style='{\"padding\":\"4px 30px\",\"margin\":\"10px 0\",\"borderColor\":\"#d8dce5\",\"background\":\"#fff\",\"borderWidth\":\"0 0 1px\",\"width\":\"100%\",\"borderStyle\":\"solid\",\"height\":\"34px\"}'>\r\n\t\t<scroll-pane ref=\"scrollPane\" class=\"tags-view-wrapper\">\r\n\t\t\t<div class=\"tags-view-box\" :style='{\"width\":\"100%\",\"whiteSpace\":\"nowrap\",\"position\":\"relative\",\"background\":\"#fff\"}'>\r\n\t\t\t\t<router-link v-for=\"tag in visitedViews\" ref=\"tag\" :key=\"tag.path\" :class=\"isActive(tag)?'active':''\"\r\n\t\t\t\t\t:to=\"{ path: tag.path, query: tag.query, fullPath: tag.fullPath }\" tag=\"span\" class=\"tags-view-item\"\r\n\t\t\t\t\t@click.middle.native=\"closeSelectedTag(tag)\" @contextmenu.prevent.native=\"openMenu(tag,$event)\">\r\n\t\t\t\t\t<span class=\"text\">{{ tag.name }}</span>\r\n\t\t\t\t\t<span v-if=\"!tag.meta.affix\" class=\"el-icon-close\" @click.prevent.stop=\"closeSelectedTag(tag)\" />\r\n\t\t\t\t</router-link>\r\n\t\t\t</div>\r\n\t\t</scroll-pane>\r\n\t\t<ul v-show=\"visible\" :style=\"{left:left+'px',top:top+'px'}\" class=\"contextmenu\">\r\n\t\t\t<li v-if=\"!(selectedTag.meta&&selectedTag.meta.affix)\" @click=\"closeSelectedTag(selectedTag)\">Close</li>\r\n\t\t\t<li @click=\"closeAllTags(selectedTag)\">Close All</li>\r\n\t\t</ul>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\n\timport ScrollPane from './ScrollPane'\r\n\timport path from 'path'\r\n\timport {\r\n\t\tgenerateTitle\r\n\t} from '@/utils/i18n'\r\n\timport menu from '@/utils/menu'\r\n\timport { routes } from '@/router/router-static.js'\r\n\t\r\n\texport default {\r\n\t\tcomponents: {\r\n\t\t\tScrollPane\r\n\t\t},\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\tvisible: false,\r\n\t\t\t\ttop: 0,\r\n\t\t\t\tleft: 0,\r\n\t\t\t\tselectedTag: {},\r\n\t\t\t\taffixTags: [],\r\n\t\t\t\troutes: []\r\n\t\t\t}\r\n\t\t},\r\n\t\tcomputed: {\r\n\t\t\tvisitedViews() {\r\n\t\t\t\treturn this.$store.state.tagsView.visitedViews\r\n\t\t\t},\r\n\t\t\t// routes() {\r\n\t\t\t// return this.$store.state.menu.routes\r\n\t\t\t// }\r\n\t\t},\r\n\t\twatch: {\r\n\t\t\t$route() {\r\n\t\t\t\tthis.addTags()\r\n\t\t\t\tthis.moveToCurrentTag()\r\n\t\t\t},\r\n\t\t\tvisible(value) {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tdocument.body.addEventListener('click', this.closeMenu)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdocument.body.removeEventListener('click', this.closeMenu)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tmounted() {\r\n\t\t\tthis.initTags()\r\n\t\t\tthis.addTags()\r\n\t\t},\r\n\t\tcreated() {\r\n\t\t\tthis.routes = menu\r\n\t\t\t\r\n\t\t\tlet menuList = []\r\n\t\t\tconst menus = menu.list()\r\n\t\t\tif (menus) {\r\n\t\t\t\tmenuList = menus\r\n\t\t\t} else {\r\n\t\t\t\tlet params = {\r\n\t\t\t\t\tpage: 1,\r\n\t\t\t\t\tlimit: 1,\r\n\t\t\t\t\tsort: 'id',\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t\tthis.$http({\r\n\t\t\t\t\turl: \"menu/list\",\r\n\t\t\t\t\tmethod: \"get\",\r\n\t\t\t\t\tparams: params\r\n\t\t\t\t}).then(({\r\n\t\t\t\t\tdata\r\n\t\t\t\t}) => {\r\n\t\t\t\t\tif (data && data.code === 0) {\r\n\t\t\t\t\t\tmenuList = JSON.parse(data.data.list[0].menujson);\r\n\t\t\t\t\t\tthis.$storage.set(\"menus\", menuList);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\tthis.role = this.$storage.get('role')\r\n\t\t\t\r\n\t\t\tfor (let i = 0; i < menuList.length; i++) {\r\n\t\t\t\tif (menuList[i].roleName == this.role) {\r\n\t\t\t\t\tthis.routes = menuList[i].backMenu;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.routes = routes.concat(this.routes);\r\n\t\t\t// console.log(this.visitedViews)\r\n\t\t\t// console.log(this.routes)\r\n\t\t\t// this.initTags()\r\n\t\t\t// this.addTags()\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\tisActive(route) {\r\n\t\t\t\treturn route.path === this.$route.path\r\n\t\t\t},\r\n\t\t\tfilterAffixTags(routes, basePath = '/') {\r\n\t\t\t\tlet tags = []\r\n\t\t\t\troutes.forEach(route => {\r\n\t\t\t\t\tif (route.meta && route.meta.affix) {\r\n\t\t\t\t\t\tconst tagPath = path.resolve(basePath, route.path)\r\n\t\t\t\t\t\ttags.push({\r\n\t\t\t\t\t\t\tfullPath: tagPath,\r\n\t\t\t\t\t\t\tpath: tagPath,\r\n\t\t\t\t\t\t\tname: route.name,\r\n\t\t\t\t\t\t\tmeta: {\r\n\t\t\t\t\t\t\t\t...route.meta\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (route.children) {\r\n\t\t\t\t\t\tconst tempTags = this.filterAffixTags(route.children, route.path)\r\n\t\t\t\t\t\tif (tempTags.length >= 1) {\r\n\t\t\t\t\t\t\ttags = [...tags, ...tempTags]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\treturn tags\r\n\t\t\t},\r\n\t\t\tgenerateTitle,\r\n\t\t\tinitTags() {\r\n\t\t\t\tconst affixTags = this.affixTags = this.filterAffixTags(this.routes)\r\n\t\t\t\tfor (const tag of affixTags) {\r\n\t\t\t\t\t// Must have tag name\r\n\t\t\t\t\tif (tag.name) {\r\n\t\t\t\t\t\tthis.$store.dispatch('tagsView/addVisitedView', tag)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\taddTags() {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tname\r\n\t\t\t\t} = this.$route\r\n\t\t\t\tif (name) {\r\n\t\t\t\t\tthis.$store.dispatch('tagsView/addView', this.$route)\r\n\t\t\t\t}\r\n\t\t\t\treturn false\r\n\t\t\t},\r\n\t\t\tmoveToCurrentTag() {\r\n\t\t\t\tconst tags = this.$refs.tag\r\n\t\t\t\tthis.$nextTick(() => {\r\n\t\t\t\t\tfor (const tag of tags) {\r\n\t\t\t\t\t\tif (tag.to.path === this.$route.path) {\r\n\t\t\t\t\t\t\tthis.$refs.scrollPane.moveToTarget(tag)\r\n\t\t\t\t\t\t\t// when query is different then update\r\n\t\t\t\t\t\t\tif (tag.to.fullPath !== this.$route.fullPath) {\r\n\t\t\t\t\t\t\t\tthis.$store.dispatch('tagsView/updateVisitedView', this.$route)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\trefreshSelectedTag(view) {\r\n\t\t\t\tthis.$store.dispatch('tagsView/delCachedView', view).then(() => {\r\n\t\t\t\t\tconst {\r\n\t\t\t\t\t\tfullPath\r\n\t\t\t\t\t} = view\r\n\t\t\t\t\tthis.$nextTick(() => {\r\n\t\t\t\t\t\tthis.$router.replace({\r\n\t\t\t\t\t\t\tpath: '/redirect' + fullPath\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tcloseSelectedTag(view) {\r\n\t\t\t\tthis.$store.dispatch('tagsView/delView', view).then(({\r\n\t\t\t\t\tvisitedViews\r\n\t\t\t\t}) => {\r\n\t\t\t\t\tif (this.isActive(view)) {\r\n\t\t\t\t\t\tthis.toLastView(visitedViews, view)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tcloseOthersTags() {\r\n\t\t\t\tthis.$router.push(this.selectedTag)\r\n\t\t\t\tthis.$store.dispatch('tagsView/delOthersViews', this.selectedTag).then(() => {\r\n\t\t\t\t\tthis.moveToCurrentTag()\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tcloseAllTags(view) {\r\n\t\t\t\tthis.$store.dispatch('tagsView/delAllViews').then(({\r\n\t\t\t\t\tvisitedViews\r\n\t\t\t\t}) => {\r\n\t\t\t\t\tif (this.affixTags.some(tag => tag.path === view.path)) {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.toLastView(visitedViews, view)\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\ttoLastView(visitedViews, view) {\r\n\t\t\t\tconst latestView = visitedViews.slice(-1)[0]\r\n\t\t\t\tif (latestView) {\r\n\t\t\t\t\tthis.$router.push(latestView)\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// now the default is to redirect to the home page if there is no tags-view,\r\n\t\t\t\t\t// you can adjust it according to your needs.\r\n\t\t\t\t\tif (view.name === 'Dashboard') {\r\n\t\t\t\t\t\t// to reload home page\r\n\t\t\t\t\t\tthis.$router.replace({\r\n\t\t\t\t\t\t\tpath: '/redirect' + view.fullPath\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.$router.push('/')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\topenMenu(tag, e) {\r\n\t\t\t\tconst menuMinWidth = 105\r\n\t\t\t\tconst offsetLeft = this.$el.getBoundingClientRect().left // container margin left\r\n\t\t\t\tconst offsetWidth = this.$el.offsetWidth // container width\r\n\t\t\t\tconst maxLeft = offsetWidth - menuMinWidth // left boundary\r\n\t\t\t\tconst left = e.clientX - offsetLeft + 15 // 15: margin right\r\n\r\n\t\t\t\tif (left > maxLeft) {\r\n\t\t\t\t\tthis.left = maxLeft\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.left = left\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.top = e.clientY\r\n\t\t\t\tthis.visible = true\r\n\t\t\t\tthis.selectedTag = tag\r\n\t\t\t},\r\n\t\t\tcloseMenu() {\r\n\t\t\t\tthis.visible = false\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n\t.tags-view-container {\r\n\t\theight: 34px;\r\n\t\twidth: 100%;\r\n\t\tbackground: #fff;\r\n\t\tborder-bottom: 1px solid #d8dce5;\r\n\t\tbox-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);\r\n\r\n\t\t.contextmenu {\r\n\t\t\tmargin: 0;\r\n\t\t\tbackground: #fff;\r\n\t\t\tz-index: 3000;\r\n\t\t\tposition: absolute;\r\n\t\t\tlist-style-type: none;\r\n\t\t\tpadding: 5px 0;\r\n\t\t\tborder-radius: 4px;\r\n\t\t\tfont-size: 12px;\r\n\t\t\tfont-weight: 400;\r\n\t\t\tcolor: #333;\r\n\t\t\tbox-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);\r\n\r\n\t\t\tli {\r\n\t\t\t\tmargin: 0;\r\n\t\t\t\tpadding: 7px 16px;\r\n\t\t\t\tcursor: pointer;\r\n\r\n\t\t\t\t&:hover {\r\n\t\t\t\t\tbackground: #eee;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t.tags-view-container .tags-view-wrapper .tags-view-item {\r\n\t\t\t\tcursor: pointer;\r\n\t\t\t\tpadding: 0 8px;\r\n\t\t\t\tmargin: 0 5px 0 0;\r\n\t\t\t\tcolor: #333;\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tfont-size: 12px;\r\n\t\t\t\tborder-color: #d8dce5;\r\n\t\t\t\tline-height: 25px;\r\n\t\t\t\tbackground: #fff;\r\n\t\t\t\twidth: auto;\r\n\t\t\t\tborder-width: 1px 1px 0 1px;\r\n\t\t\t\tborder-style: solid;\r\n\t\t\t\theight: 25px;\r\n\t\t\t}\r\n\t\r\n\t.tags-view-container .tags-view-wrapper .tags-view-item:hover {\r\n\t\t\t\tbackground: rgba(44, 55, 66,0.1);\r\n\t\t\t}\r\n\t\r\n\t.tags-view-container .tags-view-wrapper .tags-view-item.active {\r\n\t\t\t\tcolor: #fff;\r\n\t\t\t\tbackground: rgba(44, 55, 66,0.8);\r\n\t\t\t}\r\n\t\r\n\t.tags-view-container .tags-view-wrapper .tags-view-item .text {\r\n\t\t\t\tcolor: inherit;\r\n\t\t\t\tfont-size: inherit;\r\n\t\t\t}\r\n\t\r\n\t.tags-view-container .tags-view-wrapper .tags-view-item .el-icon-close {\r\n\t\t\t\tcolor: inherit;\r\n\t\t\t\tfont-size: inherit;\r\n\t\t\t}\r\n</style>"]}]} |