UNPKG

yylib-quick-mobile

Version:

yylib-quick-mobile

144 lines (139 loc) 5.05 kB
//确保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;