Sfoglia il codice sorgente

feat(ImageUploadCropper): 新增valueType属性支持返回URL类型

新增valueType属性用于控制组件返回值类型,可选择返回ossId或url;
优化图片URL处理逻辑,支持逗号分隔的多个URL字符串解析;
修改listToString方法根据valueType属性决定返回数据格式。

fix(gameEvent): 修复主办方Logo上传组件配置

将主办方Logo上传组件的返回值类型设置为url,
确保获取到正确的图片地址格式。
zhou 1 giorno fa
parent
commit
734b9adee8

+ 12 - 4
src/components/ImageUploadCropper/index.vue

@@ -147,6 +147,8 @@ const props = defineProps({
     type: [String, Object, Array],
     default: () => []
   },
+  // 返回值类型:ossId - 返回 OSS 表 ID,url - 返回图片绝对路径 URL
+  valueType: propTypes.string.def('ossId'),
   // 图片数量限制
   limit: propTypes.number.def(5),
   // 大小限制(MB)
@@ -256,8 +258,8 @@ watch(
       } else {
         // 判断是否为URL路径(包含http/https协议或相对路径)
         if (typeof val === 'string' && (val.startsWith('http') || val.startsWith('/'))) {
-          // 直接使用URL路径作为图片显示
-          list = [{ url: val } as OssVO];
+          // 如果是以逗号分隔的URL列表,进行拆分
+          list = val.split(',').map((url) => ({ url } as OssVO));
         } else {
           // 原有逻辑,调用API获取信息
           const res = await listByIds(val);
@@ -394,8 +396,14 @@ const listToString = (list: any[], separator?: string) => {
   let strs = '';
   separator = separator || ',';
   for (const i in list) {
-    if (undefined !== list[i].ossId && list[i].url.indexOf('blob:') !== 0) {
-      strs += list[i].ossId + separator;
+    if (props.valueType === 'url') {
+      if (list[i].url && list[i].url.indexOf('blob:') !== 0) {
+        strs += list[i].url + separator;
+      }
+    } else {
+      if (undefined !== list[i].ossId && list[i].url.indexOf('blob:') !== 0) {
+        strs += list[i].ossId + separator;
+      }
     }
   }
   return strs != '' ? strs.substring(0, strs.length - 1) : '';

+ 1 - 1
src/views/system/gameEvent/edit.vue

@@ -112,7 +112,7 @@
               </el-col>
               <el-col :span="12">
                 <el-form-item label="主办方 Logo" prop="registerUrl">
-                  <image-upload-cropper v-model="basicForm.registerUrl" :limit="1" />
+                  <image-upload-cropper v-model="basicForm.registerUrl" :limit="1" value-type="url" />
                 </el-form-item>
               </el-col>
             </el-row>