import { useEffect } from 'react'; import { Dialog, Form, Input, Switch } from 'tdesign-react'; import type { Provider } from '@/types'; import type { SubmitContext } from 'tdesign-react/es/form/type'; interface ProviderFormValues { id: string; name: string; apiKey: string; baseUrl: string; enabled: boolean; } interface ProviderFormProps { open: boolean; provider?: Provider; onSave: (values: ProviderFormValues) => void; onCancel: () => void; loading: boolean; } export function ProviderForm({ open, provider, onSave, onCancel, loading, }: ProviderFormProps) { const [form] = Form.useForm(); const isEdit = !!provider; // 当弹窗打开或provider变化时,设置表单值 useEffect(() => { if (open && form) { if (provider) { // 编辑模式:设置现有值 form.setFieldsValue({ id: provider.id, name: provider.name, apiKey: '', baseUrl: provider.baseUrl, enabled: provider.enabled, }); } else { // 新增模式:重置表单 form.reset(); form.setFieldsValue({ enabled: true }); } } }, [open, provider]); // 移除form依赖,避免循环 const handleSubmit = (context: SubmitContext) => { if (context.validateResult === true && form) { const values = form.getFieldsValue(true) as ProviderFormValues; onSave(values); } }; return ( { form?.submit(); return false; }} onClose={onCancel} confirmLoading={loading} confirmBtn="保存" cancelBtn="取消" destroyOnClose >
); }