/** * 格式化金额, 保留两位小数 * @param o * @param o.amount {number | string} 金额 * @param o.precision {number} 精度, 默认 100 (分) * @param o.thousand {boolean} 是否需要千分位, 默认 true * @param o.decimal {boolean} 是否需要小数点, 默认 true * @param o.decimalLength {number} 小数点位数, 默认 2 * @param o.decimalSeparator {string} 小数点分隔符, 默认 '.' * @param o.thousandSeparator {string} 千分位分隔符, 默认 ',' * @return {string | number} */ export const amountFormat = (o) => { if (o.amount === undefined || o.amount === null) { return o.amount; } let amount = o.amount; // 如果 amount 是字符串, 则转换为数字 if (typeof amount === 'string') { amount = parseFloat(amount); } let precision = o.precision || 100; let thousand = o.thousand === undefined ? true : o.thousand; let decimal = o.decimal === undefined ? true : o.decimal; let decimalLength = o.decimalLength || 2; let decimalSeparator = o.decimalSeparator || '.'; let thousandSeparator = o.thousandSeparator || ','; amount = amount / precision; amount = amount.toFixed(decimalLength); if (thousand) { amount = amount.replace(/(\d)(?=(\d{3})+\.)/g, '$1' + thousandSeparator); } if (decimal) { amount = amount.replace('.', decimalSeparator); } return amount; } /** * 参数处理 * @param {*} params 参数 */ export function tansParams(params) { let result = '' for (const propName of Object.keys(params)) { const value = params[propName]; var part = encodeURIComponent(propName) + "="; if (value !== null && value !== "" && typeof (value) !== "undefined") { if (typeof value === 'object') { for (const key of Object.keys(value)) { if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') { let params = propName + '[' + key + ']'; var subPart = encodeURIComponent(params) + "="; result += subPart + encodeURIComponent(value[key]) + "&"; } } } else { result += part + encodeURIComponent(value) + "&"; } } } return result } // 精度计算乘法 export function NumberMul(arg1, arg2) { let m = 0 const s1 = arg1.toString() const s2 = arg2.toString() try { m += s1.split('.')[1].length } catch (e) {} try { m += s2.split('.')[1].length } catch (e) {} return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m) } // 精度计算除法 // 除数,被除数, 保留的小数点后的位数 export function NumberDiv(arg1, arg2) { arg1 = parseFloat(arg1) arg2 = parseFloat(arg2) let t1 = 0 let t2 = 0 let r1; let r2 try { t1 = arg1.toString().split('.')[1].length } catch (e) {} try { t2 = arg2.toString().split('.')[1].length } catch (e) {} r1 = Number(arg1.toString().replace('.', '')) r2 = Number(arg2.toString().replace('.', '')) return Mul(r1 / r2, Math.pow(10, t2 - t1)) } export function Mul(arg1, arg2) { arg1 = parseFloat(arg1) arg2 = parseFloat(arg2) let m = 0 const s1 = arg1.toString() const s2 = arg2.toString() try { m += s1.split('.')[1].length } catch (e) {} try { m += s2.split('.')[1].length } catch (e) {} return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m) } export const GetADateTime = { // 获取今天起始时间日期 getTodayBegin() { const date = new Date(); const year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); // 年月日时分秒 // 月和日如果是一位数的话,前面补0 if (month < 10) { month = '0' + month; } if (day < 10) { day = '0' + day; } return year + '-' + month + '-' + day + ' 00:00:00'; }, // 获取今天结束时间日期 getTodayEnd() { const date = new Date(); const year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); // 年月日时分秒 // 月和日如果是一位数的话,前面补0 if (month < 10) { month = '0' + month; } if (day < 10) { day = '0' + day; } return year + '-' + month + '-' + day + ' 23:59:59'; } }