import React from 'react'; import Form from 'antd/es/form'; import { ElementType } from '../../StarElement/type'; import StarForm from '../../StarForm'; import { StarFormField } from '../../StarForm/type'; import { StarTableProps, TableFormMode } from '../interface'; import StarModal from '../../StarModal'; const TableForm: React.FC void; destroy?: () => void; }> = (props) => { const { columns, show, mode, entity, close, destroy, onSaveClick, format } = props; const fields: StarFormField[] = []; columns.forEach((col) => { const label = typeof col.title === 'function' ? col.title({}) : col.title; if (col.form) { if (col.form === true) { fields.push({ element: ElementType.Input, label, name: col.dataIndex?.toString(), }); } else { fields.push({ label, name: col.dataIndex?.toString(), ...col.form, }); } } }); const [form] = Form.useForm(); let title = ''; if (format) title = format({ id: mode }); else { switch (mode) { case 'add': title = '增加'; break; case 'edit': title = '编辑'; break; default: title = '查看'; break; } } return ( { try { let values = await form.validateFields(); values = { ...entity, ...values }; onSaveClick && onSaveClick(values, mode); close(); } catch (error) { console.error('form fields validate error! ', error); } }} onCancel={() => close()} afterClose={() => destroy && destroy()} okButtonProps={{ hidden: mode === 'view' }} width={800} destroyOnClose > ); }; export default TableForm;