| 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\\components\\uploadImg\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\components\\uploadImg\\index.vue","mtime":1761185180030},{"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:DQppbXBvcnQgeyBnZXRDYXRlZ29yeUxpc3RBcGksIG1vdmVBcGksIG9ubGluZVVwbG9hZCwgc2NhblVwbG9hZENvZGUgfSBmcm9tICdAL2FwaS91cGxvYWRQaWN0dXJlcyc7DQppbXBvcnQgU2V0dGluZyBmcm9tICdAL3NldHRpbmcnOw0KaW1wb3J0IHsgZ2V0Q29va2llcyB9IGZyb20gJ0AvbGlicy91dGlsJzsNCmltcG9ydCB7IGZpbGVVcGxvYWQsIHNjYW5VcGxvYWRRcmNvZGUsIHNjYW5VcGxvYWRHZXQgfSBmcm9tICdAL2FwaS9zZXR0aW5nJzsNCmltcG9ydCBRUkNvZGUgZnJvbSAncXJjb2RlanMyJzsNCmltcG9ydCBjb21wcmVzc0ltZyBmcm9tICdAL3V0aWxzL2NvbXByZXNzSW1nLmpzJzsNCmltcG9ydCB7IGlzUGljVXBsb2FkIH0gZnJvbSAnQC91dGlscy9pbmRleCc7DQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICcnLA0KICBwcm9wczogew0KICAgIGNhdGVnb3J5TGlzdDogew0KICAgICAgZGVmYXVsdDogKCkgPT4gew0KICAgICAgICByZXR1cm4gW107DQogICAgICB9LA0KICAgIH0sDQogICAgY2F0ZWdvcnlJZDogew0KICAgICAgZGVmYXVsdDogJycsDQogICAgfSwNCiAgICBpc1BhZ2U6IHsNCiAgICAgIGRlZmF1bHQ6IGZhbHNlLA0KICAgIH0sDQogICAgaXNJZnJhbWU6IHsNCiAgICAgIGRlZmF1bHQ6IGZhbHNlLA0KICAgIH0sDQogIH0sDQogIHdhdGNoOiB7DQogICAgdXBsb2FkTW9kYWw6IHsNCiAgICAgIGhhbmRsZXIobmV3VmFsKSB7DQogICAgICAgIGlmIChuZXdWYWwpIHRoaXMucnVsZUZvcm0ucmVnaW9uID0gdGhpcy5jYXRlZ29yeUlkOw0KICAgICAgfSwNCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwNCiAgICB9LA0KICB9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICB3ZWJJbWdVcmw6ICcnLA0KICAgICAgdXBsb2FkTW9kYWw6IGZhbHNlLA0KICAgICAgZmlsZVVybDogU2V0dGluZy5hcGlCYXNlVVJMICsgJy9maWxlL3VwbG9hZCcsDQogICAgICBoZWFkZXI6IHsNCiAgICAgICAgJ0F1dGhvcmktemF0aW9uJzogJ0JlYXJlciAnICsgZ2V0Q29va2llcygndG9rZW4nKSwNCiAgICAgIH0sDQogICAgICB1cGxvYWREYXRhOiB7fSwNCiAgICAgIHByb3BzOiB7IGNoZWNrU3RyaWN0bHk6IHRydWUsIGVtaXRQYXRoOiBmYWxzZSwgbGFiZWw6ICd0aXRsZScsIHZhbHVlOiAnaWQnIH0sDQogICAgICBkaXNhYmxlZDogZmFsc2UsDQogICAgICBydWxlRm9ybTogew0KICAgICAgICB0eXBlOiAwLA0KICAgICAgICByZWdpb246ICcnLA0KICAgICAgICBpbWdMaXN0OiBbXSwNCiAgICAgIH0sDQogICAgICBydWxlczogeyB0eXBlOiBbeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ+ivt+mAieaLqea0u+WKqOi1hOa6kCcsIHRyaWdnZXI6ICdjaGFuZ2UnIH1dIH0sDQogICAgICBxcmNvZGU6ICcnLA0KICAgICAgc2NhblRva2VuOiAnJywNCiAgICAgIGxpbWl0OiAyMCwNCiAgICAgIGxvYWRpbmc6IGZhbHNlLA0KICAgICAgdGltZTogdW5kZWZpbmVkLA0KICAgIH07DQogIH0sDQogIGNyZWF0ZWQoKSB7fSwNCiAgbW91bnRlZCgpIHt9LA0KICBiZWZvcmVEZXN0cm95KCkgew0KICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lKTsNCiAgICB0aGlzLnRpbWUgPSB1bmRlZmluZWQ7DQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICByYWRpb0NoYW5nZSh0eXBlKSB7DQogICAgICB0aGlzLnJ1bGVGb3JtLnR5cGUgPSB0eXBlOw0KICAgICAgdGhpcy5ydWxlRm9ybS5pbWdMaXN0ID0gW107DQogICAgICBjbGVhckludGVydmFsKHRoaXMudGltZSk7DQogICAgICB0aGlzLnRpbWUgPSB1bmRlZmluZWQ7DQogICAgICBpZiAodHlwZSA9PSAyKSB7DQogICAgICAgIHRoaXMuc2NhblVwbG9hZFFyY29kZSgpOw0KICAgICAgICB0aGlzLnRpbWUgPSBzZXRJbnRlcnZhbCgoZSkgPT4gew0KICAgICAgICAgIHRoaXMuc2NhblVwbG9hZEdldCgpOw0KICAgICAgICB9LCAyMDAwKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIHNjYW5VcGxvYWRRcmNvZGUoKSB7DQogICAgICBzY2FuVXBsb2FkUXJjb2RlKHRoaXMucnVsZUZvcm0ucmVnaW9uKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgdGhpcy5jcmVhdFFyQ29kZShyZXMuZGF0YS51cmwpOw0KICAgICAgICB0aGlzLnNjYW5Ub2tlbiA9IHJlcy5kYXRhLnVybDsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgc2NhblVwbG9hZEdldCgpIHsNCiAgICAgIGxldCB0b2tlbiA9IHRoaXMuc2NhblRva2VuLnNwbGl0KCd0b2tlbj0nKVsxXTsNCiAgICAgIHNjYW5VcGxvYWRHZXQodG9rZW4pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICB0aGlzLnJ1bGVGb3JtLmltZ0xpc3QgPSByZXMuZGF0YTsNCiAgICAgIH0pOw0KICAgIH0sDQoNCiAgICBnZXRJbWcoKSB7DQogICAgICBpZiAoIXRoaXMud2ViSW1nVXJsKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+ivt+WFiOi+k+WFpeWbvueJh+WcsOWdgCcpOw0KICAgICAgICByZXR1cm47DQogICAgICB9DQogICAgICBpZiAodGhpcy53ZWJJbWdVcmwuaW5kZXhPZignLnBocCcpICE9IC0xKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+ivt+WFiOi+k+WFpeWFtuS7luWbvueJh+WcsOWdgCcpOw0KICAgICAgICByZXR1cm47DQogICAgICB9DQogICAgICB0aGlzLnJ1bGVGb3JtLmltZ0xpc3QucHVzaCh7DQogICAgICAgIHVybDogdGhpcy53ZWJJbWdVcmwsDQogICAgICB9KTsNCiAgICB9LA0KICAgIGFzeW5jIHN1Ym1pdFVwbG9hZCgpIHsNCiAgICAgIGlmICghdGhpcy5ydWxlRm9ybS5pbWdMaXN0Lmxlbmd0aCkgcmV0dXJuIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+35YWI6YCJ5oup5Zu+54mHJyk7DQogICAgICBpZiAodGhpcy5ydWxlRm9ybS50eXBlID09IDApIHsNCiAgICAgICAgdGhpcy51cGxvYWREYXRhID0gew0KICAgICAgICAgIHBpZDogdGhpcy5ydWxlRm9ybS5yZWdpb24sDQogICAgICAgIH07DQogICAgICAgIGlmICh0aGlzLnJ1bGVGb3JtLmltZ0xpc3QubGVuZ3RoKSB7DQogICAgICAgICAgaWYgKHRoaXMubG9hZGluZykgcmV0dXJuOw0KICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJ1bGVGb3JtLmltZ0xpc3QubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnJ1bGVGb3JtLmltZ0xpc3RbaV0ucmF3Ow0KICAgICAgICAgICAgYXdhaXQgdGhpcy51cGxvYWRJdGVtKGZpbGUpOw0KICAgICAgICAgICAgaWYgKGkgPT0gdGhpcy5ydWxlRm9ybS5pbWdMaXN0Lmxlbmd0aCAtIDEpIHsNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfkuIrkvKDmiJDlip8nKTsNCiAgICAgICAgICAgICAgdGhpcy4kZW1pdCgndXBsb2FkU3VjY2VzcycpOw0KICAgICAgICAgICAgICB0aGlzLnVwbG9hZE1vZGFsID0gZmFsc2U7DQogICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgICB0aGlzLmluaXREYXRhKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9IGVsc2UgaWYgKHRoaXMucnVsZUZvcm0udHlwZSA9PSAxKSB7DQogICAgICAgIGxldCB1cmxzID0gdGhpcy5ydWxlRm9ybS5pbWdMaXN0Lm1hcCgoZSkgPT4gew0KICAgICAgICAgIHJldHVybiBlLnVybDsNCiAgICAgICAgfSk7DQogICAgICAgIGlmICh1cmxzLmxlbmd0aCkgew0KICAgICAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHJldHVybjsNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOw0KICAgICAgICAgIG9ubGluZVVwbG9hZCh7IHBpZDogdGhpcy5ydWxlRm9ybS5yZWdpb24sIGltYWdlczogdXJscyB9KQ0KICAgICAgICAgICAgLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+S4iuS8oOaIkOWKnycpOw0KICAgICAgICAgICAgICB0aGlzLiRlbWl0KCd1cGxvYWRTdWNjZXNzJyk7DQogICAgICAgICAgICAgIHRoaXMudXBsb2FkTW9kYWwgPSBmYWxzZTsNCiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgICAgICAgIHRoaXMuaW5pdERhdGEoKTsNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gew0KICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlcnIubXNnKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICB9IGVsc2UgaWYgKHRoaXMucnVsZUZvcm0udHlwZSA9PSAyKSB7DQogICAgICAgIGxldCBhdHRJZCA9IHRoaXMucnVsZUZvcm0uaW1nTGlzdC5tYXAoKGUpID0+IHsNCiAgICAgICAgICByZXR1cm4gZS5hdHRfaWQ7DQogICAgICAgIH0pOw0KICAgICAgICBtb3ZlQXBpKHsgcGlkOiB0aGlzLnJ1bGVGb3JtLnJlZ2lvbiwgaW1hZ2VzOiBhdHRJZCB9KS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+S4iuS8oOaIkOWKnycpOw0KICAgICAgICAgIHRoaXMuJGVtaXQoJ3VwbG9hZFN1Y2Nlc3MnKTsNCiAgICAgICAgICB0aGlzLnVwbG9hZE1vZGFsID0gZmFsc2U7DQogICAgICAgICAgdGhpcy5pbml0RGF0YSgpOw0KICAgICAgICB9KTsNCiAgICAgIH0NCiAgICB9LA0KICAgIHVwbG9hZEl0ZW0oZmlsZSkgew0KICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsNCiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsNCiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7DQogICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGlkJywgdGhpcy5ydWxlRm9ybS5yZWdpb24pOw0KICAgICAgICBmaWxlVXBsb2FkKGZvcm1EYXRhKQ0KICAgICAgICAgIC50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09IDIwMCkgew0KICAgICAgICAgICAgICByZXNvbHZlKCk7DQogICAgICAgICAgICAgIC8vIHRoaXMuJGVtaXQoJ3VwbG9hZEltZ1N1Y2Nlc3MnLCByZXMuZGF0YSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICAgICAgbWVzc2FnZTogJ+S4iuS8oOWksei0pScsDQogICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywNCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMTAwMCwNCiAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSkNCiAgICAgICAgICAuY2F0Y2goKGVycikgPT4gew0KICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOw0KICAgICAgICAgIH0pOw0KICAgICAgfSk7DQogICAgfSwNCiAgICBiZWZvcmVVcGxvYWQoZmlsZSkgew0KICAgICAgY29uc29sZS5sb2coZmlsZSk7DQogICAgfSwNCiAgICBjcmVhdFFyQ29kZSh1cmwpIHsNCiAgICAgIHRoaXMuJHJlZnMucXJDb2RlVXJsLmlubmVySFRNTCA9ICcnOw0KICAgICAgdmFyIHFyY29kZSA9IG5ldyBRUkNvZGUodGhpcy4kcmVmcy5xckNvZGVVcmwsIHsNCiAgICAgICAgdGV4dDogdXJsLCAvLyDpnIDopoHovazmjaLkuLrkuoznu7TnoIHnmoTlhoXlrrkNCiAgICAgICAgd2lkdGg6IDE2MCwNCiAgICAgICAgaGVpZ2h0OiAxNjAsDQogICAgICAgIGNvbG9yRGFyazogJyMwMDAwMDAnLA0KICAgICAgICBjb2xvckxpZ2h0OiAnI2ZmZmZmZicsDQogICAgICAgIGNvcnJlY3RMZXZlbDogUVJDb2RlLkNvcnJlY3RMZXZlbC5ILA0KICAgICAgfSk7DQogICAgfSwNCiAgICBoYW5kbGVXZWJSZW1vdmUoZmlsZSkgew0KICAgICAgbGV0IGluZGV4ID0gdGhpcy5ydWxlRm9ybS5pbWdMaXN0LmZpbmRJbmRleCgoZSkgPT4gew0KICAgICAgICByZXR1cm4gZS51cmwgPT0gZmlsZS51cmw7DQogICAgICB9KTsNCiAgICAgIHRoaXMucnVsZUZvcm0uaW1nTGlzdC5zcGxpY2UoaW5kZXgsIDEpOw0KICAgIH0sDQogICAgaGFuZGxlUmVtb3ZlKGluZGV4KSB7DQogICAgICB0aGlzLnJ1bGVGb3JtLmltZ0xpc3Quc3BsaWNlKGluZGV4LCAxKTsNCiAgICB9LA0KICAgIGhhbmRsZVBpY3R1cmVDYXJkUHJldmlldyhmaWxlKSB7DQogICAgICB0aGlzLmRpYWxvZ0ltYWdlVXJsID0gZmlsZS51cmw7DQogICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlOw0KICAgIH0sDQogICAgaGFuZGxlRG93bmxvYWQoZmlsZSkgew0KICAgICAgY29uc29sZS5sb2coZmlsZSk7DQogICAgfSwNCiAgICBhc3luYyBmaWxlQ2hhbmdlKGZpbGUsIGZpbGVMaXN0KSB7DQogICAgICBpZiAoaXNQaWNVcGxvYWQoZmlsZSkpIHsNCiAgICAgICAgaWYgKGZpbGUuc2l6ZSA+PSAyMDk3MTUyKSB7DQogICAgICAgICAgYXdhaXQgdGhpcy5jb21JbWcoZmlsZS5yYXcpLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgICAgZmlsZUxpc3QubWFwKChlKSA9PiB7DQogICAgICAgICAgICAgIGlmIChlLnVpZCA9PT0gZmlsZS51aWQpIHsNCiAgICAgICAgICAgICAgICBlLnJhdyA9IHJlczsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB0aGlzLnJ1bGVGb3JtLmltZ0xpc3QgPSBmaWxlTGlzdDsNCiAgICAgICAgICB9KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLnJ1bGVGb3JtLmltZ0xpc3QgPSBmaWxlTGlzdDsNCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgLy8g5LuOcnVsZUZvcm3lr7nosaHnmoRpbWdMaXN05pWw57uE5Lit5Yig6Zmk5pyA5ZCO5LiA5Liq5YWD57SgDQogICAgICAgIHRoaXMucnVsZUZvcm0uaW1nTGlzdC5zcGxpY2UodGhpcy5ydWxlRm9ybS5pbWdMaXN0Lmxlbmd0aCwgMSk7DQogICAgICB9DQogICAgfSwNCiAgICBjb21JbWcoZmlsZSkgew0KICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsNCiAgICAgICAgY29tcHJlc3NJbWcoZmlsZSkudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgcmVzb2x2ZShyZXMpOw0KICAgICAgICB9KTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgbG9hZERhdGEoaXRlbSwgY2FsbGJhY2spIHsNCiAgICAgIGdldENhdGVnb3J5TGlzdEFwaSh7DQogICAgICAgIHBpZDogaXRlbS52YWx1ZSwNCiAgICAgIH0pDQogICAgICAgIC50aGVuKGFzeW5jIChyZXMpID0+IHsNCiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzLmRhdGEubGlzdDsNCiAgICAgICAgICBjYWxsYmFjayhkYXRhKTsNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKChyZXMpID0+IHt9KTsNCiAgICB9LA0KICAgIGhhbmRsZUNoYW5nZShlKSB7DQogICAgICBpZiAodGhpcy5ydWxlRm9ybS50eXBlID09IDIpIHRoaXMuc2NhblVwbG9hZFFyY29kZSgpOw0KICAgIH0sDQogICAgLy8g56e75YqoDQogICAgaGFuZGxlRHJhZ1N0YXJ0KGUsIGl0ZW0pIHsNCiAgICAgIHRoaXMuZHJhZ2dpbmcgPSBpdGVtOw0KICAgIH0sDQogICAgaGFuZGxlRHJhZ0VuZChlLCBpdGVtKSB7DQogICAgICB0aGlzLmRyYWdnaW5nID0gbnVsbDsNCiAgICB9LA0KICAgIGhhbmRsZURyYWdPdmVyKGUpIHsNCiAgICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7DQogICAgfSwNCiAgICBoYW5kbGVEcmFnRW50ZXIoZSwgaXRlbSkgew0KICAgICAgZS5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICdtb3ZlJzsNCiAgICAgIGlmIChpdGVtID09PSB0aGlzLmRyYWdnaW5nKSB7DQogICAgICAgIHJldHVybjsNCiAgICAgIH0NCiAgICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLnRoaXMucnVsZUZvcm0uaW1nTGlzdF07DQogICAgICBjb25zdCBzcmMgPSBuZXdJdGVtcy5pbmRleE9mKHRoaXMuZHJhZ2dpbmcpOw0KICAgICAgY29uc3QgZHN0ID0gbmV3SXRlbXMuaW5kZXhPZihpdGVtKTsNCiAgICAgIG5ld0l0ZW1zLnNwbGljZShkc3QsIDAsIC4uLm5ld0l0ZW1zLnNwbGljZShzcmMsIDEpKTsNCiAgICAgIHRoaXMucnVsZUZvcm0uaW1nTGlzdCA9IG5ld0l0ZW1zOw0KICAgIH0sDQogICAgY2xvc2VkKCkgew0KICAgICAgdGhpcy5pbml0RGF0YSgpOw0KICAgICAgc2NhblVwbG9hZENvZGUoKS50aGVuKChyZXMpID0+IHt9KTsNCiAgICB9LA0KICAgIGNsZWFyKCkgew0KICAgICAgdGhpcy51cGxvYWRNb2RhbCA9IGZhbHNlOw0KICAgICAgdGhpcy5pbml0RGF0YSgpOw0KICAgIH0sDQogICAgaW5pdERhdGEoKSB7DQogICAgICB0aGlzLnJ1bGVGb3JtLnR5cGUgPSAwOw0KICAgICAgdGhpcy5ydWxlRm9ybS5yZWdpb24gPSAwOw0KICAgICAgdGhpcy5zY2FuVG9rZW4gPSAnJzsNCiAgICAgIHRoaXMud2ViSW1nVXJsID0gJyc7DQogICAgICB0aGlzLnJ1bGVGb3JtLmltZ0xpc3QgPSBbXTsNCiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lKTsNCiAgICAgIHRoaXMudGltZSA9IHVuZGVmaW5lZDsNCiAgICB9LA0KICB9LA0KfTsNCg=="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AAuIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/uploadImg","sourcesContent":["<template>\r\n <div>\r\n <el-dialog\r\n title=\"上传图片\"\r\n :visible.sync=\"uploadModal\"\r\n :append-to-body=\"true\"\r\n :width=\"isIframe ? '100%' : '1024px'\"\r\n :fullscreen=\"isIframe\"\r\n @close=\"closed\"\r\n >\r\n <div class=\"main\" v-loading=\"loading\">\r\n <el-form :model=\"ruleForm\" :rules=\"rules\" ref=\"ruleForm\" label-width=\"100px\" class=\"demo-ruleForm\">\r\n <el-form-item label=\"上传方式:\" prop=\"type\">\r\n <el-radio-group v-model=\"ruleForm.type\" @input=\"radioChange(ruleForm.type)\">\r\n <el-radio :label=\"0\">本地上传</el-radio>\r\n <el-radio :label=\"1\">网络上传</el-radio>\r\n <el-radio :label=\"2\">扫码上传</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"上传至分组:\" prop=\"region\" v-show=\"ruleForm.type == 0 || ruleForm.type == 1\">\r\n <el-cascader\r\n class=\"form-width\"\r\n v-model=\"ruleForm.region\"\r\n :props=\"props\"\r\n :options=\"categoryList\"\r\n @change=\"handleChange\"\r\n ></el-cascader>\r\n </el-form-item>\r\n <el-form-item label=\"网络图片:\" prop=\"region\" v-if=\"ruleForm.type == 1\">\r\n <el-input class=\"form-width\" v-model=\"webImgUrl\" placeholder=\"请网络图片地址\"></el-input>\r\n <span class=\"tq-text\" v-db-click @click=\"getImg\">提取照片</span>\r\n </el-form-item>\r\n <el-form-item label=\"上传图片:\" prop=\"region\" v-if=\"ruleForm.type == 0\">\r\n <div class=\"acea-row\">\r\n <div class=\"uploadCont\">\r\n <el-upload\r\n ref=\"upload\"\r\n :action=\"fileUrl\"\r\n list-type=\"picture-card\"\r\n :on-change=\"fileChange\"\r\n :file-list=\"ruleForm.imgList\"\r\n :auto-upload=\"false\"\r\n :data=\"uploadData\"\r\n :headers=\"header\"\r\n :multiple=\"true\"\r\n :limit=\"limit\"\r\n >\r\n <i slot=\"default\" class=\"el-icon-plus\"></i>\r\n <div\r\n slot=\"file\"\r\n slot-scope=\"{ file }\"\r\n draggable=\"false\"\r\n @dragstart=\"handleDragStart($event, file)\"\r\n @dragover=\"handleDragOver($event, file)\"\r\n @dragenter=\"handleDragEnter($event, file)\"\r\n @dragend=\"handleDragEnd($event, file)\"\r\n >\r\n <img class=\"el-upload-list__item-thumbnail\" :src=\"file.url\" alt=\"\" />\r\n <i class=\"el-icon-error btndel\" v-db-click @click=\"handleWebRemove(file)\" />\r\n </div>\r\n </el-upload>\r\n <div class=\"tips\">\r\n 建议上传图片最大宽度750px,不超过3MB;仅支持jpeg、jpg、png格式,可拖拽调整上传顺序\r\n </div>\r\n </div>\r\n </div>\r\n </el-form-item>\r\n <template v-if=\"ruleForm.type == 1\">\r\n <div class=\"img-box pl100\">\r\n <div\r\n v-for=\"(item, index) in ruleForm.imgList\"\r\n :key=\"index\"\r\n class=\"pictrue\"\r\n draggable=\"false\"\r\n @dragstart=\"handleDragStart($event, item)\"\r\n @dragover.prevent=\"handleDragOver($event, item)\"\r\n @dragenter=\"handleDragEnter($event, item)\"\r\n @dragend=\"handleDragEnd($event, item)\"\r\n >\r\n <img :src=\"item.url\" />\r\n <i class=\"el-icon-error btndel\" v-db-click @click=\"handleRemove(index)\" />\r\n </div>\r\n </div>\r\n </template>\r\n <div class=\"code-image\" v-if=\"ruleForm.type == 2\">\r\n <div class=\"left\">\r\n <el-form-item label=\"上传至分组:\" prop=\"region\">\r\n <el-cascader\r\n class=\"form-width\"\r\n v-model=\"ruleForm.region\"\r\n :props=\"props\"\r\n :options=\"categoryList\"\r\n @change=\"handleChange\"\r\n ></el-cascader>\r\n </el-form-item>\r\n <el-form-item label=\"二维码:\" prop=\"region\">\r\n <div class=\"code\" ref=\"qrCodeUrl\"></div>\r\n <div class=\"trip\">扫描二维码,快速上传手机图片</div>\r\n <div class=\"trip-small\">建议使用手机浏览器</div>\r\n </el-form-item>\r\n </div>\r\n <div class=\"right\">\r\n <el-button size=\"small\" v-db-click @click=\"scanUploadGet\">刷新图库</el-button>\r\n <div class=\"tip\">刷新图库按钮,可显示移动端上传成功的图片</div>\r\n <div class=\"img-box\">\r\n <div\r\n v-for=\"(item, index) in ruleForm.imgList\"\r\n :key=\"index\"\r\n class=\"pictrue\"\r\n draggable=\"false\"\r\n @dragstart=\"handleDragStart($event, item)\"\r\n @dragover.prevent=\"handleDragOver($event, item)\"\r\n @dragenter=\"handleDragEnter($event, item)\"\r\n @dragend=\"handleDragEnd($event, item)\"\r\n >\r\n <img :src=\"item.att_dir\" />\r\n <i class=\"el-icon-error btndel\" v-db-click @click=\"handleWebRemove(item)\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </el-form>\r\n </div>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button v-db-click @click=\"clear\">取 消</el-button>\r\n <el-button type=\"primary\" :disabled=\"!ruleForm.imgList.length\" v-db-click @click=\"submitUpload\"\r\n >确 定</el-button\r\n >\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { getCategoryListApi, moveApi, onlineUpload, scanUploadCode } from '@/api/uploadPictures';\r\nimport Setting from '@/setting';\r\nimport { getCookies } from '@/libs/util';\r\nimport { fileUpload, scanUploadQrcode, scanUploadGet } from '@/api/setting';\r\nimport QRCode from 'qrcodejs2';\r\nimport compressImg from '@/utils/compressImg.js';\r\nimport { isPicUpload } from '@/utils/index';\r\nexport default {\r\n name: '',\r\n props: {\r\n categoryList: {\r\n default: () => {\r\n return [];\r\n },\r\n },\r\n categoryId: {\r\n default: '',\r\n },\r\n isPage: {\r\n default: false,\r\n },\r\n isIframe: {\r\n default: false,\r\n },\r\n },\r\n watch: {\r\n uploadModal: {\r\n handler(newVal) {\r\n if (newVal) this.ruleForm.region = this.categoryId;\r\n },\r\n immediate: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n webImgUrl: '',\r\n uploadModal: false,\r\n fileUrl: Setting.apiBaseURL + '/file/upload',\r\n header: {\r\n 'Authori-zation': 'Bearer ' + getCookies('token'),\r\n },\r\n uploadData: {},\r\n props: { checkStrictly: true, emitPath: false, label: 'title', value: 'id' },\r\n disabled: false,\r\n ruleForm: {\r\n type: 0,\r\n region: '',\r\n imgList: [],\r\n },\r\n rules: { type: [{ required: true, message: '请选择活动资源', trigger: 'change' }] },\r\n qrcode: '',\r\n scanToken: '',\r\n limit: 20,\r\n loading: false,\r\n time: undefined,\r\n };\r\n },\r\n created() {},\r\n mounted() {},\r\n beforeDestroy() {\r\n clearInterval(this.time);\r\n this.time = undefined;\r\n },\r\n methods: {\r\n radioChange(type) {\r\n this.ruleForm.type = type;\r\n this.ruleForm.imgList = [];\r\n clearInterval(this.time);\r\n this.time = undefined;\r\n if (type == 2) {\r\n this.scanUploadQrcode();\r\n this.time = setInterval((e) => {\r\n this.scanUploadGet();\r\n }, 2000);\r\n }\r\n },\r\n scanUploadQrcode() {\r\n scanUploadQrcode(this.ruleForm.region).then((res) => {\r\n this.creatQrCode(res.data.url);\r\n this.scanToken = res.data.url;\r\n });\r\n },\r\n scanUploadGet() {\r\n let token = this.scanToken.split('token=')[1];\r\n scanUploadGet(token).then((res) => {\r\n this.ruleForm.imgList = res.data;\r\n });\r\n },\r\n\r\n getImg() {\r\n if (!this.webImgUrl) {\r\n this.$message.error('请先输入图片地址');\r\n return;\r\n }\r\n if (this.webImgUrl.indexOf('.php') != -1) {\r\n this.$message.error('请先输入其他图片地址');\r\n return;\r\n }\r\n this.ruleForm.imgList.push({\r\n url: this.webImgUrl,\r\n });\r\n },\r\n async submitUpload() {\r\n if (!this.ruleForm.imgList.length) return this.$message.warning('请先选择图片');\r\n if (this.ruleForm.type == 0) {\r\n this.uploadData = {\r\n pid: this.ruleForm.region,\r\n };\r\n if (this.ruleForm.imgList.length) {\r\n if (this.loading) return;\r\n this.loading = true;\r\n for (let i = 0; i < this.ruleForm.imgList.length; i++) {\r\n const file = this.ruleForm.imgList[i].raw;\r\n await this.uploadItem(file);\r\n if (i == this.ruleForm.imgList.length - 1) {\r\n this.$message.success('上传成功');\r\n this.$emit('uploadSuccess');\r\n this.uploadModal = false;\r\n this.loading = false;\r\n this.initData();\r\n }\r\n }\r\n }\r\n } else if (this.ruleForm.type == 1) {\r\n let urls = this.ruleForm.imgList.map((e) => {\r\n return e.url;\r\n });\r\n if (urls.length) {\r\n if (this.loading) return;\r\n this.loading = true;\r\n onlineUpload({ pid: this.ruleForm.region, images: urls })\r\n .then((res) => {\r\n this.$message.success('上传成功');\r\n this.$emit('uploadSuccess');\r\n this.uploadModal = false;\r\n this.loading = false;\r\n this.initData();\r\n })\r\n .catch((err) => {\r\n this.loading = false;\r\n this.$message.error(err.msg);\r\n });\r\n }\r\n } else if (this.ruleForm.type == 2) {\r\n let attId = this.ruleForm.imgList.map((e) => {\r\n return e.att_id;\r\n });\r\n moveApi({ pid: this.ruleForm.region, images: attId }).then((res) => {\r\n this.$message.success('上传成功');\r\n this.$emit('uploadSuccess');\r\n this.uploadModal = false;\r\n this.initData();\r\n });\r\n }\r\n },\r\n uploadItem(file) {\r\n return new Promise((resolve, reject) => {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n formData.append('pid', this.ruleForm.region);\r\n fileUpload(formData)\r\n .then((res) => {\r\n if (res.status == 200) {\r\n resolve();\r\n // this.$emit('uploadImgSuccess', res.data);\r\n } else {\r\n this.loading = false;\r\n this.$message({\r\n message: '上传失败',\r\n type: 'error',\r\n duration: 1000,\r\n });\r\n }\r\n })\r\n .catch((err) => {\r\n this.loading = false;\r\n this.$message.error(err.msg);\r\n });\r\n });\r\n },\r\n beforeUpload(file) {\r\n console.log(file);\r\n },\r\n creatQrCode(url) {\r\n this.$refs.qrCodeUrl.innerHTML = '';\r\n var qrcode = new QRCode(this.$refs.qrCodeUrl, {\r\n text: url, // 需要转换为二维码的内容\r\n width: 160,\r\n height: 160,\r\n colorDark: '#000000',\r\n colorLight: '#ffffff',\r\n correctLevel: QRCode.CorrectLevel.H,\r\n });\r\n },\r\n handleWebRemove(file) {\r\n let index = this.ruleForm.imgList.findIndex((e) => {\r\n return e.url == file.url;\r\n });\r\n this.ruleForm.imgList.splice(index, 1);\r\n },\r\n handleRemove(index) {\r\n this.ruleForm.imgList.splice(index, 1);\r\n },\r\n handlePictureCardPreview(file) {\r\n this.dialogImageUrl = file.url;\r\n this.dialogVisible = true;\r\n },\r\n handleDownload(file) {\r\n console.log(file);\r\n },\r\n async fileChange(file, fileList) {\r\n if (isPicUpload(file)) {\r\n if (file.size >= 2097152) {\r\n await this.comImg(file.raw).then((res) => {\r\n fileList.map((e) => {\r\n if (e.uid === file.uid) {\r\n e.raw = res;\r\n }\r\n });\r\n this.ruleForm.imgList = fileList;\r\n });\r\n } else {\r\n this.ruleForm.imgList = fileList;\r\n }\r\n } else {\r\n // 从ruleForm对象的imgList数组中删除最后一个元素\r\n this.ruleForm.imgList.splice(this.ruleForm.imgList.length, 1);\r\n }\r\n },\r\n comImg(file) {\r\n return new Promise((resolve, reject) => {\r\n compressImg(file).then((res) => {\r\n resolve(res);\r\n });\r\n });\r\n },\r\n loadData(item, callback) {\r\n getCategoryListApi({\r\n pid: item.value,\r\n })\r\n .then(async (res) => {\r\n const data = res.data.list;\r\n callback(data);\r\n })\r\n .catch((res) => {});\r\n },\r\n handleChange(e) {\r\n if (this.ruleForm.type == 2) this.scanUploadQrcode();\r\n },\r\n // 移动\r\n handleDragStart(e, item) {\r\n this.dragging = item;\r\n },\r\n handleDragEnd(e, item) {\r\n this.dragging = null;\r\n },\r\n handleDragOver(e) {\r\n e.dataTransfer.dropEffect = 'move';\r\n },\r\n handleDragEnter(e, item) {\r\n e.dataTransfer.effectAllowed = 'move';\r\n if (item === this.dragging) {\r\n return;\r\n }\r\n const newItems = [...this.ruleForm.imgList];\r\n const src = newItems.indexOf(this.dragging);\r\n const dst = newItems.indexOf(item);\r\n newItems.splice(dst, 0, ...newItems.splice(src, 1));\r\n this.ruleForm.imgList = newItems;\r\n },\r\n closed() {\r\n this.initData();\r\n scanUploadCode().then((res) => {});\r\n },\r\n clear() {\r\n this.uploadModal = false;\r\n this.initData();\r\n },\r\n initData() {\r\n this.ruleForm.type = 0;\r\n this.ruleForm.region = 0;\r\n this.scanToken = '';\r\n this.webImgUrl = '';\r\n this.ruleForm.imgList = [];\r\n clearInterval(this.time);\r\n this.time = undefined;\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n::v-deep .el-dialog__title {\r\n font-size: 16px;\r\n}\r\n.main {\r\n min-height: 410px;\r\n}\r\n.pictrue {\r\n width: 60px !important;\r\n height: 60px !important;\r\n border: 1px dotted rgba(0, 0, 0, 0.1);\r\n margin-right: 10px;\r\n position: relative;\r\n cursor: pointer;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n}\r\n.btndel {\r\n position: absolute;\r\n z-index: 1;\r\n font-size: 18px;\r\n right: -5px;\r\n top: -5px;\r\n color: #999;\r\n}\r\n.form-width {\r\n width: 280px;\r\n}\r\n.tq-text {\r\n margin-left: 14px;\r\n font-size: 12px;\r\n font-weight: 400;\r\n color: var(--prev-color-primary);\r\n cursor: pointer;\r\n}\r\n.uploadCont ::v-deep .el-upload--picture-card,\r\n::v-deep .el-upload-list--picture-card .el-upload-list__item {\r\n width: 64px;\r\n height: 64px;\r\n line-height: 72px;\r\n overflow: inherit;\r\n}\r\n.uploadCont ::v-deep .el-upload--picture-card,\r\n::v-deep .el-upload-list--picture-card .el-upload-list__item img {\r\n width: 64px !important;\r\n height: 64px !important;\r\n border-radius: 6px;\r\n object-fit: cover;\r\n}\r\n.pl100 {\r\n padding-left: 100px;\r\n}\r\n.img-box {\r\n display: flex;\r\n flex-wrap: wrap;\r\n}\r\n.tips {\r\n font-size: 12px;\r\n color: #bbbbbb;\r\n}\r\n.code-image {\r\n display: flex;\r\n margin-top: 12px;\r\n .left {\r\n display: flex;\r\n flex-direction: column;\r\n margin-right: 20px;\r\n align-items: center;\r\n .code {\r\n border: 1px solid #dddddd;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 200px;\r\n height: 200px;\r\n border-radius: 4px;\r\n .code-img {\r\n width: 160px;\r\n height: 160px;\r\n }\r\n }\r\n .form-width {\r\n width: 200px;\r\n }\r\n .code {\r\n margin-bottom: 14px;\r\n }\r\n .trip {\r\n color: #333333;\r\n text-align: center;\r\n line-height: 18px;\r\n }\r\n .trip-small {\r\n font-size: 12px;\r\n font-weight: 400;\r\n color: #bbbbbb;\r\n text-align: center;\r\n line-height: 16px;\r\n }\r\n }\r\n .right {\r\n margin-top: 62px;\r\n .tip {\r\n font-size: 12px;\r\n font-weight: 400;\r\n color: #bbbbbb;\r\n margin: 10px 0;\r\n }\r\n }\r\n}\r\n</style>\r\n"]}]}
|