1 |
- {"remainingRequest":"E:\\mec-cloud_IntelligentManufacturing_CRM\\mec-cloud_IntelligentManufacturing_CRM\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\mec-cloud_IntelligentManufacturing_CRM\\mec-cloud_IntelligentManufacturing_CRM\\ruoyi-ui\\node_modules\\k-form-design\\packages\\components\\UploadFile\\uploadFile.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\mec-cloud_IntelligentManufacturing_CRM\\mec-cloud_IntelligentManufacturing_CRM\\ruoyi-ui\\node_modules\\k-form-design\\packages\\components\\UploadFile\\uploadFile.vue","mtime":1688725442031},{"path":"E:\\mec-cloud_IntelligentManufacturing_CRM\\mec-cloud_IntelligentManufacturing_CRM\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1688725391035},{"path":"E:\\mec-cloud_IntelligentManufacturing_CRM\\mec-cloud_IntelligentManufacturing_CRM\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1688725407620},{"path":"E:\\mec-cloud_IntelligentManufacturing_CRM\\mec-cloud_IntelligentManufacturing_CRM\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1688725391035},{"path":"E:\\mec-cloud_IntelligentManufacturing_CRM\\mec-cloud_IntelligentManufacturing_CRM\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1688725415411}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQovKg0KICogYXV0aG9yIGtjeg0KICogZGF0ZSAyMDE5LTEyLTMxDQogKiBkZXNjcmlwdGlvbiDkuIrkvKDmlofku7bnu4Tku7YNCiAqLw0KaW1wb3J0IHsgbWVzc2FnZSB9IGZyb20gImFudC1kZXNpZ24tdnVlIjsNCmltcG9ydCB7IHBsdWdpbk1hbmFnZXIgfSBmcm9tICIuLi8uLi91dGlscy9pbmRleCI7DQoNCmNvbnN0IFVwbG9hZCA9IHBsdWdpbk1hbmFnZXIuZ2V0Q29tcG9uZW50KCJ1cGxvYWQiKTsNCmNvbnN0IFVwbG9hZERyYWdnZXIgPSBwbHVnaW5NYW5hZ2VyLmdldENvbXBvbmVudCgidXBsb2FkRHJhZ2dlciIpOw0KY29uc3QgQnV0dG9uID0gcGx1Z2luTWFuYWdlci5nZXRDb21wb25lbnQoImFCdXR0b24iKS5jb21wb25lbnQ7DQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogIktVcGxvYWRGaWxlIiwNCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9yZXF1aXJlLXByb3AtdHlwZXMNCiAgcHJvcHM6IFsicmVjb3JkIiwgInZhbHVlIiwgImNvbmZpZyIsICJwYXJlbnREaXNhYmxlZCIsICJkeW5hbWljRGF0YSJdLA0KICBjb21wb25lbnRzOiB7DQogICAgVXBsb2FkOiBVcGxvYWQuY29tcG9uZW50LA0KICAgIFVwbG9hZERyYWdnZXI6IFVwbG9hZERyYWdnZXIuY29tcG9uZW50LA0KICAgIEJ1dHRvbg0KICB9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBmaWxlTGlzdDogW10NCiAgICB9Ow0KICB9LA0KICB3YXRjaDogew0KICAgIHZhbHVlOiB7DQogICAgICAvLyB2YWx1ZSDpnIDopoHmt7Hluqbnm5HlkKzlj4rpu5jorqTlhYjmiafooYxoYW5kbGVy5Ye95pWwDQogICAgICBoYW5kbGVyKHZhbCkgew0KICAgICAgICBpZiAodmFsKSB7DQogICAgICAgICAgdGhpcy5zZXRGaWxlTGlzdCgpOw0KICAgICAgICB9DQogICAgICB9LA0KICAgICAgaW1tZWRpYXRlOiB0cnVlLA0KICAgICAgZGVlcDogdHJ1ZQ0KICAgIH0NCiAgfSwNCg0KICBjb21wdXRlZDogew0KICAgIG9wdGlvbnNEYXRhKCkgew0KICAgICAgdHJ5IHsNCiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodGhpcy5yZWNvcmQub3B0aW9ucy5kYXRhKTsNCiAgICAgIH0gY2F0Y2ggKGVycikgew0KICAgICAgICBjb25zb2xlLmVycm9yKGVycik7DQogICAgICAgIHJldHVybiB7fTsNCiAgICAgIH0NCiAgICB9DQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICBzZXRGaWxlTGlzdCgpIHsNCiAgICAgIC8vIOW9k+S8oOWFpXZhbHVl5pS55Y+Y5pe277yMZmlsZUxpc3TkuZ/opoHmlLnlj5gNCiAgICAgIC8vIOWmguaenOS8oOWFpeeahOWAvOS4uuWtl+espuS4su+8jOWImei9rOaIkGpzb24NCiAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gInN0cmluZyIpIHsNCiAgICAgICAgdGhpcy5maWxlTGlzdCA9IEpTT04ucGFyc2UodGhpcy52YWx1ZSk7DQogICAgICAgIC8vIOWwhui9rOWlveeahGpzb27opobnm5bnu4Tku7bpu5jorqTlgLznmoTlrZfnrKbkuLINCiAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3RDaGFuZ2UoKTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuZmlsZUxpc3QgPSB0aGlzLnZhbHVlOw0KICAgICAgfQ0KICAgIH0sDQogICAgaGFuZGxlU2VsZWN0Q2hhbmdlKCkgew0KICAgICAgc2V0VGltZW91dCgoKSA9PiB7DQogICAgICAgIGNvbnN0IGFyciA9IHRoaXMuZmlsZUxpc3QubWFwKGl0ZW0gPT4gew0KICAgICAgICAgIGlmICh0eXBlb2YgaXRlbS5yZXNwb25zZSAhPT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGl0ZW0ucmVzcG9uc2U7DQogICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICB0eXBlOiAiZmlsZSIsDQogICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSwNCiAgICAgICAgICAgICAgc3RhdHVzOiBpdGVtLnN0YXR1cywNCiAgICAgICAgICAgICAgdWlkOiByZXMuZGF0YS5maWxlSWQgfHwgRGF0ZS5ub3coKSwNCiAgICAgICAgICAgICAgdXJsOiByZXMuZGF0YS51cmwgfHwgIiINCiAgICAgICAgICAgIH07DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHJldHVybiB7DQogICAgICAgICAgICAgIHR5cGU6ICJmaWxlIiwNCiAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLA0KICAgICAgICAgICAgICBzdGF0dXM6IGl0ZW0uc3RhdHVzLA0KICAgICAgICAgICAgICB1aWQ6IGl0ZW0udWlkLA0KICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsIHx8ICIiDQogICAgICAgICAgICB9Ow0KICAgICAgICAgIH0NCiAgICAgICAgfSk7DQoNCiAgICAgICAgdGhpcy4kZW1pdCgiY2hhbmdlIiwgYXJyKTsNCiAgICAgICAgdGhpcy4kZW1pdCgiaW5wdXQiLCBhcnIpOw0KICAgICAgfSwgMTApOw0KICAgIH0sDQogICAgaGFuZGxlUHJldmlldyhmaWxlKSB7DQogICAgICAvLyDkuIvovb3mlofku7YNCiAgICAgIGNvbnN0IGRvd25sb2FkV2F5ID0gdGhpcy5yZWNvcmQub3B0aW9ucy5kb3dubG9hZFdheTsNCiAgICAgIGNvbnN0IGR5bmFtaWNGdW4gPSB0aGlzLnJlY29yZC5vcHRpb25zLmR5bmFtaWNGdW47DQogICAgICBpZiAoZG93bmxvYWRXYXkgPT09ICJhIikgew0KICAgICAgICAvLyDkvb/nlKhh5qCH562+5LiL6L29DQogICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7DQogICAgICAgIGEuaHJlZiA9IGZpbGUudXJsIHx8IGZpbGUudGh1bWJVcmw7DQogICAgICAgIGEuZG93bmxvYWQgPSBmaWxlLm5hbWU7DQogICAgICAgIGEuY2xpY2soKTsNCiAgICAgIH0gZWxzZSBpZiAoZG93bmxvYWRXYXkgPT09ICJhamF4Iikgew0KICAgICAgICAvLyDkvb/nlKhhamF46I635Y+W5paH5Lu2YmxvYu+8jOW5tuS/neaMgeWIsOacrOWcsA0KICAgICAgICB0aGlzLmdldEJsb2IoZmlsZS51cmwgfHwgZmlsZS50aHVtYlVybCkudGhlbihibG9iID0+IHsNCiAgICAgICAgICB0aGlzLnNhdmVBcyhibG9iLCBmaWxlLm5hbWUpOw0KICAgICAgICB9KTsNCiAgICAgIH0gZWxzZSBpZiAoZG93bmxvYWRXYXkgPT09ICJkeW5hbWljIikgew0KICAgICAgICAvLyDop6blj5HliqjmgIHlh73mlbANCiAgICAgICAgdGhpcy5keW5hbWljRGF0YVtkeW5hbWljRnVuXShmaWxlKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8qKg0KICAgICAqIOiOt+WPliBibG9iDQogICAgICogdXJsIOebruagh+aWh+S7tuWcsOWdgA0KICAgICAqLw0KICAgIGdldEJsb2IodXJsKSB7DQogICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7DQogICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOw0KDQogICAgICAgIHhoci5vcGVuKCJHRVQiLCB1cmwsIHRydWUpOw0KICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gImJsb2IiOw0KICAgICAgICB4aHIub25sb2FkID0gKCkgPT4gew0KICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDApIHsNCiAgICAgICAgICAgIHJlc29sdmUoeGhyLnJlc3BvbnNlKTsNCiAgICAgICAgICB9DQogICAgICAgIH07DQoNCiAgICAgICAgeGhyLnNlbmQoKTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgLyoqDQogICAgICog5L+d5a2YIGJsb2INCiAgICAgKiBmaWxlbmFtZSDmg7PopoHkv53lrZjnmoTmlofku7blkI3np7ANCiAgICAgKi8NCiAgICBzYXZlQXMoYmxvYiwgZmlsZW5hbWUpIHsNCiAgICAgIGlmICh3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IpIHsNCiAgICAgICAgbmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYiwgZmlsZW5hbWUpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsNCiAgICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJvZHkiKTsNCiAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7DQogICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlbmFtZTsNCg0KICAgICAgICAvLyBmaXggRmlyZWZveA0KICAgICAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQobGluayk7DQoNCiAgICAgICAgbGluay5jbGljaygpOw0KICAgICAgICBib2R5LnJlbW92ZUNoaWxkKGxpbmspOw0KDQogICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKGxpbmsuaHJlZik7DQogICAgICB9DQogICAgfSwNCiAgICByZW1vdmUoKSB7DQogICAgICB0aGlzLmhhbmRsZVNlbGVjdENoYW5nZSgpOw0KICAgIH0sDQogICAgYmVmb3JlVXBsb2FkKGUsIGZpbGVzKSB7DQogICAgICBpZiAoZmlsZXMubGVuZ3RoICsgdGhpcy5maWxlTGlzdC5sZW5ndGggPiB0aGlzLnJlY29yZC5vcHRpb25zLmxpbWl0KSB7DQogICAgICAgIG1lc3NhZ2Uud2FybmluZyhg5pyA5aSn5LiK5Lyg5pWw6YeP5Li6JHt0aGlzLnJlY29yZC5vcHRpb25zLmxpbWl0fWApOw0KICAgICAgICBmaWxlcy5zcGxpY2UodGhpcy5yZWNvcmQub3B0aW9ucy5saW1pdCAtIHRoaXMuZmlsZUxpc3QubGVuZ3RoKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGhhbmRsZUNoYW5nZShpbmZvKSB7DQogICAgICB0aGlzLmZpbGVMaXN0ID0gaW5mby5maWxlTGlzdDsNCiAgICAgIGlmIChpbmZvLmZpbGUuc3RhdHVzID09PSAiZG9uZSIpIHsNCiAgICAgICAgY29uc3QgcmVzID0gaW5mby5maWxlLnJlc3BvbnNlOw0KICAgICAgICBpZiAocmVzLmNvZGUgPT09IDApIHsNCiAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdENoYW5nZSgpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuZmlsZUxpc3QucG9wKCk7DQogICAgICAgICAgbWVzc2FnZS5lcnJvcihg5paH5Lu25LiK5Lyg5aSx6LSlYCk7DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSBpZiAoaW5mby5maWxlLnN0YXR1cyA9PT0gImVycm9yIikgew0KICAgICAgICBtZXNzYWdlLmVycm9yKGDmlofku7bkuIrkvKDlpLHotKVgKTsNCiAgICAgIH0NCiAgICB9DQogIH0NCn07DQo="},{"version":3,"sources":["uploadFile.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;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;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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","file":"uploadFile.vue","sourceRoot":"node_modules/k-form-design/packages/components/UploadFile","sourcesContent":["<!--\r\n * @Description: 对上传文件组件进行封装\r\n * @Author: kcz\r\n * @Date: 2020-03-17 12:53:50\r\n * @LastEditors: kcz\r\n * @LastEditTime: 2022-10-26 21:14:12\r\n -->\r\n<template>\r\n <div :style=\"{ width: record.options.width }\">\r\n <Upload\r\n v-if=\"!record.options.drag\"\r\n :disabled=\"record.options.disabled || parentDisabled\"\r\n :name=\"config.uploadFileName || record.options.fileName\"\r\n :headers=\"config.uploadFileHeaders || record.options.headers\"\r\n :data=\"config.uploadFileData || optionsData\"\r\n :action=\"config.uploadFile || record.options.action\"\r\n :multiple=\"record.options.multiple\"\r\n :fileList=\"fileList\"\r\n @preview=\"handlePreview\"\r\n @change=\"handleChange\"\r\n :remove=\"remove\"\r\n :beforeUpload=\"beforeUpload\"\r\n >\r\n <Button\r\n v-if=\"fileList.length < record.options.limit\"\r\n :disabled=\"record.options.disabled || parentDisabled\"\r\n >\r\n <a-icon type=\"upload\" /> {{ record.options.placeholder }}\r\n </Button>\r\n </Upload>\r\n <UploadDragger\r\n v-else\r\n :class=\"{ 'hide-upload-drag': !(fileList.length < record.options.limit) }\"\r\n :disabled=\"record.options.disabled || parentDisabled\"\r\n :name=\"config.uploadFileName || record.options.fileName\"\r\n :headers=\"config.uploadFileHeaders || record.options.headers\"\r\n :data=\"config.uploadFileData || optionsData\"\r\n :action=\"config.uploadFile || record.options.action\"\r\n :multiple=\"record.options.multiple\"\r\n :fileList=\"fileList\"\r\n @preview=\"handlePreview\"\r\n @change=\"handleChange\"\r\n :remove=\"remove\"\r\n :beforeUpload=\"beforeUpload\"\r\n >\r\n <p class=\"ant-upload-drag-icon\">\r\n <a-icon type=\"cloud-upload\" />\r\n </p>\r\n <p class=\"ant-upload-text\">单击或拖动文件到此区域</p>\r\n </UploadDragger>\r\n </div>\r\n</template>\r\n<script>\r\n/*\r\n * author kcz\r\n * date 2019-12-31\r\n * description 上传文件组件\r\n */\r\nimport { message } from \"ant-design-vue\";\r\nimport { pluginManager } from \"../../utils/index\";\r\n\r\nconst Upload = pluginManager.getComponent(\"upload\");\r\nconst UploadDragger = pluginManager.getComponent(\"uploadDragger\");\r\nconst Button = pluginManager.getComponent(\"aButton\").component;\r\n\r\nexport default {\r\n name: \"KUploadFile\",\r\n // eslint-disable-next-line vue/require-prop-types\r\n props: [\"record\", \"value\", \"config\", \"parentDisabled\", \"dynamicData\"],\r\n components: {\r\n Upload: Upload.component,\r\n UploadDragger: UploadDragger.component,\r\n Button\r\n },\r\n data() {\r\n return {\r\n fileList: []\r\n };\r\n },\r\n watch: {\r\n value: {\r\n // value 需要深度监听及默认先执行handler函数\r\n handler(val) {\r\n if (val) {\r\n this.setFileList();\r\n }\r\n },\r\n immediate: true,\r\n deep: true\r\n }\r\n },\r\n\r\n computed: {\r\n optionsData() {\r\n try {\r\n return JSON.parse(this.record.options.data);\r\n } catch (err) {\r\n console.error(err);\r\n return {};\r\n }\r\n }\r\n },\r\n methods: {\r\n setFileList() {\r\n // 当传入value改变时,fileList也要改变\r\n // 如果传入的值为字符串,则转成json\r\n if (typeof this.value === \"string\") {\r\n this.fileList = JSON.parse(this.value);\r\n // 将转好的json覆盖组件默认值的字符串\r\n this.handleSelectChange();\r\n } else {\r\n this.fileList = this.value;\r\n }\r\n },\r\n handleSelectChange() {\r\n setTimeout(() => {\r\n const arr = this.fileList.map(item => {\r\n if (typeof item.response !== \"undefined\") {\r\n const res = item.response;\r\n return {\r\n type: \"file\",\r\n name: item.name,\r\n status: item.status,\r\n uid: res.data.fileId || Date.now(),\r\n url: res.data.url || \"\"\r\n };\r\n } else {\r\n return {\r\n type: \"file\",\r\n name: item.name,\r\n status: item.status,\r\n uid: item.uid,\r\n url: item.url || \"\"\r\n };\r\n }\r\n });\r\n\r\n this.$emit(\"change\", arr);\r\n this.$emit(\"input\", arr);\r\n }, 10);\r\n },\r\n handlePreview(file) {\r\n // 下载文件\r\n const downloadWay = this.record.options.downloadWay;\r\n const dynamicFun = this.record.options.dynamicFun;\r\n if (downloadWay === \"a\") {\r\n // 使用a标签下载\r\n const a = document.createElement(\"a\");\r\n a.href = file.url || file.thumbUrl;\r\n a.download = file.name;\r\n a.click();\r\n } else if (downloadWay === \"ajax\") {\r\n // 使用ajax获取文件blob,并保持到本地\r\n this.getBlob(file.url || file.thumbUrl).then(blob => {\r\n this.saveAs(blob, file.name);\r\n });\r\n } else if (downloadWay === \"dynamic\") {\r\n // 触发动态函数\r\n this.dynamicData[dynamicFun](file);\r\n }\r\n },\r\n /**\r\n * 获取 blob\r\n * url 目标文件地址\r\n */\r\n getBlob(url) {\r\n return new Promise(resolve => {\r\n const xhr = new XMLHttpRequest();\r\n\r\n xhr.open(\"GET\", url, true);\r\n xhr.responseType = \"blob\";\r\n xhr.onload = () => {\r\n if (xhr.status === 200) {\r\n resolve(xhr.response);\r\n }\r\n };\r\n\r\n xhr.send();\r\n });\r\n },\r\n /**\r\n * 保存 blob\r\n * filename 想要保存的文件名称\r\n */\r\n saveAs(blob, filename) {\r\n if (window.navigator.msSaveOrOpenBlob) {\r\n navigator.msSaveBlob(blob, filename);\r\n } else {\r\n const link = document.createElement(\"a\");\r\n const body = document.querySelector(\"body\");\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = filename;\r\n\r\n // fix Firefox\r\n link.style.display = \"none\";\r\n body.appendChild(link);\r\n\r\n link.click();\r\n body.removeChild(link);\r\n\r\n window.URL.revokeObjectURL(link.href);\r\n }\r\n },\r\n remove() {\r\n this.handleSelectChange();\r\n },\r\n beforeUpload(e, files) {\r\n if (files.length + this.fileList.length > this.record.options.limit) {\r\n message.warning(`最大上传数量为${this.record.options.limit}`);\r\n files.splice(this.record.options.limit - this.fileList.length);\r\n }\r\n },\r\n handleChange(info) {\r\n this.fileList = info.fileList;\r\n if (info.file.status === \"done\") {\r\n const res = info.file.response;\r\n if (res.code === 0) {\r\n this.handleSelectChange();\r\n } else {\r\n this.fileList.pop();\r\n message.error(`文件上传失败`);\r\n }\r\n } else if (info.file.status === \"error\") {\r\n message.error(`文件上传失败`);\r\n }\r\n }\r\n }\r\n};\r\n</script>\r\n"]}]}
|