feat: 工具更细
This commit is contained in:
@ -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
50
src/utils/exportExcel.js
Normal 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);
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user