| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- 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;
- }
- }
|