diff --git a/src/utils/dict.js b/src/utils/dict.js index 20261c9..3cec759 100644 --- a/src/utils/dict.js +++ b/src/utils/dict.js @@ -1,4 +1,4 @@ -import { ref, toRefs } from 'vue'; +import { ref, toRefs, isRef } from 'vue'; import { getSysDictByCode } from '@/api/sysDict' //引入封装数字字典接口 import { getLocalDic } from "@/utils/localDic/index.js" @@ -45,7 +45,7 @@ export function getDict(...args) { p.children = p.itemList }) res.value[d] = result.itemList - // console.log(`${d} - ${result.zdmc} :`, result.itemList); + // }) } @@ -142,3 +142,38 @@ export function IdCard(IdCard, type) { } 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(','); +} + diff --git a/src/utils/exportExcel.js b/src/utils/exportExcel.js new file mode 100644 index 0000000..8430e76 --- /dev/null +++ b/src/utils/exportExcel.js @@ -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); + +}