tangning před 1 dnem
rodič
revize
58fd06a77c

+ 1 - 2
src/api/product/index.ts

@@ -196,13 +196,12 @@ export function SpaceSdkUpload(
 export function uploadApi(
   params: UploadFileParams,
   onUploadProgress: (progressEvent: ProgressEvent) => void,
-  cancelToken,
 ) {
   return defHttp.uploadFile<Result>(
     {
       url: Api.upload,
       onUploadProgress,
-      cancelToken,
+      cancelToken: params.cancelToken,
     },
     params,
   );

+ 1 - 0
src/utils/http/axios/Axios.ts

@@ -160,6 +160,7 @@ export class VAxios {
       conf = beforeRequestHook(conf, opt);
     }
     conf = this.supportFormData(conf);
+    console.log('supportFormData', conf);
     return new Promise((resolve, reject) => {
       this.axiosInstance
         .request<any, AxiosResponse<Result>>({

+ 6 - 15
src/views/productOperation/modal/uploadModal.vue

@@ -64,6 +64,7 @@
   // 存储每个文件的 AbortController
   let controller = null;
   let uid = null;
+  const cancelTokens = new Map(); // 存储取消令牌
   const { t } = useI18n();
   export default defineComponent({
     components: { BasicModal, BasicForm, Upload },
@@ -227,13 +228,6 @@
 
       function handleVisibleChange(v) {
         console.log(v, uploadRef.value);
-        abortControllers.value.forEach((controller) => {
-          controller.abort();
-        });
-        abortControllers.value.clear();
-        if (!v && uploadRef.value) {
-          uploadRef.value.clearFiles();
-        }
       }
       // v && props.userData && nextTick(() => onDataReceive(props.userData));
       const Submit = async (filePath) => {
@@ -263,25 +257,22 @@
         }
         const params = await validate();
         let file = fileFlow.list && fileFlow.list[0];
+        uid = file.uid;
         const apiData = {
           file: file,
           data: {
             dictId: params.dictId,
           },
         };
-        // 方法1:使用 AbortController(现代浏览器)
-        const controller = new AbortController();
-        abortControllers.value.set(file.uid, controller);
         loading.value = true;
         fileFlow.complete = 0;
-        // const CancelToken = axios.CancelToken;
-        // source = CancelToken.source();
         function onUploadProgress(progressEvent: ProgressEvent) {
-          const complete = ((progressEvent.loaded / progressEvent.total) * 100) | 0;
-          fileFlow.complete = complete;
+          if(uid == file.uid){
+            const complete = ((progressEvent.loaded / progressEvent.total) * 100) | 0;
+            fileFlow.complete = complete;
+          }
         }
         let url = await uploadApi(apiData, onUploadProgress);
-        abortControllers.value.delete(file.uid);
         option.onSuccess && option.onSuccess();
         console.log('uploadApi', url);
         fileFlow.filePath = url;