import React, { useEffect, useState } from 'react'; import { Modal, Form, Input, DatePicker, Button, Upload, message, Row, Col, Descriptions } from 'antd'; import type { UploadProps } from 'antd'; import { UploadOutlined } from '@ant-design/icons'; import { uploadFile, qualificationsView, qualificationsaAdd, qualificationsEdit } from '../services'; import moment from 'moment'; interface QualificationFormModalProps { visible: boolean; onOk: () => void; onCancel: () => void; initialValues?: any; readOnly?: boolean; } interface QualificationData { id?: string | null; certificateType?: string; name?: string; code?: string; typeLevel?: string; authority?: string; dateTime?: moment.Moment; termOfValidity?: moment.Moment; attachment?: { uid: string; name: string; url: string; status: string; }[]; } const QualificationFormModal: React.FC = ({ visible, onOk, onCancel, initialValues, readOnly = false, }) => { const userId = sessionStorage.getItem('userId') || ''; // 新增与修改 const [form] = Form.useForm(); //查看 const [viewData, setViewData] = useState({}); useEffect(() => { if (visible) { if (initialValues) { qualificationsView(initialValues.id).then((res) => { const { code, data } = res; if (code === 200) { const fields = { ...data, id: data.id ? data.id : null, dateTime: data.dateTime ? moment(data.dateTime) : undefined, termOfValidity: data.termOfValidity ? moment(data.termOfValidity) : undefined, attachment: data.accessory ? [{ uid: '-1', name: data.accessory, url: data.accessory, status: 'done', response: { url: data.accessory } }] : [], }; console.log(fields, 'fields'); form.setFieldsValue(fields); setViewData(fields); } }); } else { form.resetFields(); // ✅ 只有无 initialValues 才重置 } } }, [visible, initialValues]); // 提交 const handleFinish = async () => { try { const values = await form.validateFields(); console.log(values, 'values'); const accessory = values.attachment?.[0]?.response.url; // uploadFile 返回的 data const payload = { ...values, dateTime: values.dateTime ? moment(values.dateTime) : undefined, termOfValidity: values.termOfValidity ? moment(values.termOfValidity) : undefined, accessory, supplierId: userId, }; if(!values.id) { qualificationsaAdd(payload).then((res) => { if (res.code == 200) { message.success('新增成功'); onOk(); } }) } else { qualificationsEdit(payload).then((res) => { if (res.code == 200) { message.success('修改成功'); onOk(); } }) } } catch (error) { console.error('表单校验失败:', error); } }; //上传接口 const uploadProps: UploadProps = { name: 'file', showUploadList: true, customRequest: async ({ file, onSuccess, onError }) => { try { const realFile = file as File; const res = await uploadFile(realFile); const uploadedFile = { uid: res.fileSize, name: res.fileName, status: 'done', url: res.url, response: res, }; onSuccess?.(uploadedFile, new XMLHttpRequest()) message.success('上传成功'); } catch (err: any) { onError?.(err); message.error(err.message || '上传失败'); } } }; return ( {readOnly ? ( {viewData.certificateType} {viewData.name} {viewData.code} {viewData.typeLevel} {viewData.authority} {viewData.dateTime ? moment(viewData.dateTime).format('YYYY-MM-DD') : ''} {viewData.termOfValidity ? moment(viewData.termOfValidity).format('YYYY-MM-DD') : ''} {viewData.attachment?.[0]?.url ? ( {viewData.attachment[0].name || '查看附件'} ) : '无'} ) : (
Array.isArray(e) ? e : e?.fileList} rules={[{ required: true }]} >
)}
); }; export default QualificationFormModal;