import { useEffect, useRef, useState } from 'react'; import { Drawer, Form, Input, Button, Space, Card, App } from 'antd'; import { useTranslation } from 'react-i18next'; import { saveVariableDict } from '@/api/mdm/coding-system'; import type { VariableDictVO } from '@/types/mdm/coding-system'; interface VariableDictDrawerProps { open: boolean; id: number | null; onSuccess: () => void; onClose: () => void; } const VariableDictDrawer: React.FC = ({ open, id, onSuccess, onClose }) => { const { t } = useTranslation('mdm/coding-system'); const { t: tc } = useTranslation('common'); const { message } = App.useApp(); const [form] = Form.useForm(); const [confirmLoading, setConfirmLoading] = useState(false); const isEdit = id != null; const originData = useRef>({}); useEffect(() => { if (!open) return; form.resetFields(); originData.current = {}; if (id != null) { getVariableDictPage({ pageNo: 1, pageSize: 999 }).then(({ data }) => { const item = data.list.find((v) => v.id === id); if (item) { originData.current = { ...item }; form.setFieldsValue(item); } }); } }, [open, id, form]); const handleOk = async () => { let values; try { values = await form.validateFields(); } catch { return; } setConfirmLoading(true); try { const params = { ...originData.current, ...values, id: id ?? undefined }; await saveVariableDict(params); message.success(t('saveSuccess')); onSuccess(); } catch (err) { message.error((err as Error).message || tc('fail')); } finally { setConfirmLoading(false); } }; return ( } >
); }; export default VariableDictDrawer;