Files
geg-gas-web/src/components/input-number/input-number.model.ts

75 lines
1.7 KiB
TypeScript
Raw Normal View History

2026-03-02 14:26:55 +08:00
declare type ValueType = string | number | undefined;
export class InputNumberModel {
viewValue: ValueType = undefined;
modelValue: ValueType = undefined;
focus: boolean = false;
digits: number = 2;
_fmt:string|undefined = undefined;
emit: any;
ref: any;
get numberFormat() {
2026-03-12 17:40:51 +08:00
// if(this._fmt==undefined){
2026-03-02 14:26:55 +08:00
this._fmt = this.createNumberFmt(this.digits);
2026-03-12 17:40:51 +08:00
// }
2026-03-02 14:26:55 +08:00
return this._fmt;
}
createNumberFmt(num:number){
let numFmt = "###,###,###,###,###,###";
if(num>0){
numFmt += ".";
for (let i = 0; i < num; i++) {
numFmt += "0";
}
}
return numFmt;
}
bind(digits: number,ref:any,emit:any) {
this.digits = digits==undefined?2:digits;
this.ref = ref;
this.emit = emit;
}
setViewValue(value: ValueType) {
this.viewValue = value;
if(value!=undefined && (value+"").endsWith(".")) return;
2026-03-02 14:26:55 +08:00
this.modelValue = this.viewToModel(value);
this.triggerVm();
}
viewToModel(vv: ValueType):ValueType {
if(vv===undefined || vv==="" || vv==="-") return;
2026-03-02 14:26:55 +08:00
if(!this.focus){
this.viewValue = Number.format(Number.parse(vv),this.numberFormat);
}
return Number.parse(vv);
}
setModelValue(value: ValueType) {
this.modelValue = value;
this.viewValue = this.modelToView(value);
}
modelToView(mv: ValueType): ValueType {
if(mv===undefined || mv===null || mv=== '') return '';
2026-03-02 14:26:55 +08:00
if(this.focus){
return mv+'';
}
return Number.format(Number.parse(mv),this.numberFormat);
}
isEmpty() {
return this.modelValue === undefined || this.viewValue === null || this.viewValue === '';
}
triggerVm(){
this.emit('update:value',this.modelValue);
this.emit('change',this.modelValue);
}
}