公共方法

235 阅读1分钟

一、金额三位分隔

function thousandBItSeparator(num) {
    if (num == 0) {
        return 0 + '.00';
    } else {
        var decimal = String(num).split('.')[1] || '';
        if (/\.\d$/.test(String(num))) {
            decimal = decimal.concat('0');
        } else {
            decimal = decimal.slice(0, 2);
        }
        var tempArr = [];
        var revNumArr = String(num).split('.')[0].split('').reverse();
        for (var i in revNumArr) {
            if (i % 3 === 0 && i != 0) {
                tempArr.push(',')
            }
            tempArr.push(revNumArr[i]);
        }
        var res = tempArr.reverse().join('');
        return decimal ? res + '.' + decimal : res + '.00';
    }
}

二、调接口

function getResponse(that, param) {
    const userParam = JSON.parse(sessionStorage.userInfo);
    const item = {
        "branch_id": "90001",
        'device_no': userParam.device_no,
        'cif_no': userParam.cif_no,
        'token_key': userParam.token_key,
        'accessToken': userParam.accessToken,
        ...param
    }
    let _this = that;
    document.getElementById('loadding').style.display = 'block';
    return new Promise((resolve, reject) => {
        request(item).then(function (data) {
            document.getElementById('loadding').style.display = 'none';
            const STATUS = data.SYS_HEAD.RET_STATUS;
            const errorMes = data.SYS_HEAD.RET[0].RET_MSG;
            if (STATUS == 'S') {
                resolve(data.BODY)
            } else if (STATUS == 'F') {
                showErr(data)
            }
        }).catch(err => { })
    })
}

function showErr(data) {
    const errorMes = data.SYS_HEAD.RET[0].RET_MSG;
    const code = data.SYS_HEAD.RET[0].RET_CODE;
    if (isAndroid) {
        if (code == '9997') {
            Verification.showErrorMessag(code, null);
        } else if (code == '9998') {
            const msg = {};
            msg.device_no = data.BODY.device_no;
            msg.rtn_time = data.BODY.rtn_time;
            Verification.showErrorMessag(code, JSON.stringify(msg));
        } else {
            Verification.showMessag(errorMes)
        }
    } else {
        if (code == '9997') {
            const msg = {};
            msg.device_no = "";
            msg.rtn_time = "";
            msg.code = "9997";
            window.webkit.messageHandlers.ShowLoginErrorToast.postMessage(msg);
        } else if (code == '9998') {
            const msg = {};
            msg.device_no = data.BODY.device_no;
            msg.rtn_time = data.BODY.rtn_time;
            msg.code = "9998";
            window.webkit.messageHandlers.ShowLoginErrorToast.postMessage(msg);
        } else {
            window.webkit.messageHandlers.ShowJsToast.postMessage(errorMes);
        }
    }
}

三、处理时间字符串

20191029 => 处理成 2019-10-29

function handleDateFormat1(val) {
    let y = val.substring(0, 4);
    let m = val.substring(4, 6);
    let d = val.substring(6, 8);
    return y + '-' + m + '-' + d;
};

四、姓名掩码

两个字(李*) 三个字(李**) 四个字及以上(李***)

export const nameMask = (str, startLen, endLen) => {
    let len = str.length - startLen - endLen;
    let newStr = '';
    for (let i = 0; i < len; i++) {
        newStr += '*';
        if (len > 3) { newStr = '***' }
    }
    newStr = str.substring(0, startLen) + newStr + str.substring(str.length - endLen);
    return newStr;
}

nameMask('阿尔吉侬', 1, 0); // 阿***
nameMask('李大钊', 1, 0); // 李**
nameMask('鲁迅', 1, 0); // 鲁*
nameMask('拉美西斯二世', 1, 0); // 拉***

五、利率格式化(小数点后4位)

利率小数部分大于4位且以0结尾 只显示4位

toFixedStr = (str) => {
    let [wholeNumber, decimal] = str.split('.');

    // 小数不足4位,直接返回
    if (decimal.length <= 4) { return str }

    // 小数大于4位 先去除尾部多余的0
    decimal = String(Number(`0.${decimal}`)).split('.')[1] || '0';

    // 小数去除尾部0后还大于等于4位,拼接后返回
    if (decimal.length >= 4) {
        return `${wholeNumber}.${decimal}`
    }

    decimal = decimal.padEnd(4, '0');
    return `${wholeNumber}.${decimal}`
}

toFixedStr('12.0'); // 12.0
toFixedStr('12.00'); // 12.00
toFixedStr('12.000000'); // 12.0000
toFixedStr('12.5400000'); // 12.5400
toFixedStr('12.0054260'); // 12.005426

六、银行卡号掩码(保留前四位及后四位)

accountMask = (acct_no) => {
    return acct_no.substring(0, 4) + '***********' + acct_no.substring(acct_no.length - 4, acct_no.length);
}
this.accountMask('6635992600107689629') // 6635***********9629