import { formatDate } from "@/util/formatTime"; //处理动态表单函数数组提取格式 {prop:key} export const handlerObj = (prop, key, data) => { const keyObj = data.reduce((v, cur) => { if (!v[cur[prop]]) { v[cur[prop]] = []; } v[cur[prop]] = cur[key]; return v; }, {}); return keyObj; }; //处理动态表单函数数组提取格式 {prop:key} export const handlerProp = (prop, data) => { const keyObj = data.reduce((v, cur) => { if (!v[cur[prop]]) { v[cur[prop]] = []; } v[cur[prop]] = undefined; return v; }, {}); return keyObj; }; //过滤对象空值/单个值 export const filterateObj = (obj, filter) => { return Object.entries(obj).reduce((acc, [key, value]) => { if (!filter) { if (value !== "" && value !== null && value !== undefined) { acc[key] = value; } } else { if (value !== filter) { acc[key] = value; } } return acc; }, {}); }; // 过滤数组多个值 export const filterateKeys = (data, keys, prop = "prop") => { if (typeof keys === "string") keys = keys.split(","); return data.filter((v) => { if (keys.length > 0) { for (let key of keys) { if (v[prop] == key) { return false; } } } return true; }); }; /** * 下载文件 * @param data 文件流程 */ export function blobDownload(data) { const newFileName = formatDate(new Date(), "yyyyMMddHHmmss"); //如果能用,打赏下呗 博主猜坑不容易 头发都白了很多 let name = newFileName; var content = data; var datas = new Blob([content], { type: "application/vnd.ms-excel;charset=utf-8", }); var downloadUrl = window.URL.createObjectURL(datas); var anchor = document.createElement("a"); anchor.href = downloadUrl; anchor.download = name + ".xls"; anchor.click(); window.URL.revokeObjectURL(datas); } /** * 数组合并取并集 * @param arr 数组1 主 * @param data 数组2 辅 * @param key 数组2的相同字段key * @param prop 数组2的字段拼接到数组1中,不传默认全部字段 */ export function combineData(arr, data, key, prop) { let newArr = []; data.forEach((d) => { let findObj = arr.find((a) => a.id === d[key]); if (findObj) { newArr.push(findObj); } }); const arrArray = newArr.map((obj, index) => { if (prop) { const filteredObj = Object.fromEntries( Object.entries(data[index]).filter(([key]) => prop.includes(key)) ); return { ...obj, ...filteredObj }; } else { return { ...obj, ...data[index] }; } }); const differentObjects = arr.filter( (v) => !data.some((da) => da[key] === v.id) ); console.log("newArr", differentObjects); const r = [...differentObjects, ...arrArray]; return r; }