From 7981c8b76ea5708bfb75b59fcd65252e72ed72f3 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期二, 20 十月 2026 14:09:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_江苏商贸供销社' into dev_江苏商贸供销社
---
src/views/wxcp/activity/modules/form.vue | 61 ++++++++++++++++++++++++++++--
1 files changed, 57 insertions(+), 4 deletions(-)
diff --git a/src/views/wxcp/activity/modules/form.vue b/src/views/wxcp/activity/modules/form.vue
index 05d379b..0407446 100644
--- a/src/views/wxcp/activity/modules/form.vue
+++ b/src/views/wxcp/activity/modules/form.vue
@@ -9,6 +9,7 @@
import { Button, message } from 'ant-design-vue';
import { useVbenForm } from '#/adapter/form';
+import { toAccessibleFileUrl } from '#/utils';
import {
createActivity,
getActivity,
@@ -44,6 +45,54 @@
wrapperClass: 'grid-cols-2',
});
+/**
+ * 鎶婃椿鍔ㄨ鎯呮槧灏勬垚琛ㄥ崟鍊�
+ *
+ * 灏侀潰鍦ㄥ悗绔笉钀戒笟鍔¤〃瀛楁锛岃�屾槸瀛樺湪闄勪欢涓棿琛ㄩ噷锛�
+ * 鍥炴樉鏃惰鎶� attachmentList 杞垚涓婁紶缁勪欢鑳借瘑鍒殑鏂囦欢瀵硅薄銆�
+ */
+function activityToForm(
+ activity: WxCpActivityApi.Activity,
+): Record<string, unknown> {
+ const form: Record<string, unknown> = { ...activity };
+ form.blobIds = (activity.attachmentList ?? []).map((item) => {
+ const name = item.name || item.originalFilename || '';
+ const url = toAccessibleFileUrl(item.url || item.previewURL);
+ return {
+ uid: String(item.id),
+ name,
+ url,
+ status: 'done',
+ id: item.id,
+ // 鍥炴樉瀵硅薄涔熷繀椤诲甫 response锛氱粍浠惰浜� resultField 鍚庡彧璁� item.response锛�
+ // 涓嶅甫鐨勮瘽銆岃繘缂栬緫椤典笉鍔ㄥ浘鐩存帴淇濆瓨銆嶄細璧� URL 鍒嗘敮 鈫� NaN 鈫� [] 鈫� 灏侀潰琚竻绌�
+ response: { id: item.id, name, url },
+ };
+ });
+ return form;
+}
+
+/**
+ * 鎶婁笂浼犵粍浠剁殑鍊艰鏁存垚 blobId 鏁扮粍
+ *
+ * ImageUpload 鍦� maxNumber=1 鏃惰繑鍥炵殑鏄崟涓�硷紙鑰屼笉鏄暟缁勶級锛�
+ * 鍚庣绛惧悕鏄� List<Long>锛岃繖閲岀粺涓�鍖呮垚鏁扮粍鍐嶆彁浜ゃ��
+ */
+function normalizeBlobIds(value: unknown): number[] {
+ const list = Array.isArray(value)
+ ? value
+ : value === '' || value === null || value === undefined
+ ? []
+ : [value];
+ return list
+ .map((item) =>
+ item && typeof item === 'object' && 'id' in item
+ ? Number((item as { id: unknown }).id)
+ : Number(item),
+ )
+ .filter((blobId) => Number.isFinite(blobId));
+}
+
const [Modal, modalApi] = useVbenModal({
async onOpenChange(isOpen: boolean) {
if (!isOpen) {
@@ -59,7 +108,7 @@
modalApi.lock();
try {
const detail = await getActivity(data.id);
- await formApi.setValues(detail as unknown as Record<string, unknown>);
+ await formApi.setValues(activityToForm(detail));
} finally {
modalApi.unlock();
}
@@ -76,12 +125,16 @@
}
submitting.value = true;
try {
- const data = (await formApi.getValues()) as WxCpActivityApi.Activity;
+ const data = (await formApi.getValues()) as Record<string, unknown>;
+ const payload = {
+ ...data,
+ blobIds: normalizeBlobIds(data.blobIds),
+ } as WxCpActivityApi.Activity;
if (id.value) {
- await updateActivity({ ...data, id: id.value });
+ await updateActivity({ ...payload, id: id.value });
message.success('淇敼鎴愬姛');
} else {
- await createActivity(data);
+ await createActivity(payload);
message.success('鍒涘缓鎴愬姛锛岃鍦ㄥ垪琛ㄤ腑鍙戝竷鍚庡啀鎺ㄩ��');
}
await modalApi.close();
--
Gitblit v1.9.3