一、保留N位小数(四舍五入)管道
输入保留位数与是否增加正号(默认否),不为数值则直接返回,若为数值则四舍五入后去除末尾0并拼接原单位至数值末尾。
(1)管道文件代码
Vue.filter('reserveDecimal', function(value, num, sign = false) {
return decimalUtil.reserveDecimal(value, num, sign);
})
(2)工具类文件代码
reserveDecimal(value, num, sign) {
if (_.isUndefined(value) || _.isNull(value)) {
return value;
}
if (typeof(value) != 'number' && typeof(value) != 'string') {
return value;
}
var reg =/[\u4e00-\u9fa5]/g;
let strList = String(value).match(reg);
let result = Number(String(value).replace(reg, ""));
if (Number.isNaN(result) || result == 0) {
return value;
}
result = String(parseFloat(value).toFixed(num));
if (result.indexOf('.') != -1) {
for(let n = result.length - 1; n >= 0; n --) {
if (result[n] == '0') {
result = result.substring(0, result.length - 1);
}else if (result[n] == '.'){
result = result.substring(0, result.length - 1);
break;
} else {
break;
}
}
}
if (sign && Number(result) > 0) {
result = '+' + result;
}
if (strList != null && strList.length != 0) {
for (let item of strList) {
result += item;
}
}
return result;
}
二、日期格式化管道
输入格式,默认为yyyy-MM-dd。
(1)管道文件代码
Vue.filter('dateFormatter', function(value, format = 'yyyy-MM-dd') {
if (!value) {
return value;
}
if (new Date(Date.parse(value.replace(/-/g, '/'))) == 'Invalid Date'){
return value;
}
return util.format.formatStrTime(value, format);
})
(2)工具类文件代码
formatStrTime: function (dateStr, format = 'yyyy-MM-dd HH:mm:ss') {
let date = new Date(Date.parse(dateStr.replace(/-/g, '/')));
return dateFormat(format, date);
},
export const dateFormat = (fmt, date) => {
let ret;
const opt = {
'y+': date.getFullYear().toString(),
'M+': (date.getMonth() + 1).toString(),
'd+': date.getDate().toString(),
'H+': date.getHours().toString(),
'm+': date.getMinutes().toString(),
's+': date.getSeconds().toString()
}
for (let k in opt) {
ret = new RegExp('(' + k + ')').exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')));
}
}
return fmt;
}