fix(admin): 组别填了年龄后「保存全部」无反应(number 字段被当字符串处理)
Vue 3 对 <input type="number"> 的 v-model 会自动 parseFloat(空值仍为 ''), 所以填了年龄后 row.ageMin/ageMax 是 number,而校验里写的是 row.ageMin.trim(), 点击处理器抛 TypeError 直接中断 —— 界面毫无反应;留空时是 '',.trim() 正常,所以能保存。 - CategoriesSection:新增 toAge() 统一取值(String() 包一层,非法值返回 NaN 交给校验标红), validate 与 buildInputs 都改用它;CategoryRow 的数值字段类型如实标注为 string | number - AdjustmentsPage:调整分值的 formDelta.value.trim() 同样会崩,改为 String(...).trim() 自检:vue-tsc + pnpm build 通过,前端 node --test 26/26。
This commit is contained in:
1 parent
c2696e768e
commit
7531ea29e1
2 files changed
+24
-9
No files matched your search
@@ -181,7 +181,7 @@ function openCreate(): void {
|
||||
function validate(): string | null {
|
||||
if (formTeamId.value === null) return '请选择单位'
|
||||
const delta = Number(formDelta.value)
|
||||
if (formDelta.value.trim() === '' || !Number.isFinite(delta)) return '请填写分值'
|
||||
if (String(formDelta.value).trim() === '' || !Number.isFinite(delta)) return '请填写分值'
|
||||
if (delta === 0) return '分值不能为 0'
|
||||
if (formReason.value.trim() === '') return '理由必填'
|
||||
return null
|
||||
|
||||
Reference in new issue
Block a user