js中utils.js处理后台返回数据
例如:后台返回的 data
var obj = {
cashAmount: 236700,// 金额(分)
cashDate: "2018-05-26 10:25:28",// 时间
cashStatus: 0,// 回款状态
createTime: "2018-05-23 10:26:25",// 创建时间
payChannel: null,// 支付方式
remark: "",// 备注
userMobile: "13226452474",// 联系人电话
}
需要对数据进行以下处理,再渲染到页面
1.cashAmount 转换成元,并保留两位小数
2.cashStatus 进行解析(0-未回款 1-已回款)
3.payChannel 进行解析 ('zfb'-支付宝,'wx'-微信支付,'cash'-现金支付,'bankTransfer'-银行转账)
4.所有值为 '' , null , undefined 的字段,全部设置为:'--'
一顿猛如虎操作,提供如下函数。。。
var handleData={
setDefault(obj) {
let _obj=JSON.parse(JSON.stringify(obj));
for (let key in _obj){
if(_obj[key]===''||_obj[key]===null||_obj[key]===undefined){
_obj[key]='--'
}
}
return _obj;
},
setFormatMobile(obj) {
let _obj=JSON.parse(JSON.stringify(obj));
let _formatType="xxx xxx xxxx",i = 0;
_obj.userMobile= _formatType.replace(/x/g, function(){
return _obj.userMobile[i++]
});
return _obj;
},
setPayChannelLabel(obj) {
let _obj=JSON.parse(JSON.stringify(obj));
let payChannelLabel = {
'zfb': '支付宝',
'wx': '微信支付',
'cash': '现金支付',
'bankTransfer': '银行转账'
}
_obj.payChannel = payChannelLabel[_obj.payChannel];
return _obj;
},
setCashAmount(obj) {
let _obj=JSON.parse(JSON.stringify(obj));
_obj.cashAmount = (_obj.cashAmount / 100).toFixed(2);
return _obj;
},
setCashStatus(obj) {
let _obj=JSON.parse(JSON.stringify(obj));
_obj.cashStatus = _obj.cashStatus === 0 ? '未回款' : '已回款';
return _obj;
},
result(obj, fns='setFormatMobile, setCashStatus, setCashAmount, setPayChannelLabel, setDefault'){
let _obj=JSON.parse(JSON.stringify(obj));
let _fns=fns.split(',');
_fns.forEach(item => {
_obj=this[item](_obj);
});
return _obj;
}
}
obj=handleData.result(obj,'setCashStatus,setCashAmount,setPayChannelLabel,setDefault,setFormatMobile');
console.log('666------', obj)
例:后台返回时间格式,对比当前时间
{ ..., publishTime: "2019-07-31T02:18:23.000Z" } // 根据publishTime对比当前时间,得出是否 已上线 / 未上线
cnpm i dayjs -S
dayjs 相关api的使用
检查一个Dayjs对象是否在另一个Dayjs对象时间之前:
dayjs(item.publishTime).isBefore(dayjs()) ? '已上线' : '未上线'
检查一个Dayjs对象是否在另一个Dayjs对象时间之后
dayjs().isAfter(dayjs())