From 2d97207d412bd89806c98ea42b1883113ca6a994 Mon Sep 17 00:00:00 2001 From: shaw Date: Thu, 16 Jul 2026 15:19:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(settings):=20=E5=AE=A1=E8=AE=A1=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E4=BF=9D=E7=95=99=E5=A4=A9=E6=95=B0=E6=B8=85=E7=A9=BA?= =?UTF-8?q?=E6=97=B6=E5=9B=9E=E9=80=80=E9=BB=98=E8=AE=A4=E5=80=BC=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E4=BF=9D=E5=AD=98=20400?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit audit_log_retention_days 用 v-model.number 绑定数字框,管理员清空输入框时 得到空串,后端 int 字段 ShouldBindJSON 解析空串失败返回 400,导致整次系统 设置保存被拒。payload 构建时对空/非法值回退默认 180(与后端 parseAuditLogRetentionDays("") 语义一致;显式 0 仍表示永久保留)。 --- frontend/src/views/admin/SettingsView.vue | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/admin/SettingsView.vue b/frontend/src/views/admin/SettingsView.vue index 83f166b8f2..271ef3191f 100644 --- a/frontend/src/views/admin/SettingsView.vue +++ b/frontend/src/views/admin/SettingsView.vue @@ -9559,7 +9559,11 @@ async function saveSettings() { password_reset_enabled: form.password_reset_enabled, totp_enabled: form.totp_enabled, session_binding_enabled: form.session_binding_enabled, - audit_log_retention_days: form.audit_log_retention_days, + // 清空数字框时 v-model.number 会得到空串,后端 int 字段解析空串会 400 拒绝整次保存; + // 空/非法值回退默认 180(与后端 parseAuditLogRetentionDays("") 语义一致,0 仍表示永久保留)。 + audit_log_retention_days: Number.isFinite(form.audit_log_retention_days) + ? form.audit_log_retention_days + : 180, login_agreement_enabled: form.login_agreement_enabled, login_agreement_mode: form.login_agreement_mode, login_agreement_updated_at: form.login_agreement_updated_at,