| | |
| | | updateNotice, |
| | | } from '#/api/wxcp/notice'; |
| | | |
| | | import { useNoticeFormSchema } from '../data'; |
| | | import { NOTICE_TYPE, useNoticeFormSchema } from '../data'; |
| | | |
| | | defineOptions({ name: 'WxCpNoticeForm' }); |
| | | |
| | |
| | | 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); |
| | | } |
| | | }, |
| | | }); |
| | |
| | | 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('修改成功'); |