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 enum RuleType { Required = 'Required', StringLength = 'StringLength', NumRange = 'NumRange' }
|
||||||
export interface FiledRule
|
class RuleBase
|
||||||
{
|
{
|
||||||
filed: string;
|
Filed: string;
|
||||||
name: string;
|
FiledName: string;
|
||||||
[RuleType.Required]: boolean;
|
value: object;
|
||||||
[RuleType.Maxlength]: number;
|
IsValid(value)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
export interface CheckResult
|
FormatErrorMessage()
|
||||||
{
|
{
|
||||||
result: boolean;
|
return '';
|
||||||
msg: string;
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
export class Validate
|
export class RuleRequired extends RuleBase
|
||||||
{
|
{
|
||||||
static CheckData(dataList: any[], filedRules: FiledRule[]): CheckResult
|
IsValid(value)
|
||||||
{
|
{
|
||||||
let result = { result: true, msg: '' };
|
this.value = value;
|
||||||
for (const value of dataList)
|
if (value == null || Object.is(value, NaN) || value.length == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
FormatErrorMessage()
|
||||||
{
|
{
|
||||||
for (const r of filedRules)
|
return `字段:[${this.FiledName}:${this.value}]不能为空!`;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export class RuleStringLength extends RuleBase
|
||||||
|
{
|
||||||
|
constructor(maxlength: number)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
this.Maxlength = maxlength;
|
||||||
|
}
|
||||||
|
Maxlength: number;
|
||||||
|
IsValid(value)
|
||||||
{
|
{
|
||||||
if (r.Required)
|
this.value = value;
|
||||||
|
if (value && value.length > this.Maxlength)
|
||||||
{
|
{
|
||||||
result = this.CheckRequired(value, r);
|
return false;
|
||||||
if (result.result == false) return result;
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (r.Maxlength > 0)
|
FormatErrorMessage()
|
||||||
{
|
{
|
||||||
result = this.CheckMaxLength(value, r);
|
return `字段:[${this.FiledName}:${this.value}]超过了长度限制:${this.Maxlength}!`;
|
||||||
if (result.result == false) return result;
|
};
|
||||||
}
|
}
|
||||||
|
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 result;
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
private static CheckRequired(value: any, filedRule: FiledRule): CheckResult
|
FormatErrorMessage()
|
||||||
{
|
{
|
||||||
if (!value[filedRule.filed])
|
return `字段:[${this.FiledName}:${this.value}],数值需在:${this.Min}至${this.Max}范围内!`;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export interface CheckResult
|
||||||
{
|
{
|
||||||
return { result: false, msg: `${filedRule.name}不能为空!` };
|
result: boolean;
|
||||||
|
msg: string;
|
||||||
}
|
}
|
||||||
return { result: true, msg: '' };
|
export class FileRule
|
||||||
|
{
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
private static CheckMaxLength(value: any, filedRule: FiledRule)
|
CheckRules(dataList): CheckResult
|
||||||
|
{
|
||||||
|
let result = { result: true, msg: '' };
|
||||||
|
for (const value of dataList)
|
||||||
|
{
|
||||||
|
for (const fl of this.FiledList)
|
||||||
|
{
|
||||||
|
for (const r of fl.RuleList)
|
||||||
{
|
{
|
||||||
if (value[filedRule.filed] && value[filedRule.filed].length > filedRule.Maxlength)
|
let res = r.IsValid(value[r.Filed]);
|
||||||
|
if (res == false)
|
||||||
{
|
{
|
||||||
return { result: false, msg: `${filedRule.name}:[${value[filedRule.filed]}],超过长度限制:${filedRule.Maxlength}!` };
|
return { result: res, msg: r.FormatErrorMessage() };
|
||||||
}
|
}
|
||||||
|
|
||||||
return { result: true, msg: '' };
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue