liu
3 天以前 fe2d6627b8f1002af7a31b08f6f43bec034d04ee
src/views/wxcp/notice/modules/form.vue
@@ -15,7 +15,7 @@
  updateNotice,
} from '#/api/wxcp/notice';
import { useNoticeFormSchema } from '../data';
import { NOTICE_TYPE, useNoticeFormSchema } from '../data';
defineOptions({ name: 'WxCpNoticeForm' });
@@ -59,12 +59,25 @@
      modalApi.lock();
      try {
        const detail = await getNotice(data.id);
        await formApi.setValues(detail as unknown as Record<string, unknown>);
        const values: Record<string, unknown> = { ...detail };
        // 文件通知:把 blobId 还原成上传组件可识别的文件对象
        if (detail.noticeType === NOTICE_TYPE.FILE && detail.fileBlobId) {
          values.fileBlobId = [
            {
              uid: String(detail.fileBlobId),
              name: detail.fileName || '',
              status: 'done',
              id: detail.fileBlobId,
            },
          ];
        }
        await formApi.setValues(values);
      } finally {
        modalApi.unlock();
      }
    } else {
      await formApi.resetForm();
      await formApi.setValues({ noticeType: NOTICE_TYPE.TEXT }, false);
    }
  },
});
@@ -77,6 +90,26 @@
  submitting.value = true;
  try {
    const data = (await formApi.getValues()) as WxCpNoticeApi.Notice;
    // 保存时只做文件归一化;具体模板必填项在推送时按所选模板校验
    const noticeType = data.noticeType ?? NOTICE_TYPE.TEXT;
    if (noticeType === NOTICE_TYPE.FILE) {
      const raw = data.fileBlobId as unknown;
      let blobId: number | undefined;
      if (Array.isArray(raw)) {
        const first = raw[0];
        blobId =
          typeof first === 'number'
            ? first
            : (first as { id?: number } | undefined)?.id;
      } else if (typeof raw === 'number') {
        blobId = raw;
      } else if (raw && typeof raw === 'object') {
        blobId = (raw as { id?: number }).id;
      }
      data.fileBlobId = blobId;
    } else {
      data.fileBlobId = undefined;
    }
    if (id.value) {
      await updateNotice({ ...data, id: id.value });
      message.success('修改成功');