From cafa8f5583b400ae539e784e7cee3c5da3534127 Mon Sep 17 00:00:00 2001 From: chensiAb <chenchenco03@163.com> Date: Wed, 26 Mar 2025 19:48:17 +0800 Subject: [PATCH] fix:上传图片组件-外部传入上传地址时优先使用外部地址 --- forms/imagePicker/CImagePicker.vue | 40 +++++++++++++++++++++++++++++++--------- 1 files changed, 31 insertions(+), 9 deletions(-) diff --git a/forms/imagePicker/CImagePicker.vue b/forms/imagePicker/CImagePicker.vue index 0846c64..395efa8 100644 --- a/forms/imagePicker/CImagePicker.vue +++ b/forms/imagePicker/CImagePicker.vue @@ -1,5 +1,8 @@ /** * CImagePicker + * 图片选择器组件,用于在表单中上传和管理图片 + * 支持单张和多张图片上传,并提供压缩、预览等功能 + * 可限制上传图片的数量和来源(相册/相机) * @author Tevin */ @@ -68,6 +71,16 @@ type: Object, default: () => {}, }, + // 是否开启缩略图 + needThumb: { + type: Boolean, + default: false, + }, + // 上传地址来源 + uploadUrlSource: { + type: String, + default: '', + }, }, data() { return { @@ -110,7 +123,7 @@ if (file.file && file.file.originalFileObj) { if ( /image\/(gif|png|jpg|jpeg)/.test( - file.file.originalFileObj.type + file.file.originalFileObj.type, ) ) { return true; @@ -133,8 +146,13 @@ const needs = nextFiles .map((file, needIndex) => { const fileInfo = file.file; - // 没有 file 信息对象,或者不是 blob 类型 - if (!fileInfo || fileInfo.path.indexOf('blob') < 0) { + // 没有 file 信息对象,或者不是 blob、wxfile、tmp 类型 + if ( + !fileInfo || + (fileInfo.path.indexOf('blob') < 0 && + fileInfo.path.indexOf('wxfile') < 0 && + fileInfo.path.indexOf('http://tmp/') < 0) + ) { return false; } // 尺寸小于 1M 的图片 @@ -213,7 +231,11 @@ callback(state, res); } }, - this.params + $fetchCommon.transKeyName('underline', { + ...this.params, + needThumb: this.needThumb ? 1 : 0, + }), + this.uploadUrlSource, ); }, }, @@ -233,12 +255,12 @@ // 图片上传节流 const _readyUpload = {}; -export const uploadImage = (files, callback, params) => { +export const uploadImage = (files, callback, formData = {}, uploadUrlSource) => { if (!files || files.length === 0) { callback('success', []); return; } - let url = $fetchCommon.getUploadImgURL(); + let url = uploadUrlSource ? uploadUrlSource : $fetchCommon.getUploadImgURL(); if (url.indexOf('http') < 0) { url = $hostBoot.getHost() + url; } @@ -277,7 +299,7 @@ ...requestFile, header, name: 'file', - formData: { ...params }, + formData, timeout: 30 * 1000, success(res) { let res2; @@ -298,7 +320,7 @@ if (res2.state.code === 2000) { const imgUrl = $fetchCommon.transImgPath( 'fix', - res2.data.src || res2.data.file || res2.data.url + res2.data.src || res2.data.file || res2.data.url, ); _readyUpload[file.url] = imgUrl; resolve(imgUrl); @@ -325,7 +347,7 @@ }); }, }); - }) + }), ); } // 其他类型视为 url,忽略 -- Gitblit v1.9.1