mirror of https://gitee.com/cf-fz/WebCAD.git
!1763 拆单五金价格增加范围校验
parent
6fc1a10fa7
commit
2fc4bff5a3
@ -0,0 +1,47 @@
|
||||
import { FileRule, RuleBuilder, RuleNumRange, RuleRequired, RuleStringLength } from "./Validate";
|
||||
export const blockBuilder = new RuleBuilder();
|
||||
blockBuilder.UseFiled(new FileRule('RoomName', '房名')
|
||||
.AddRule(new RuleRequired())
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('BoxName', '柜名')
|
||||
.AddRule(new RuleRequired())
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('BoardName', '板名称')
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('Material', '材料')
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('MaterialName', '材料名称')
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('Color', '颜色')
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('SealedLeft', '左封边')
|
||||
.AddRule(new RuleRequired()))
|
||||
.UseFiled(new FileRule('SealedRight', '右封边')
|
||||
.AddRule(new RuleRequired()))
|
||||
.UseFiled(new FileRule('SealedUp', '上封边')
|
||||
.AddRule(new RuleRequired()))
|
||||
.UseFiled(new FileRule('SealedDown', '下封边')
|
||||
.AddRule(new RuleRequired()));
|
||||
export const objectBuilder = new RuleBuilder();
|
||||
objectBuilder.UseFiled(new FileRule('RoomName', '房名')
|
||||
.AddRule(new RuleRequired())
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('BoxName', '柜名')
|
||||
.AddRule(new RuleRequired())
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('Name', '名称')
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('Model', '型号')
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('Spec', '规格')
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('Brand', '品牌')
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('Factory', '厂家')
|
||||
.AddRule(new RuleStringLength(50)))
|
||||
.UseFiled(new FileRule('SalePrice', '五金价格')
|
||||
.AddRule(new RuleNumRange(0, 99999999)))
|
||||
.UseFiled(new FileRule('Num', '五金数量')
|
||||
.AddRule(new RuleNumRange(0, 99999)))
|
||||
.UseFiled(new FileRule('Remark', '备注')
|
||||
.AddRule(new RuleStringLength(50)));
|
@ -1,55 +1,133 @@
|
||||
export enum RuleType { Required = 'Required', Maxlength = 'Maxlength' }
|
||||
export interface FiledRule
|
||||
export enum RuleType { Required = 'Required', StringLength = 'StringLength', NumRange = 'NumRange' }
|
||||
class RuleBase
|
||||
{
|
||||
filed: string;
|
||||
name: string;
|
||||
[RuleType.Required]: boolean;
|
||||
[RuleType.Maxlength]: number;
|
||||
Filed: string;
|
||||
FiledName: string;
|
||||
value: object;
|
||||
IsValid(value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
FormatErrorMessage()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
}
|
||||
export class RuleRequired extends RuleBase
|
||||
{
|
||||
IsValid(value)
|
||||
{
|
||||
this.value = value;
|
||||
if (value == null || Object.is(value, NaN) || value.length == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
FormatErrorMessage()
|
||||
{
|
||||
return `字段:[${this.FiledName}:${this.value}]不能为空!`;
|
||||
};
|
||||
}
|
||||
export class RuleStringLength extends RuleBase
|
||||
{
|
||||
constructor(maxlength: number)
|
||||
{
|
||||
super();
|
||||
this.Maxlength = maxlength;
|
||||
}
|
||||
Maxlength: number;
|
||||
IsValid(value)
|
||||
{
|
||||
this.value = value;
|
||||
if (value && value.length > this.Maxlength)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
FormatErrorMessage()
|
||||
{
|
||||
return `字段:[${this.FiledName}:${this.value}]超过了长度限制:${this.Maxlength}!`;
|
||||
};
|
||||
}
|
||||
export class RuleNumRange extends RuleBase
|
||||
{
|
||||
constructor(min: number, max: number)
|
||||
{
|
||||
super();
|
||||
this.Min = min;
|
||||
this.Max = max;
|
||||
}
|
||||
Min: number;
|
||||
Max: number;
|
||||
IsValid(value)
|
||||
{
|
||||
this.value = value;
|
||||
if (value && !(Number(value) >= this.Min && Number(value) <= this.Max))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
FormatErrorMessage()
|
||||
{
|
||||
return `字段:[${this.FiledName}:${this.value}],数值需在:${this.Min}至${this.Max}范围内!`;
|
||||
};
|
||||
}
|
||||
export interface CheckResult
|
||||
{
|
||||
result: boolean;
|
||||
msg: string;
|
||||
}
|
||||
export class Validate
|
||||
export class FileRule
|
||||
{
|
||||
static CheckData(dataList: any[], filedRules: FiledRule[]): CheckResult
|
||||
constructor(filed: string, filedName: string)
|
||||
{
|
||||
this.Filed = filed;
|
||||
this.FiledName = filedName;
|
||||
}
|
||||
Filed: string;
|
||||
FiledName: string;
|
||||
RuleList: RuleBase[] = [];
|
||||
AddRule(filedRule: RuleBase): FileRule
|
||||
{
|
||||
filedRule.Filed = this.Filed;
|
||||
filedRule.FiledName = this.FiledName;
|
||||
this.RuleList.push(filedRule);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
export class RuleBuilder
|
||||
{
|
||||
private FiledList: FileRule[] = [];
|
||||
UseFiled(filedRule: FileRule): RuleBuilder
|
||||
{
|
||||
this.FiledList.push(filedRule);
|
||||
return this;
|
||||
}
|
||||
CheckRules(dataList): CheckResult
|
||||
{
|
||||
let result = { result: true, msg: '' };
|
||||
for (const value of dataList)
|
||||
{
|
||||
for (const r of filedRules)
|
||||
for (const fl of this.FiledList)
|
||||
{
|
||||
if (r.Required)
|
||||
for (const r of fl.RuleList)
|
||||
{
|
||||
result = this.CheckRequired(value, r);
|
||||
if (result.result == false) return result;
|
||||
let res = r.IsValid(value[r.Filed]);
|
||||
if (res == false)
|
||||
{
|
||||
return { result: res, msg: r.FormatErrorMessage() };
|
||||
}
|
||||
|
||||
}
|
||||
if (r.Maxlength > 0)
|
||||
{
|
||||
result = this.CheckMaxLength(value, r);
|
||||
if (result.result == false) return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
private static CheckRequired(value: any, filedRule: FiledRule): CheckResult
|
||||
{
|
||||
if (!value[filedRule.filed])
|
||||
{
|
||||
return { result: false, msg: `${filedRule.name}不能为空!` };
|
||||
}
|
||||
return { result: true, msg: '' };
|
||||
}
|
||||
private static CheckMaxLength(value: any, filedRule: FiledRule)
|
||||
{
|
||||
if (value[filedRule.filed] && value[filedRule.filed].length > filedRule.Maxlength)
|
||||
{
|
||||
return { result: false, msg: `${filedRule.name}:[${value[filedRule.filed]}],超过长度限制:${filedRule.Maxlength}!` };
|
||||
}
|
||||
|
||||
return { result: true, msg: '' };
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in new issue