yylib-quick-mobile
Version:
yylib-quick-mobile
144 lines (139 loc) • 5.05 kB
JavaScript
//确保toFixed原型四舍五入算法被修正
var MathUtil = require('./MathUtils');
var formatUtils = {
/**
* 每三位数字用逗号分隔
* @param num 实际数值(number类型)(支持小于0的值)
* @param digits 小数位位数,默认值:2,即保留两位小数(值范围:0~20)
* @param sp 每隔几位数进行逗号分隔,默认值:3,即千分位逗号分隔
* @param defaultValue 当值不存在的情况下显示的默认值,默认为空字符串
* @returns {*}
*/
formatNumber(num, digits, sp,defaultValue) {
if (isNaN(num)||num===''||num===undefined||num===null) {
if(arguments.length==4)return arguments[3];
return '';
}
if (sp == null) {
sp = 3;
}
digits = (digits!==undefined && digits!==null && digits >= 0 && digits <= 20) ? digits : 2;
num = MathUtil.scienceNum(num);//处理e+、e-情况
num = parseFloat((num + "").replace(/[^\d\.-]/g, ""));
var flag = false;
if (num < 0) {
flag = true;
num = Math.abs(num);
}
num = num.toFixed(digits) + "";
var tem = num.split(".");
var l = tem[0].split("").reverse();
var r = tem[1]&&tem[1].length >= 1 ? tem[1] : "";
var t = "";
for (var i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % sp == 0 && (i + 1) != l.length ? "," : "");
}
var scienceNum;
if (digits == 0) {
scienceNum = (flag ? "-" : "") + t.split("").reverse().join("");
} else {
scienceNum = (flag ? "-" : "") + t.split("").reverse().join("") + "." + r;
}
return MathUtil.scienceNum(scienceNum);//处理e+、e-情况
},
formatMoney (money) {
return this.formatNumber(money, 2, 3);
},
formatDate(date, format){
if (date===undefined || date === null || !(date instanceof Date)) {
return date;
}
var o = {
"M+": date.getMonth() + 1,
"d+": date.getDate(),
"(H|h)+": date.getHours(),
"m+": date.getMinutes(),
"s+": date.getSeconds(),
"q+": Math.floor((date.getMonth() + 3) / 3),
"S": date.getMilliseconds()
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k])
.substr(("" + o[k]).length));
}
}
return format;
},
parseAntDate(value) {
if (value) {
value = new Date(value.replace(/-/g, '/'));
}
return value;
},
//格式化日期控件值
formatAntDate(date) {
if (date && date instanceof Date) {
var mm = (date.getMonth() + 1);
var dd = date.getDate();
mm=mm<10?'0'+mm:mm;//补0
dd=dd<10?'0'+dd:dd;//补0
date = date.getFullYear() + '-' + mm + '-' + dd;
}
return date;
}
//value:100---->100台
,formatUnitTA(value){
return formatUtils.formatText(value,'台');
}
//value:100---->100元
,formatMoneyCN(value){
return formatUtils.formatText(value,'元');
}
//value:100---->100元/人
,formatMoneyPeopleCN(value){
return formatUtils.formatText(value,'元/人');
}
//value:100---->100元/天
,formatMoneyDayCN(value){
return formatUtils.formatText(value,'元/天');
}
//value:100---->¥100
,formatMoneyEN(value){
return formatUtils.formatText(value,'¥','left');
}
//value:22---->22%
,formatRatio(value){
return formatUtils.formatText(value,'%');
}
/**
* 格式化单位
* @param value 原始值
* @param unit 单位名称,如:元、台
* @param pos 单位位置,'right'-默认值,放在右侧(如:"100元"),'left'-放在左侧(如:"¥100")
*/
,formatText(value,unit,pos){
if(value!=''){
return pos=='left'?unit+value:value+unit;
}
return '';
}
/**
* 将对象中 指定的boolean类型转换为string true-->Y | false-->N
* @param obj 要转换的对象
* @param formatPropertiesArray 要转换的属性数组
*/
,formatBooleanToString: function (obj,formatPropertiesArray) {
if(!(obj instanceof Object) || !(formatPropertiesArray instanceof Array)){
return {};
}
formatPropertiesArray.forEach(function (property) {
obj[property] = obj[property]==true?"Y":"N";
});
return obj;
}
};
module.exports = formatUtils;