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())



 

 

 

posted @ 2019-05-06 10:48  慕斯undefined  阅读(609)  评论(0编辑  收藏  举报