import store from '@/store'; export function formatDictText(dicts, values) { if (!(Array.isArray(dicts) && dicts.length > 0)) { return values; } if (!values) { return ''; } let valueArr = values.split(','); let contentArr = []; dicts.forEach((dict) => { for (let i = 0; i < valueArr.length; i++) { if (valueArr[i] === dict.value) { contentArr.push(dict.content); break; } } }); return contentArr.toString(); } export function randomString(len) { len = len || 32; const $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; /** **默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/ const maxPos = $chars.length; let pwd = ''; for (let i = 0; i < len; i++) { pwd += $chars.charAt(Math.floor(Math.random() * maxPos)); } return pwd; } // 深度拷贝 export function copyObj(obj) { //变量先置空 let newobj = null; //判断是否需要继续进行递归 if (typeof obj == 'object' && obj !== null) { newobj = obj instanceof Array ? [] : {}; //进行下一层递归克隆 for (const i in obj) { newobj[i] = copyObj(obj[i]); } //如果不是对象直接赋值 } else newobj = obj; return newobj; } //合计费用 export function getSummaries(param, key, unit) { const { columns, data } = param; const sums = []; columns.forEach((column, index) => { if (index === 0) { sums[index] = '合计'; return; } if (key.includes(column.property)) { const values = data.map((item) => Number(item[column.property])); console.log(values); if (!values.every((value) => isNaN(value))) { sums[index] = values.reduce((prev, curr) => { const value = Number(curr); if (!isNaN(value)) { return prev + curr; } else { return prev; } }, 0); sums[index] = parseFloat(sums[index]) .toFixed(3) .replace(/\.?0+$/, ''); sums[index] += ' ' + unit + ''; } else { sums[index] = ''; } } else { sums[index] = ''; } }); return sums; } // 数字金额转大写金额 export function convertToChinese(num) { if (num === 0 || num === '0' || !num) return '零元整'; if(isNaN(num)) return ''; // 中文数字 const cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; // 单位 const cnIntRadice = ['', '拾', '佰', '仟']; // 整数部分扩展单位 const cnIntUnits = ['', '万', '亿', '兆']; // 小数部分单位 const cnDecUnits = ['角', '分']; // 整数部分前缀 const cnInteger = '整'; // 零前缀 const cnIntLast = '元'; // 处理数字 let integerNum; let decimalNum; let chineseInteger = ''; let chineseDecimal = ''; // 转换为字符串并分割整数和小数部分 const numStr = parseFloat(num).toFixed(2); const parts = numStr.split('.'); integerNum = parts[0]; decimalNum = parts[1]; // 处理整数部分 if (parseInt(integerNum, 10) > 0) { let zeroCount = 0; for (let i = 0; i < integerNum.length; i++) { const n = parseInt(integerNum.charAt(i), 10); const p = integerNum.length - i - 1; const q = p / 4; const m = p % 4; if (n === 0) { zeroCount++; } else { if (zeroCount > 0) { chineseInteger += cnNums[0]; } zeroCount = 0; chineseInteger += cnNums[n] + cnIntRadice[m]; } if (m === 0 && zeroCount < 4) { chineseInteger += cnIntUnits[q]; } } } else { chineseInteger += cnNums[0]; } // 处理小数部分 if (decimalNum !== '00') { for (let i = 0; i < decimalNum.length; i++) { const n = parseInt(decimalNum.charAt(i), 10); if (n !== 0) { chineseDecimal += cnNums[n] + cnDecUnits[i]; } } } // 组合结果 if (chineseDecimal === '') { return chineseInteger + cnIntLast + cnInteger; } else { return chineseInteger + cnIntLast + chineseDecimal; } }