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;
|
2026-03-02 15:36:56 +08:00
|
|
|
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 {
|
2026-03-09 16:08:50 +08:00
|
|
|
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 {
|
2026-03-02 18:16:58 +08:00
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|