Files
geg-gas-web/src/utils/dataFormat.ts
2026-01-30 17:39:21 +08:00

99 lines
2.3 KiB
TypeScript

import TypeTools, { TYPES } from './type-tools';
const FormatType = {
DATE: 'date',
TIME: 'time',
DATETIME: 'datetime',
QTY: 'qty',
AMT: 'amt',
}
const DATE_FORMAT = {
DEFAULT: 'yyyy-MM-dd HH:mm:ss',
FULL_DATE: 'yyyy-MM-dd HH:mm:ss.S',
DATE: 'yyyy-MM-dd',
YEAR_MONTH: 'yyyy-MM',
TIME: 'HH:mm:ss'
}
const DataFormat = {
/**
* 格式化日期
* @param date 日期
* @param formatString 格式化字符串
* @returns 格式化后的日期
*/
formatDate: (date: Date | string | number, fmt: string = 'yyyy-MM-dd HH:mm:ss') => {
// return Date.valueOf(date).format(fmt);
},
};
export class FormatOption {
key:string;
type: string;
formatString: string|number;
constructor(key:string,type: string, formatString: string|number) {
this.key = key;
this.type = type;
this.formatString = formatString;
}
static createDate(key:string,type: string, formatString: string){
return new FormatOption(key,type,formatString);
}
static createQty(key:string,decimal?:number){
return new FormatOption(key,FormatType.QTY,decimal!=undefined?decimal:3);
}
static createAmt(key:string){
return new FormatOption(key,FormatType.AMT,2);
}
format(data:any):any{
var keys = this.key.split(".");
let valueKey = keys[keys.length-1];
let valueData;
if(keys.length<=1){
valueData = data;
}else{
valueData = TypeTools.getNestedValue(data,keys.splice(0,keys.length-1));
}
if(valueData!=undefined && TypeTools.isArray(valueData)){
for (let i = 0; i < valueData.length; i++) {
let item = valueData[i];
let val = item[valueKey];
item[valueKey] = this.format(val);
}
}
if(this.type==FormatType.DATE){
}else{
}
return data;
}
formatValue(value:any):any{
if(value==undefined || value==null) return value;
try {
if(this.type==FormatType.DATE || this.type==FormatType.TIME || this.type==FormatType.DATETIME){
return DataFormat.formatDate(value,this.formatString as string);
}else if(this.type==FormatType.QTY){
return DataFormat.formatQty(value,this.formatString as number);
}else if(this.type==FormatType.AMT){
return DataFormat.formatAmt(value,this.formatString as number);
}
} catch (error) {
return value;
}
}
}