fix(shrimp): 修复 multiple 字段类型校验逻辑
This commit is contained in:
@@ -114,21 +114,20 @@ export class ShrimpTableModule<T, P extends ITableCrudProto<T> = ITableCrudProto
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (field.type) {
|
// multiple 字段值是数组,类型校验需逐元素进行(与上面 options 校验保持一致);
|
||||||
case ShrimpFieldTypes.String:
|
// 非 multiple 则整体校验单值。否则数组会被标量类型分支整体判为类型错误。
|
||||||
if (typeof value !== 'string') return { t: 'shrimp.fieldTypeError', params: { field: field.label } }
|
const checkType = (v: any): boolean => {
|
||||||
break
|
switch (field.type) {
|
||||||
case ShrimpFieldTypes.Number:
|
case ShrimpFieldTypes.String: return typeof v === 'string'
|
||||||
if (typeof value !== 'number' || Number.isNaN(value)) return { t: 'shrimp.fieldTypeError', params: { field: field.label } }
|
case ShrimpFieldTypes.Number: return typeof v === 'number' && !Number.isNaN(v)
|
||||||
break
|
case ShrimpFieldTypes.Boolean: return typeof v === 'boolean'
|
||||||
case ShrimpFieldTypes.Boolean:
|
case ShrimpFieldTypes.Date: return typeof v === 'number' || v instanceof Date || !isNaN(Date.parse(v))
|
||||||
if (typeof value !== 'boolean') return { t: 'shrimp.fieldTypeError', params: { field: field.label } }
|
default: return true // 非内置标量类型(relation/json/自定义等)不在此校验
|
||||||
break
|
}
|
||||||
case ShrimpFieldTypes.Date:
|
}
|
||||||
if (typeof value !== 'number' && !(value instanceof Date) && isNaN(Date.parse(value))) {
|
const typeTargets = field.multiple && Array.isArray(value) ? value : [value]
|
||||||
return { t: 'shrimp.fieldTypeError', params: { field: field.label } }
|
for (const v of typeTargets) {
|
||||||
}
|
if (!checkType(v)) return { t: 'shrimp.fieldTypeError', params: { field: field.label } }
|
||||||
break
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (field.rules) {
|
if (field.rules) {
|
||||||
|
|||||||
Reference in New Issue
Block a user