Commit 803bd5e3c40b5132060acb67cb189afbf00abda2

Authored by YunaiV
1 parent 1a60d0ce

v3.8.4:修复多文件上传报错出现的异常问题

yudao-ui-admin/src/components/FileUpload/index.vue
1 <template> 1 <template>
2 <div class="upload-file"> 2 <div class="upload-file">
3 <el-upload 3 <el-upload
4 - multiple  
5 - :action="uploadFileUrl"  
6 - :before-upload="handleBeforeUpload"  
7 - :file-list="fileList"  
8 - :limit="limit"  
9 - :on-error="handleUploadError"  
10 - :on-exceed="handleExceed"  
11 - :on-success="handleUploadSuccess"  
12 - :show-file-list="false"  
13 - :headers="headers"  
14 - class="upload-file-uploader"  
15 - ref="upload" 4 + multiple
  5 + :action="uploadFileUrl"
  6 + :before-upload="handleBeforeUpload"
  7 + :file-list="fileList"
  8 + :limit="limit"
  9 + :on-error="handleUploadError"
  10 + :on-exceed="handleExceed"
  11 + :on-success="handleUploadSuccess"
  12 + :show-file-list="false"
  13 + :headers="headers"
  14 + class="upload-file-uploader"
  15 + ref="fileUpload"
16 > 16 >
17 <!-- 上传按钮 --> 17 <!-- 上传按钮 -->
18 <el-button size="mini" type="primary">选取文件</el-button> 18 <el-button size="mini" type="primary">选取文件</el-button>
@@ -72,6 +72,7 @@ export default { @@ -72,6 +72,7 @@ export default {
72 return { 72 return {
73 number: 0, 73 number: 0,
74 uploadList: [], 74 uploadList: [],
  75 + baseUrl: process.env.VUE_APP_BASE_API,
75 uploadFileUrl: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", // 请求地址 76 uploadFileUrl: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", // 请求地址
76 headers: { Authorization: "Bearer " + getAccessToken() }, // 设置上传的请求头部 77 headers: { Authorization: "Bearer " + getAccessToken() }, // 设置上传的请求头部
77 fileList: [], 78 fileList: [],
@@ -118,7 +119,8 @@ export default { @@ -118,7 +119,8 @@ export default {
118 } 119 }
119 const isTypeOk = this.fileType.some((type) => { 120 const isTypeOk = this.fileType.some((type) => {
120 if (file.type.indexOf(type) > -1) return true; 121 if (file.type.indexOf(type) > -1) return true;
121 - return !!(fileExtension && fileExtension.indexOf(type) > -1); 122 + if (fileExtension && fileExtension.indexOf(type) > -1) return true;
  123 + return false;
122 }); 124 });
123 if (!isTypeOk) { 125 if (!isTypeOk) {
124 this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`); 126 this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`);
@@ -147,15 +149,17 @@ export default { @@ -147,15 +149,17 @@ export default {
147 this.$modal.closeLoading() 149 this.$modal.closeLoading()
148 }, 150 },
149 // 上传成功回调 151 // 上传成功回调
150 - handleUploadSuccess(res) {  
151 - // edit by 芋道源码  
152 - this.uploadList.push({ name: res.data, url: res.data });  
153 - if (this.uploadList.length === this.number) {  
154 - this.fileList = this.fileList.concat(this.uploadList);  
155 - this.uploadList = [];  
156 - this.number = 0;  
157 - this.$emit("input", this.listToString(this.fileList)); 152 + handleUploadSuccess(res, file) {
  153 + if (res.code === 200) {
  154 + // edit by 芋道源码
  155 + this.uploadList.push({ name: res.data, url: res.data });
  156 + this.uploadedSuccessfully();
  157 + } else {
  158 + this.number--;
158 this.$modal.closeLoading(); 159 this.$modal.closeLoading();
  160 + this.$modal.msgError(res.msg);
  161 + this.$refs.fileUpload.handleRemove(file);
  162 + this.uploadedSuccessfully();
159 } 163 }
160 }, 164 },
161 // 删除文件 165 // 删除文件
@@ -163,6 +167,16 @@ export default { @@ -163,6 +167,16 @@ export default {
163 this.fileList.splice(index, 1); 167 this.fileList.splice(index, 1);
164 this.$emit("input", this.listToString(this.fileList)); 168 this.$emit("input", this.listToString(this.fileList));
165 }, 169 },
  170 + // 上传结束处理
  171 + uploadedSuccessfully() {
  172 + if (this.number > 0 && this.uploadList.length === this.number) {
  173 + this.fileList = this.fileList.concat(this.uploadList);
  174 + this.uploadList = [];
  175 + this.number = 0;
  176 + this.$emit("input", this.listToString(this.fileList));
  177 + this.$modal.closeLoading();
  178 + }
  179 + },
166 // 获取文件名称 180 // 获取文件名称
167 getFileName(name) { 181 getFileName(name) {
168 if (name.lastIndexOf("/") > -1) { 182 if (name.lastIndexOf("/") > -1) {
@@ -178,7 +192,7 @@ export default { @@ -178,7 +192,7 @@ export default {
178 for (let i in list) { 192 for (let i in list) {
179 strs += list[i].url + separator; 193 strs += list[i].url + separator;
180 } 194 }
181 - return strs !== '' ? strs.substr(0, strs.length - 1) : ''; 195 + return strs != '' ? strs.substr(0, strs.length - 1) : '';
182 } 196 }
183 } 197 }
184 }; 198 };