From d155a00e513b5dd9fa2fe7edf2923b615b262a43 Mon Sep 17 00:00:00 2001 From: zwt13703 Date: Mon, 6 Jul 2026 22:21:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=97=E8=A1=A8=E5=88=B7=E6=96=B0=20-?= =?UTF-8?q?=20refreshKey=20=E5=BC=BA=E5=88=B6=E9=87=8D=E6=8B=89=20+=20dele?= =?UTF-8?q?tePoint=20=E5=AE=B9=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TemplateList: refresh 计数器触发 useEffect 重新拉取列表 - TemplateEditor: handleDeletePoint 加 try/catch,刷新失败时本地移除 - GenerateModal onClose 自动刷新生成点列表 --- web/src/pages/TemplateEditor.tsx | 25 ++++++++++++++++++++----- web/src/pages/TemplateList.tsx | 7 ++++--- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/web/src/pages/TemplateEditor.tsx b/web/src/pages/TemplateEditor.tsx index 4acf045..da05ee7 100644 --- a/web/src/pages/TemplateEditor.tsx +++ b/web/src/pages/TemplateEditor.tsx @@ -184,10 +184,19 @@ export default function TemplateEditor() { }; const handleDeletePoint = async (pointId: string) => { - await pointApi.deleteGenerationPoint(pointId); - message.success("删除成功"); - const updated = await pointApi.listGenerationPoints(id!); - setPoints(updated); + try { + await pointApi.deleteGenerationPoint(pointId); + message.success("删除成功"); + } catch (err: unknown) { + if (err instanceof Error) message.error(err.message); + return; + } + try { + const updated = await pointApi.listGenerationPoints(id!); + setPoints(updated); + } catch { + setPoints((prev) => prev.filter((p) => p.id !== pointId)); + } }; const handleDragStart = (_e: React.DragEvent, index: number) => { @@ -496,7 +505,13 @@ export default function TemplateEditor() { setGenerateModalOpen(false)} + onClose={async () => { + setGenerateModalOpen(false); + try { + const updated = await pointApi.listGenerationPoints(id!); + setPoints(updated); + } catch {} + }} templateId={id || ""} points={points} models={models} diff --git a/web/src/pages/TemplateList.tsx b/web/src/pages/TemplateList.tsx index ba8bd98..eb1f089 100644 --- a/web/src/pages/TemplateList.tsx +++ b/web/src/pages/TemplateList.tsx @@ -9,6 +9,7 @@ export default function TemplateList() { const navigate = useNavigate(); const [templates, setTemplates] = useState([]); const [loading, setLoading] = useState(false); + const [refresh, setRefresh] = useState(0); const fetchTemplates = useCallback(async () => { setLoading(true); @@ -24,12 +25,12 @@ export default function TemplateList() { useEffect(() => { fetchTemplates(); - }, [fetchTemplates]); + }, [fetchTemplates, refresh]); const handleDelete = async (id: string) => { await templateApi.deleteTemplate(id); message.success("删除成功"); - fetchTemplates(); + setRefresh((r) => r + 1); }; const columns = [ @@ -92,7 +93,7 @@ export default function TemplateList() { try { await templateApi.uploadTemplate(file as File); message.success("上传成功"); - fetchTemplates(); + setRefresh((r) => r + 1); onSuccess?.("ok"); } catch { message.error("上传失败");