fix: 生成页错误处理,编辑模式支持更新模板文件

This commit is contained in:
MikiVL 2026-05-05 14:03:19 +08:00
parent 696fd54809
commit fcf3d5c7c2
3 changed files with 13 additions and 5 deletions

View File

@ -19,11 +19,11 @@ function saveTemplate({ name, grp = "", file_path, fields = [] }) {
return id; return id;
} }
function updateTemplate(id, { name, grp, fields }) { function updateTemplate(id, { name, grp, file_path, fields }) {
const now = new Date().toISOString(); const now = new Date().toISOString();
if (name !== undefined || grp !== undefined) { if (name !== undefined || grp !== undefined || file_path !== undefined) {
db.prepare("UPDATE templates SET name = COALESCE(?, name), grp = COALESCE(?, grp), updated_at = ? WHERE id = ?") 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, now, id); .run(name ?? null, grp ?? null, file_path ?? null, now, id);
} }
if (fields !== undefined) { if (fields !== undefined) {
db.prepare("DELETE FROM fields WHERE template_id = ?").run(id); db.prepare("DELETE FROM fields WHERE template_id = ?").run(id);

View File

@ -69,6 +69,8 @@ export default function Generate() {
filename_pattern: filenamePattern, filename_pattern: filenamePattern,
}); });
setResults(result.results); setResults(result.results);
} catch (err) {
alert("生成失败:" + (err.message || String(err)));
} finally { } finally {
setGenerating(false); setGenerating(false);
} }

View File

@ -10,6 +10,7 @@ export default function TemplateConfig() {
const [name, setName] = useState(""); const [name, setName] = useState("");
const [grp, setGrp] = useState(""); const [grp, setGrp] = useState("");
const [filePath, setFilePath] = useState(""); const [filePath, setFilePath] = useState("");
const [originalFilePath, setOriginalFilePath] = useState("");
const [fields, setFields] = useState([]); const [fields, setFields] = useState([]);
const [autoDetected, setAutoDetected] = useState([]); const [autoDetected, setAutoDetected] = useState([]);
const [saving, setSaving] = useState(false); const [saving, setSaving] = useState(false);
@ -22,6 +23,7 @@ export default function TemplateConfig() {
setName(t.name); setName(t.name);
setGrp(t.grp || ""); setGrp(t.grp || "");
setFilePath(t.file_path); setFilePath(t.file_path);
setOriginalFilePath(t.file_path);
setFields(t.fields || []); setFields(t.fields || []);
} }
}); });
@ -60,7 +62,11 @@ export default function TemplateConfig() {
const storedPath = await window.api.copyFileToAppData(filePath, tempId); const storedPath = await window.api.copyFileToAppData(filePath, tempId);
await window.api.saveTemplate({ name, grp, file_path: storedPath, fields }); await window.api.saveTemplate({ name, grp, file_path: storedPath, fields });
} else { } 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"); navigate("/templates");
} finally { } finally {