fix: 费用模块线上保存失败 — 空值转0兼容MySQL严格模式

expense.js保存时amount/incurred_amount空字符串转为0
避免MySQL 8.x strict mode报Data truncated
This commit is contained in:
mac
2026-07-06 19:19:41 +08:00
parent 56feeb0cfe
commit 1b88366ba0
2 changed files with 30 additions and 12 deletions

View File

@@ -137,6 +137,9 @@ window.saveExpense = async function(event) {
event.preventDefault();
var form = event.target;
var data = Object.fromEntries(new FormData(form).entries());
// 数字字段空值转 0避免线上 MySQL 严格模式报错
if (data.amount === '' || data.amount === undefined) data.amount = 0;
if (data.incurred_amount === '' || data.incurred_amount === undefined) data.incurred_amount = 0;
var isEdit = !!data.expense_id;
delete data.expense_id;
@@ -145,7 +148,7 @@ window.saveExpense = async function(event) {
var method = isEdit ? "PUT" : "POST";
var resp = await fetch(url, { method: method, headers: { "Content-Type": "application/json" }, body: JSON.stringify({ data: Object.assign({}, data, { tenant: state.tenant }) }) });
if (!resp.ok) { alert("保存失败"); return; }
if (!resp.ok) { var err = await resp.text(); alert("保存失败" + err); return; }
var bResp = await fetch("/api/bootstrap?tenant=" + encodeURIComponent(state.tenant));
if (bResp.ok) {