From 06018add798a6c23ebbfa91a3f4d625c2a57e458 Mon Sep 17 00:00:00 2001 From: Electrolux <59329360+electroluxcode@users.noreply.github.com> Date: Tue, 30 Apr 2024 06:54:55 +0800 Subject: [PATCH] fix(imgupload): resultField causing with error display && setField uncertain (#3798) * fix(imgupload): resultField causing with error display * perf(imgUpload):judge about getValue * fix(imgUpload): set string but return uncertain --- .../Upload/src/components/ImageUpload.vue | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/components/Upload/src/components/ImageUpload.vue b/src/components/Upload/src/components/ImageUpload.vue index 1b3a74baf1e..4c86c499394 100644 --- a/src/components/Upload/src/components/ImageUpload.vue +++ b/src/components/Upload/src/components/ImageUpload.vue @@ -70,8 +70,8 @@ isInnerOperate.value = false; return; } + let value: string[] = []; if (v) { - let value: string[] = []; if (isArray(v)) { value = v; } else { @@ -92,6 +92,8 @@ } }) as UploadProps['fileList']; } + emit('update:value', value); + emit('change', value); }, { immediate: true, @@ -157,21 +159,22 @@ }; async function customRequest(info: UploadRequestOption) { - const { api } = props; + const { api, uploadParams = {}, name, filename, resultField } = props; if (!api || !isFunction(api)) { return warn('upload api must exist and be a function'); } try { - const res = await props.api?.({ + const res = await api?.({ data: { - ...(props.uploadParams || {}), + ...uploadParams, }, file: info.file, - name: props.name, - filename: props.filename, + name: name, + filename: filename, }); if (props.resultField) { - info.onSuccess!(res); + let result = get(res, resultField); + info.onSuccess!(result); } else { // 不传入 resultField 的情况 info.onSuccess!(res.data); @@ -190,12 +193,12 @@ const list = (fileList.value || []) .filter((item) => item?.status === UploadResultStatus.DONE) .map((item: any) => { - if (props.resultField) { - return get(item?.response, props.resultField); + if(item?.response && props?.resultField){ + return item?.response } return item?.url || item?.response?.url; }); - return props.multiple ? list : list.length > 0 ? list[0] : ''; + return list; }