feat: 工具更细

This commit is contained in:
2025-12-16 20:41:24 +08:00
parent d2e394a1bb
commit 941bd6fe57
2 changed files with 87 additions and 2 deletions

View File

@ -1,4 +1,4 @@
import { ref, toRefs } from 'vue'; import { ref, toRefs, isRef } from 'vue';
import { getSysDictByCode } from '@/api/sysDict' //引入封装数字字典接口 import { getSysDictByCode } from '@/api/sysDict' //引入封装数字字典接口
import { getLocalDic } from "@/utils/localDic/index.js" import { getLocalDic } from "@/utils/localDic/index.js"
@ -45,7 +45,7 @@ export function getDict(...args) {
p.children = p.itemList p.children = p.itemList
}) })
res.value[d] = result.itemList res.value[d] = result.itemList
// console.log(`${d} - ${result.zdmc} :`, result.itemList); //
}) })
} }
@ -142,3 +142,38 @@ export function IdCard(IdCard, type) {
} }
return user return user
} }
/**
*翻译字典数据
* @export
* @param {*} dm
* @param {*} array
*/
export function getDictValue(dm, array) {
let item = array.value.find(item => {
if (item.value) {
return item.value == dm;
} else if (item.dm) {
return item.dm == dm;
}
})
return item ? item.label : ""
}
/** 获取多个字典值(一个值也可以) 字典内容 value-label
* @param {String} 要查的值
* @param {Array} dict 字典内容
*/
export function getMultiDictVal(values, dict) {
if (typeof values === 'string' && values?.length) values = values.split(',')
if (!Array.isArray(values)) return ''
if (isRef(dict)) dict = dict.value
if (!Array.isArray(dict)) return ''
return values.map(v => {
const item = dict.find(item => item.value === v);
return item ? item.label : v;
}).join(',');
}

50
src/utils/exportExcel.js Normal file
View File

@ -0,0 +1,50 @@
import * as XLSX from "xlsx";
/**
* 导出Excel(简单的导出)
* @param {Array} data 二维数据
* @param {String} fileName 文件名
*/
export function easyExport(data, fileName = '导出文件') {
const wb = XLSX.utils.book_new();
// 二维数组例子:[ ['姓名', '年龄', '城市'], ['张三', 25, '北京'], ['李四', 30, '上海'] ];
const ws = XLSX.utils.aoa_to_sheet(data); // aoa_to_sheet 方法将二维数组转换为工作表
XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
XLSX.writeFile(wb, fileName + '.xlsx');
}
/**
* 根据对象导出Excel
* @param {Object} titleObj 标题对象 {key: '标题', key2: '标题2'}
* @param {Array} dataArr 数据数组 例子 [{key: '张三', key2: '25'}, {key: '李四', key2: '30'}]
* @param {String} fileName 文件名
*/
export function exportExlByObj(titleObj, dataArr, fileName = '导出文件') {
dataArr = Array.isArray(dataArr) ? [...dataArr] : []
/** 列表标题数组 */
const titleArr = [Object.values(titleObj)];
const sheetHead = [fileName]
/** 转二维数据 */
const toNeedArr = (titleObj = {}, tableData = []) => {
return tableData.map(row => {
const rowArr = []
Object.keys(titleObj || {}).map(key => {
const cellVal = row[key] || ''
if (typeof cellVal !== 'string') String(cellVal)
rowArr.push(cellVal)
})
return rowArr
})
}
/** @param {Array} 表格数据 (二维数组) */
const tableData = toNeedArr(titleObj, dataArr);
// 合并标题和数据
const finalData = [...titleArr, ...tableData];
// 合并标题
easyExport(finalData, fileName);
}