Files
education/frontend/node_modules/.cache/vue-loader/cbc6c60a76aaf43db21365538ca97778.json
T

1 line
19 KiB
JSON

{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\components\\RightToolbar\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\components\\RightToolbar\\index.vue","mtime":1787567871517},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js","mtime":1787309793142},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js","mtime":1787309793790}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgY2FjaGUgZnJvbSAnQC9wbHVnaW5zL2NhY2hlJw0KDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICJSaWdodFRvb2xiYXIiLA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICAvLyDmmL7pmpDmlbDmja4NCiAgICAgIHZhbHVlOiBbXSwNCiAgICAgIC8vIOW8ueWHuuWxguagh+mimA0KICAgICAgdGl0bGU6ICLmmL7npLov6ZqQ6JePIiwNCiAgICAgIC8vIOaYr+WQpuaYvuekuuW8ueWHuuWxgg0KICAgICAgb3BlbjogZmFsc2UNCiAgICB9DQogIH0sDQogIHByb3BzOiB7DQogICAgLyog5piv5ZCm5pi+56S65qOA57Si5p2h5Lu2ICovDQogICAgc2hvd1NlYXJjaDogew0KICAgICAgdHlwZTogQm9vbGVhbiwNCiAgICAgIGRlZmF1bHQ6IHRydWUNCiAgICB9LA0KICAgIC8qIOaYvumakOWIl+S/oeaBr++8iOaVsOe7hOagvOW8j+OAgeWvueixoeagvOW8j++8iSAqLw0KICAgIGNvbHVtbnM6IHsNCiAgICAgIHR5cGU6IFtBcnJheSwgT2JqZWN0XSwNCiAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSkNCiAgICB9LA0KICAgIC8qIOaYr+WQpuaYvuekuuajgOe0ouWbvuaghyAqLw0KICAgIHNlYXJjaDogew0KICAgICAgdHlwZTogQm9vbGVhbiwNCiAgICAgIGRlZmF1bHQ6IHRydWUNCiAgICB9LA0KICAgIC8qIOaYvumakOWIl+exu+Wei++8iHRyYW5zZmVy56m/5qKt5qGG44CBY2hlY2tib3jlpI3pgInmoYbvvIkgKi8NCiAgICBzaG93Q29sdW1uc1R5cGU6IHsNCiAgICAgIHR5cGU6IFN0cmluZywNCiAgICAgIGRlZmF1bHQ6ICJjaGVja2JveCINCiAgICB9LA0KICAgIC8qIOWPs+Wklui+uei3nSAqLw0KICAgIGd1dHRlcjogew0KICAgICAgdHlwZTogTnVtYmVyLA0KICAgICAgZGVmYXVsdDogMTANCiAgICB9LA0KICAgIC8qIOWIl+aYvumakOeKtuaAgeiusOW/hueahCBsb2NhbFN0b3JhZ2Uga2V577yI5Lyg5YWl5YiZ5ZCv55So6K6w5b+G77yM5LiN5Lyg5YiZ5LiN6K6w5b+G77yJICovDQogICAgc3RvcmFnZUtleTogew0KICAgICAgdHlwZTogU3RyaW5nLA0KICAgICAgZGVmYXVsdDogIiINCiAgICB9DQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgc3R5bGUoKSB7DQogICAgICBjb25zdCByZXQgPSB7fQ0KICAgICAgaWYgKHRoaXMuZ3V0dGVyKSB7DQogICAgICAgIHJldC5tYXJnaW5SaWdodCA9IGAke3RoaXMuZ3V0dGVyIC8gMn1weGANCiAgICAgIH0NCiAgICAgIHJldHVybiByZXQNCiAgICB9LA0KICAgIGlzQ2hlY2tlZDogew0KICAgICAgZ2V0KCkgew0KICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmNvbHVtbnMpID8gdGhpcy5jb2x1bW5zLmV2ZXJ5KChjb2wpID0+IGNvbC52aXNpYmxlKSA6IE9iamVjdC52YWx1ZXModGhpcy5jb2x1bW5zKS5ldmVyeSgoY29sKSA9PiBjb2wudmlzaWJsZSkNCiAgICAgIH0sDQogICAgICBzZXQoKSB7fQ0KICAgIH0sDQogICAgaXNJbmRldGVybWluYXRlKCkgew0KICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5jb2x1bW5zKSA/IHRoaXMuY29sdW1ucy5zb21lKChjb2wpID0+IGNvbC52aXNpYmxlKSAmJiAhdGhpcy5pc0NoZWNrZWQgOiBPYmplY3QudmFsdWVzKHRoaXMuY29sdW1ucykuc29tZSgoY29sKSA9PiBjb2wudmlzaWJsZSkgJiYgIXRoaXMuaXNDaGVja2VkDQogICAgfSwNCiAgICB0cmFuc2ZlckRhdGEoKSB7DQogICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmNvbHVtbnMpKSB7DQogICAgICAgIHJldHVybiB0aGlzLmNvbHVtbnMubWFwKChpdGVtLCBpbmRleCkgPT4gKHsga2V5OiBpbmRleCwgbGFiZWw6IGl0ZW0ubGFiZWwgfSkpDQogICAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb2x1bW5zKS5tYXAoKGtleSwgaW5kZXgpID0+ICh7IGtleTogaW5kZXgsIGxhYmVsOiB0aGlzLmNvbHVtbnNba2V5XS5sYWJlbCB9KSkNCiAgICAgIH0NCiAgICB9DQogIH0sDQogIGNyZWF0ZWQoKSB7DQogICAgLy8g5aaC5p6c5Lyg5YWl5LqGIHN0b3JhZ2VLZXnvvIzku44gbG9jYWxTdG9yYWdlIOaBouWkjeWIl+aYvumakOeKtuaAgQ0KICAgIGlmICh0aGlzLnN0b3JhZ2VLZXkpIHsNCiAgICAgIHRyeSB7DQogICAgICAgIGNvbnN0IHNhdmVkID0gY2FjaGUubG9jYWwuZ2V0SlNPTih0aGlzLnN0b3JhZ2VLZXkpDQogICAgICAgIGlmIChzYXZlZCAmJiB0eXBlb2Ygc2F2ZWQgPT09ICdvYmplY3QnKSB7DQogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5jb2x1bW5zKSkgew0KICAgICAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbCwgaW5kZXgpID0+IHsNCiAgICAgICAgICAgICAgaWYgKHNhdmVkW2luZGV4XSAhPT0gdW5kZWZpbmVkKSBjb2wudmlzaWJsZSA9IHNhdmVkW2luZGV4XQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5jb2x1bW5zKS5mb3JFYWNoKGtleSA9PiB7DQogICAgICAgICAgICAgIGlmIChzYXZlZFtrZXldICE9PSB1bmRlZmluZWQpIHRoaXMuY29sdW1uc1trZXldLnZpc2libGUgPSBzYXZlZFtrZXldDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfSBjYXRjaCAoZSkge30NCiAgICB9DQogICAgaWYgKHRoaXMuc2hvd0NvbHVtbnNUeXBlID09ICd0cmFuc2ZlcicpIHsNCiAgICAgIC8vIHRyYW5zZmVy56m/5qKt5pi+6ZqQ5YiX5Yid5aeL6buY6K6k6ZqQ6JeP5YiXDQogICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmNvbHVtbnMpKSB7DQogICAgICAgIGZvciAobGV0IGl0ZW0gaW4gdGhpcy5jb2x1bW5zKSB7DQogICAgICAgICAgaWYgKHRoaXMuY29sdW1uc1tpdGVtXS52aXNpYmxlID09PSBmYWxzZSkgew0KICAgICAgICAgICAgdGhpcy52YWx1ZS5wdXNoKHBhcnNlSW50KGl0ZW0pKQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgT2JqZWN0LmtleXModGhpcy5jb2x1bW5zKS5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7DQogICAgICAgICAgaWYgKHRoaXMuY29sdW1uc1trZXldLnZpc2libGUgPT09IGZhbHNlKSB7DQogICAgICAgICAgICB0aGlzLnZhbHVlLnB1c2goaW5kZXgpDQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgfQ0KICAgIH0NCiAgfSwNCiAgbWV0aG9kczogew0KICAgIC8vIOaQnOe0og0KICAgIHRvZ2dsZVNlYXJjaCgpIHsNCiAgICAgIGxldCBlbCA9IHRoaXMuJGVsDQogICAgICBsZXQgZm9ybUVsID0gbnVsbA0KICAgICAgd2hpbGUgKChlbCA9IGVsLnBhcmVudEVsZW1lbnQpICYmIGVsICE9PSBkb2N1bWVudC5ib2R5KSB7DQogICAgICAgIGlmICgoZm9ybUVsID0gZWwucXVlcnlTZWxlY3RvcignLmVsLWZvcm0nKSkpIGJyZWFrDQogICAgICB9DQogICAgICBpZiAoIWZvcm1FbCkgcmV0dXJuIHRoaXMuJGVtaXQoJ3VwZGF0ZTpzaG93U2VhcmNoJywgIXRoaXMuc2hvd1NlYXJjaCkNCiAgICAgIHRoaXMuX2FuaW1hdGVTZWFyY2goZm9ybUVsLCB0aGlzLnNob3dTZWFyY2gpDQogICAgfSwNCiAgICAvLyDmkJzntKLmoI/liqjnlLsNCiAgICBfYW5pbWF0ZVNlYXJjaChlbCwgaXNIaWRlKSB7DQogICAgICBjb25zdCBEVVJBVElPTiA9IDI2MA0KICAgICAgY29uc3QgVFJBTlNJVElPTiA9ICdtYXgtaGVpZ2h0IDAuMjVzIGVhc2UsIG9wYWNpdHkgMC4ycyBlYXNlJw0KICAgICAgY29uc3QgY2xlYXIgPSAoKSA9PiBPYmplY3QuYXNzaWduKGVsLnN0eWxlLCB7IHRyYW5zaXRpb246ICcnLCBtYXhIZWlnaHQ6ICcnLCBvcGFjaXR5OiAnJywgb3ZlcmZsb3c6ICcnIH0pDQogICAgICBPYmplY3QuYXNzaWduKGVsLnN0eWxlLCB7IG92ZXJmbG93OiAnaGlkZGVuJywgdHJhbnNpdGlvbjogJycgfSkNCiAgICAgIGlmIChpc0hpZGUpIHsNCiAgICAgICAgT2JqZWN0LmFzc2lnbihlbC5zdHlsZSwgeyBtYXhIZWlnaHQ6IGVsLnNjcm9sbEhlaWdodCArICdweCcsIG9wYWNpdHk6ICcxJywgdHJhbnNpdGlvbjogVFJBTlNJVElPTiB9KQ0KICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gT2JqZWN0LmFzc2lnbihlbC5zdHlsZSwgeyBtYXhIZWlnaHQ6ICcwJywgb3BhY2l0eTogJzAnIH0pKQ0KICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy4kZW1pdCgndXBkYXRlOnNob3dTZWFyY2gnLCBmYWxzZSk7IGNsZWFyKCkgfSwgRFVSQVRJT04pDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6c2hvd1NlYXJjaCcsIHRydWUpDQogICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsNCiAgICAgICAgICBPYmplY3QuYXNzaWduKGVsLnN0eWxlLCB7IG1heEhlaWdodDogJzAnLCBvcGFjaXR5OiAnMCcgfSkNCiAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsNCiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZWwuc3R5bGUsIHsgdHJhbnNpdGlvbjogVFJBTlNJVElPTiwgbWF4SGVpZ2h0OiBlbC5zY3JvbGxIZWlnaHQgKyAncHgnLCBvcGFjaXR5OiAnMScgfSkNCiAgICAgICAgICB9KSkNCiAgICAgICAgICBzZXRUaW1lb3V0KGNsZWFyLCBEVVJBVElPTikNCiAgICAgICAgfSkNCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIOWIt+aWsA0KICAgIHJlZnJlc2goKSB7DQogICAgICB0aGlzLiRlbWl0KCJxdWVyeVRhYmxlIikNCiAgICB9LA0KICAgIC8vIOWPs+S+p+WIl+ihqOWFg+e0oOWPmOWMlg0KICAgIGRhdGFDaGFuZ2UoZGF0YSkgew0KICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5jb2x1bW5zKSkgew0KICAgICAgICBmb3IgKGxldCBpdGVtIGluIHRoaXMuY29sdW1ucykgew0KICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuY29sdW1uc1tpdGVtXS5rZXkNCiAgICAgICAgICB0aGlzLmNvbHVtbnNbaXRlbV0udmlzaWJsZSA9ICFkYXRhLmluY2x1ZGVzKGtleSkNCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgT2JqZWN0LmtleXModGhpcy5jb2x1bW5zKS5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7DQogICAgICAgICAgdGhpcy5jb2x1bW5zW2tleV0udmlzaWJsZSA9ICFkYXRhLmluY2x1ZGVzKGluZGV4KQ0KICAgICAgICB9KQ0KICAgICAgfQ0KICAgICAgdGhpcy5zYXZlU3RvcmFnZSgpDQogICAgfSwNCiAgICAvLyDmiZPlvIDmmL7pmpDliJdkaWFsb2cNCiAgICBzaG93Q29sdW1uKCkgew0KICAgICAgdGhpcy5vcGVuID0gdHJ1ZQ0KICAgIH0sDQogICAgLy8g5Y2V5Yu+6YCJDQogICAgY2hlY2tib3hDaGFuZ2UoZXZlbnQsIGtleSkgew0KICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5jb2x1bW5zKSkgew0KICAgICAgICB0aGlzLmNvbHVtbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkgPT0ga2V5KVswXS52aXNpYmxlID0gZXZlbnQNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuY29sdW1uc1trZXldLnZpc2libGUgPSBldmVudA0KICAgICAgfQ0KICAgICAgdGhpcy5zYXZlU3RvcmFnZSgpDQogICAgfSwNCiAgICAvLyDliIfmjaLlhajpgIkv5Y+N6YCJDQogICAgdG9nZ2xlQ2hlY2tBbGwoKSB7DQogICAgICBjb25zdCBuZXdWYWx1ZSA9ICF0aGlzLmlzQ2hlY2tlZA0KICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5jb2x1bW5zKSkgew0KICAgICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiAoY29sLnZpc2libGUgPSBuZXdWYWx1ZSkpDQogICAgICB9IGVsc2Ugew0KICAgICAgICBPYmplY3QudmFsdWVzKHRoaXMuY29sdW1ucykuZm9yRWFjaCgoY29sKSA9PiAoY29sLnZpc2libGUgPSBuZXdWYWx1ZSkpDQogICAgICB9DQogICAgICB0aGlzLnNhdmVTdG9yYWdlKCkNCiAgICB9LA0KICAgIC8vIOWwhuW9k+WJjeWIl+aYvumakOeKtuaAgeaMgeS5heWMluWIsCBsb2NhbFN0b3JhZ2UNCiAgICBzYXZlU3RvcmFnZSgpIHsNCiAgICAgIGlmICghdGhpcy5zdG9yYWdlS2V5KSByZXR1cm4NCiAgICAgIHRyeSB7DQogICAgICAgIGxldCBzdGF0ZSA9IHt9DQogICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuY29sdW1ucykpIHsNCiAgICAgICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sLCBpbmRleCkgPT4geyBzdGF0ZVtpbmRleF0gPSBjb2wudmlzaWJsZSB9KQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29sdW1ucykuZm9yRWFjaChrZXkgPT4geyBzdGF0ZVtrZXldID0gdGhpcy5jb2x1bW5zW2tleV0udmlzaWJsZSB9KQ0KICAgICAgICB9DQogICAgICAgIGNhY2hlLmxvY2FsLnNldEpTT04odGhpcy5zdG9yYWdlS2V5LCBzdGF0ZSkNCiAgICAgIH0gY2F0Y2ggKGUpIHt9DQogICAgfQ0KICB9LA0KfQ0K"},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/components/RightToolbar","sourcesContent":["<template>\r\n <div class=\"top-right-btn\" :style=\"style\">\r\n <el-row>\r\n <el-tooltip class=\"item\" effect=\"dark\" :content=\"showSearch ? '隐藏搜索' : '显示搜索'\" placement=\"top\" v-if=\"search\">\r\n <el-button size=\"mini\" circle icon=\"el-icon-search\" @click=\"toggleSearch()\" />\r\n </el-tooltip>\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"刷新\" placement=\"top\">\r\n <el-button size=\"mini\" circle icon=\"el-icon-refresh\" @click=\"refresh()\" />\r\n </el-tooltip>\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"显隐列\" placement=\"top\" v-if=\"Object.keys(columns).length > 0\">\r\n <el-button size=\"mini\" circle icon=\"el-icon-menu\" @click=\"showColumn()\" v-if=\"showColumnsType == 'transfer'\"/>\r\n <el-dropdown trigger=\"click\" :hide-on-click=\"false\" style=\"padding-left: 12px\" v-if=\"showColumnsType == 'checkbox'\">\r\n <el-button size=\"mini\" circle icon=\"el-icon-menu\" />\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <!-- 全选/反选 按钮 -->\r\n <el-dropdown-item>\r\n <el-checkbox :indeterminate=\"isIndeterminate\" v-model=\"isChecked\" @change=\"toggleCheckAll\"> 列展示 </el-checkbox>\r\n </el-dropdown-item>\r\n <div class=\"check-line\"></div>\r\n <template v-for=\"(item, key) in columns\">\r\n <el-dropdown-item :key=\"key\">\r\n <el-checkbox v-model=\"item.visible\" @change=\"checkboxChange($event, key)\" :label=\"item.label\" />\r\n </el-dropdown-item>\r\n </template>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </el-tooltip>\r\n </el-row>\r\n <el-dialog :title=\"title\" :visible.sync=\"open\" append-to-body>\r\n <el-transfer\r\n :titles=\"['显示', '隐藏']\"\r\n v-model=\"value\"\r\n :data=\"transferData\"\r\n @change=\"dataChange\"\r\n ></el-transfer>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport cache from '@/plugins/cache'\r\n\r\nexport default {\r\n name: \"RightToolbar\",\r\n data() {\r\n return {\r\n // 显隐数据\r\n value: [],\r\n // 弹出层标题\r\n title: \"显示/隐藏\",\r\n // 是否显示弹出层\r\n open: false\r\n }\r\n },\r\n props: {\r\n /* 是否显示检索条件 */\r\n showSearch: {\r\n type: Boolean,\r\n default: true\r\n },\r\n /* 显隐列信息(数组格式、对象格式) */\r\n columns: {\r\n type: [Array, Object],\r\n default: () => ({})\r\n },\r\n /* 是否显示检索图标 */\r\n search: {\r\n type: Boolean,\r\n default: true\r\n },\r\n /* 显隐列类型(transfer穿梭框、checkbox复选框) */\r\n showColumnsType: {\r\n type: String,\r\n default: \"checkbox\"\r\n },\r\n /* 右外边距 */\r\n gutter: {\r\n type: Number,\r\n default: 10\r\n },\r\n /* 列显隐状态记忆的 localStorage key(传入则启用记忆,不传则不记忆) */\r\n storageKey: {\r\n type: String,\r\n default: \"\"\r\n }\r\n },\r\n computed: {\r\n style() {\r\n const ret = {}\r\n if (this.gutter) {\r\n ret.marginRight = `${this.gutter / 2}px`\r\n }\r\n return ret\r\n },\r\n isChecked: {\r\n get() {\r\n return Array.isArray(this.columns) ? this.columns.every((col) => col.visible) : Object.values(this.columns).every((col) => col.visible)\r\n },\r\n set() {}\r\n },\r\n isIndeterminate() {\r\n return Array.isArray(this.columns) ? this.columns.some((col) => col.visible) && !this.isChecked : Object.values(this.columns).some((col) => col.visible) && !this.isChecked\r\n },\r\n transferData() {\r\n if (Array.isArray(this.columns)) {\r\n return this.columns.map((item, index) => ({ key: index, label: item.label }))\r\n } else {\r\n return Object.keys(this.columns).map((key, index) => ({ key: index, label: this.columns[key].label }))\r\n }\r\n }\r\n },\r\n created() {\r\n // 如果传入了 storageKey,从 localStorage 恢复列显隐状态\r\n if (this.storageKey) {\r\n try {\r\n const saved = cache.local.getJSON(this.storageKey)\r\n if (saved && typeof saved === 'object') {\r\n if (Array.isArray(this.columns)) {\r\n this.columns.forEach((col, index) => {\r\n if (saved[index] !== undefined) col.visible = saved[index]\r\n })\r\n } else {\r\n Object.keys(this.columns).forEach(key => {\r\n if (saved[key] !== undefined) this.columns[key].visible = saved[key]\r\n })\r\n }\r\n }\r\n } catch (e) {}\r\n }\r\n if (this.showColumnsType == 'transfer') {\r\n // transfer穿梭显隐列初始默认隐藏列\r\n if (Array.isArray(this.columns)) {\r\n for (let item in this.columns) {\r\n if (this.columns[item].visible === false) {\r\n this.value.push(parseInt(item))\r\n }\r\n }\r\n } else {\r\n Object.keys(this.columns).forEach((key, index) => {\r\n if (this.columns[key].visible === false) {\r\n this.value.push(index)\r\n }\r\n })\r\n }\r\n }\r\n },\r\n methods: {\r\n // 搜索\r\n toggleSearch() {\r\n let el = this.$el\r\n let formEl = null\r\n while ((el = el.parentElement) && el !== document.body) {\r\n if ((formEl = el.querySelector('.el-form'))) break\r\n }\r\n if (!formEl) return this.$emit('update:showSearch', !this.showSearch)\r\n this._animateSearch(formEl, this.showSearch)\r\n },\r\n // 搜索栏动画\r\n _animateSearch(el, isHide) {\r\n const DURATION = 260\r\n const TRANSITION = 'max-height 0.25s ease, opacity 0.2s ease'\r\n const clear = () => Object.assign(el.style, { transition: '', maxHeight: '', opacity: '', overflow: '' })\r\n Object.assign(el.style, { overflow: 'hidden', transition: '' })\r\n if (isHide) {\r\n Object.assign(el.style, { maxHeight: el.scrollHeight + 'px', opacity: '1', transition: TRANSITION })\r\n requestAnimationFrame(() => Object.assign(el.style, { maxHeight: '0', opacity: '0' }))\r\n setTimeout(() => { this.$emit('update:showSearch', false); clear() }, DURATION)\r\n } else {\r\n this.$emit('update:showSearch', true)\r\n this.$nextTick(() => {\r\n Object.assign(el.style, { maxHeight: '0', opacity: '0' })\r\n requestAnimationFrame(() => requestAnimationFrame(() => {\r\n Object.assign(el.style, { transition: TRANSITION, maxHeight: el.scrollHeight + 'px', opacity: '1' })\r\n }))\r\n setTimeout(clear, DURATION)\r\n })\r\n }\r\n },\r\n // 刷新\r\n refresh() {\r\n this.$emit(\"queryTable\")\r\n },\r\n // 右侧列表元素变化\r\n dataChange(data) {\r\n if (Array.isArray(this.columns)) {\r\n for (let item in this.columns) {\r\n const key = this.columns[item].key\r\n this.columns[item].visible = !data.includes(key)\r\n }\r\n } else {\r\n Object.keys(this.columns).forEach((key, index) => {\r\n this.columns[key].visible = !data.includes(index)\r\n })\r\n }\r\n this.saveStorage()\r\n },\r\n // 打开显隐列dialog\r\n showColumn() {\r\n this.open = true\r\n },\r\n // 单勾选\r\n checkboxChange(event, key) {\r\n if (Array.isArray(this.columns)) {\r\n this.columns.filter(item => item.key == key)[0].visible = event\r\n } else {\r\n this.columns[key].visible = event\r\n }\r\n this.saveStorage()\r\n },\r\n // 切换全选/反选\r\n toggleCheckAll() {\r\n const newValue = !this.isChecked\r\n if (Array.isArray(this.columns)) {\r\n this.columns.forEach((col) => (col.visible = newValue))\r\n } else {\r\n Object.values(this.columns).forEach((col) => (col.visible = newValue))\r\n }\r\n this.saveStorage()\r\n },\r\n // 将当前列显隐状态持久化到 localStorage\r\n saveStorage() {\r\n if (!this.storageKey) return\r\n try {\r\n let state = {}\r\n if (Array.isArray(this.columns)) {\r\n this.columns.forEach((col, index) => { state[index] = col.visible })\r\n } else {\r\n Object.keys(this.columns).forEach(key => { state[key] = this.columns[key].visible })\r\n }\r\n cache.local.setJSON(this.storageKey, state)\r\n } catch (e) {}\r\n }\r\n },\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n::v-deep .el-transfer__button {\r\n border-radius: 50%;\r\n padding: 12px;\r\n display: block;\r\n margin-left: 0px;\r\n}\r\n::v-deep .el-transfer__button:first-child {\r\n margin-bottom: 10px;\r\n}\r\n.check-line {\r\n width: 90%;\r\n height: 1px;\r\n background-color: #ccc;\r\n margin: 3px auto;\r\n}\r\n</style>\r\n"]}]}