From 71beff1699701e18c2503791c7ba1437c89966aa Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期三, 30 九月 2026 15:26:43 +0800
Subject: [PATCH] feat(wxcp): 活动封面改用附件中间表,并修正附件地址同源
---
src/views/wxcp/activity/modules/form.vue | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 50 insertions(+), 4 deletions(-)
diff --git a/src/views/wxcp/activity/modules/form.vue b/src/views/wxcp/activity/modules/form.vue
index 05d379b..29b38d3 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,47 @@
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) => ({
+ uid: String(item.id),
+ name: item.name || item.originalFilename || '',
+ url: toAccessibleFileUrl(item.url || item.previewURL),
+ status: 'done',
+ id: item.id,
+ }));
+ 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 +101,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 +118,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