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