diff --git a/web/src/pages/ModelList.tsx b/web/src/pages/ModelList.tsx index b6f02d3..b073a3d 100644 --- a/web/src/pages/ModelList.tsx +++ b/web/src/pages/ModelList.tsx @@ -48,16 +48,24 @@ export default function ModelList() { useEffect(() => { if (!modalOpen) return; - if (editingModel) { - form.setFieldsValue({ - ...editingModel, - extra_params: JSON.stringify(editingModel.extra_params, null, 2), - api_key: "", - }); - } else { - form.resetFields(); - form.setFieldsValue({ provider: "openai", is_enabled: true, extra_params: "{}" }); - } + // 延迟确保 Form DOM 已渲染 + const timer = setTimeout(() => { + if (editingModel) { + form.setFieldsValue({ + name: editingModel.name, + provider: editingModel.provider, + endpoint: editingModel.endpoint, + api_key: "", + extra_params: JSON.stringify(editingModel.extra_params, null, 2), + is_enabled: editingModel.is_enabled, + remark: editingModel.remark, + }); + } else { + form.resetFields(); + form.setFieldsValue({ provider: "openai", is_enabled: true, extra_params: "{}" }); + } + }, 0); + return () => clearTimeout(timer); }, [modalOpen, editingModel]); const handleSubmit = async () => { @@ -177,12 +185,11 @@ export default function ModelList() { setModalOpen(false)} + onCancel={() => { setModalOpen(false); form.resetFields(); }} onOk={handleSubmit} width={600} - destroyOnClose > -
+ diff --git a/web/src/pages/TemplateEditor.tsx b/web/src/pages/TemplateEditor.tsx index 7c2e10f..8ac7e49 100644 --- a/web/src/pages/TemplateEditor.tsx +++ b/web/src/pages/TemplateEditor.tsx @@ -124,21 +124,24 @@ export default function TemplateEditor() { useEffect(() => { if (!pointModalOpen) return; - if (editingPoint) { - pointForm.setFieldsValue({ - prompt: editingPoint.prompt, - model_id: editingPoint.model_id, - need_ref_file: editingPoint.need_ref_file, - remark: editingPoint.remark, - }); - } else { - pointForm.resetFields(); - if (selectionRef.current) { + const timer = setTimeout(() => { + if (editingPoint) { pointForm.setFieldsValue({ - prompt: `根据上下文生成关于「${selectionRef.current.text.slice(0, 20)}...」的内容`, + prompt: editingPoint.prompt, + model_id: editingPoint.model_id, + need_ref_file: editingPoint.need_ref_file, + remark: editingPoint.remark, }); + } else { + pointForm.resetFields(); + if (selectionRef.current) { + pointForm.setFieldsValue({ + prompt: `根据上下文生成关于「${selectionRef.current.text.slice(0, 20)}...」的内容`, + }); + } } - } + }, 0); + return () => clearTimeout(timer); }, [pointModalOpen]); const handlePointSubmit = async () => { @@ -478,12 +481,11 @@ export default function TemplateEditor() { setPointModalOpen(false)} + onCancel={() => { setPointModalOpen(false); pointForm.resetFields(); }} onOk={handlePointSubmit} width={560} - destroyOnClose > - + {selectionRef.current && !editingPoint && (