From fcf3d5c7c208504df53c76b87f76f3241a07216b Mon Sep 17 00:00:00 2001 From: MikiVL Date: Tue, 5 May 2026 14:03:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=94=9F=E6=88=90=E9=A1=B5=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=A4=84=E7=90=86=EF=BC=8C=E7=BC=96=E8=BE=91=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E6=94=AF=E6=8C=81=E6=9B=B4=E6=96=B0=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/db/templateDb.js | 8 ++++---- renderer/src/pages/Generate.jsx | 2 ++ renderer/src/pages/TemplateConfig.jsx | 8 +++++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/electron/db/templateDb.js b/electron/db/templateDb.js index f9d1f8c..910b864 100644 --- a/electron/db/templateDb.js +++ b/electron/db/templateDb.js @@ -19,11 +19,11 @@ function saveTemplate({ name, grp = "", file_path, fields = [] }) { return id; } -function updateTemplate(id, { name, grp, fields }) { +function updateTemplate(id, { name, grp, file_path, fields }) { const now = new Date().toISOString(); - if (name !== undefined || grp !== undefined) { - db.prepare("UPDATE templates SET name = COALESCE(?, name), grp = COALESCE(?, grp), updated_at = ? WHERE id = ?") - .run(name ?? null, grp ?? null, now, id); + if (name !== undefined || grp !== undefined || file_path !== undefined) { + db.prepare("UPDATE templates SET name = COALESCE(?, name), grp = COALESCE(?, grp), file_path = COALESCE(?, file_path), updated_at = ? WHERE id = ?") + .run(name ?? null, grp ?? null, file_path ?? null, now, id); } if (fields !== undefined) { db.prepare("DELETE FROM fields WHERE template_id = ?").run(id); diff --git a/renderer/src/pages/Generate.jsx b/renderer/src/pages/Generate.jsx index 7c63809..a194765 100644 --- a/renderer/src/pages/Generate.jsx +++ b/renderer/src/pages/Generate.jsx @@ -69,6 +69,8 @@ export default function Generate() { filename_pattern: filenamePattern, }); setResults(result.results); + } catch (err) { + alert("生成失败:" + (err.message || String(err))); } finally { setGenerating(false); } diff --git a/renderer/src/pages/TemplateConfig.jsx b/renderer/src/pages/TemplateConfig.jsx index a76608c..0698569 100644 --- a/renderer/src/pages/TemplateConfig.jsx +++ b/renderer/src/pages/TemplateConfig.jsx @@ -10,6 +10,7 @@ export default function TemplateConfig() { const [name, setName] = useState(""); const [grp, setGrp] = useState(""); const [filePath, setFilePath] = useState(""); + const [originalFilePath, setOriginalFilePath] = useState(""); const [fields, setFields] = useState([]); const [autoDetected, setAutoDetected] = useState([]); const [saving, setSaving] = useState(false); @@ -22,6 +23,7 @@ export default function TemplateConfig() { setName(t.name); setGrp(t.grp || ""); setFilePath(t.file_path); + setOriginalFilePath(t.file_path); setFields(t.fields || []); } }); @@ -60,7 +62,11 @@ export default function TemplateConfig() { const storedPath = await window.api.copyFileToAppData(filePath, tempId); await window.api.saveTemplate({ name, grp, file_path: storedPath, fields }); } else { - await window.api.updateTemplate(id, { name, grp, fields }); + let storedPath; + if (filePath !== originalFilePath) { + storedPath = await window.api.copyFileToAppData(filePath, id); + } + await window.api.updateTemplate(id, { name, grp, file_path: storedPath, fields }); } navigate("/templates"); } finally {