test/src/utils/tools.js
2025-03-30 22:20:09 +08:00

955 lines
26 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 引入导出Excel表格依赖
import * as FileSaver from "file-saver"
import * as XLSX from "xlsx"
import { getItem } from "@/utils/storage"
import { getApi, postApi } from "@/api/tobAcco_api.js"
import store from "@/store"
import { ElLoading } from "element-plus"
// 获取图片访问路径
export const getImgUrl = iconName => {
if (process.env.NODE_ENV === "development") {
return "http://192.168.1.6:8888/" + iconName
} else if (process.env.NODE_ENV === "production") {
return window.location.origin + "/files/" + iconName//云平台
}
}
//是否是字符串类型
export function isString(value) {
return typeof value === "string"
}
//生成uuid
export function generateUUID() {
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
var r = (Math.random() * 16) | 0,
v = c === "x" ? r : (r & 0x3) | 0x8
return v.toString(16)
})
}
// 下载模板携带token
export function downloadTemplate(type, fileName) {
fileName = fileName ? fileName : "模板"
let url = `/mosty-api/mosty-jcgl/common/exportExcelTemplate?type=${type}`
let token = getItem("token")
const headers = new Headers()
headers.append("Authorization", token) // 设置token
// 发起 Fetch 请求
fetch(url, {
method: "GET",
headers: headers
})
.then(res => res.blob())
.then(blob => {
let a = document.createElement("a")
a.download = fileName + ".xlsx"
a.href = window.URL.createObjectURL(blob)
a.style.display = "none"
document.body.appendChild(a)
a.click()
a.remove()
})
.catch(error => console.error("下载失败:", error))
}
// 下载模板携带token
export function downloadewm(url, fileName) {
const loading = ElLoading.service({
lock: true,
text: "下载中...",
background: "rgba(0, 0, 0, 0.7)"
})
fileName = fileName ? fileName : ""
let token = getItem("token")
const headers = new Headers()
headers.append("Authorization", token) // 设置token
// 发起 Fetch 请求
fetch(url, {
method: "GET",
headers: headers
})
.then(res => res.blob())
.then(blob => {
let a = document.createElement("a")
a.download = fileName + ".zip"
a.href = window.URL.createObjectURL(blob)
a.style.display = "none"
document.body.appendChild(a)
a.click()
a.remove()
loading.close()
})
.catch(error => {
loading.close()
console.error("下载失败:", error)
}
)
}
// 下载二维码
export function qrcodeImg(id, type, ...name) {
let url = `/mosty-api/mosty-jcgl/common/createQrCode?objid=${id}&type=${type}`
if (name.length > 0) {
for (let i = 0; i < name.length; i++) {
const el = name[i]
url = url + `&texts=${el}`
}
}
return url
}
//下载培训二维码
export function qrcodepxImg(id, type, name, ...texts) {
let url = `/mosty-api/mosty-jcgl/common/createQrCodeNoStyle?objid=${id}&objname=${name}&type=${type}`
if (texts.length > 0) {
for (let i = 0; i < texts.length; i++) {
const el = texts[i]
url = url + `&texts=${el}`
}
}
return url
}
/**
* 数据去重 相同数据值累加
* @param {Object} array 数据
*/
export function setArray(array) {
let newArr = []
array.forEach(item => {
const res = newArr.findIndex(ol => {
//组织机构代码相同 并且报警类别相同
return item.ssbmdm == ol.ssbmdm && item.bjlb == ol.bjlb
})
if (res !== -1) {
newArr[res].sl = newArr[res].sl + item.sl
} else {
newArr.push(item)
}
})
return newArr
}
/**
* 合并数据
* @param {Object} array 数据
*/
export function hbArray(array, item1, item2, item3) {
let newArr = []
array.forEach(item => {
const res = newArr.findIndex(ol => {
//组织机构代码相同 并且报警类别相同
return item.product == ol.product
})
if (res !== -1) {
newArr[res][item1] = newArr[res][item1] + item[item1]
newArr[res][item2] = newArr[res][item2] + item[item2]
newArr[res][item3] = newArr[res][item3] + item[item3]
} else {
newArr.push(item)
}
})
return newArr
}
/**
*时间格式
* @export
* @param {*} [obj={}] type:时间类型 time:时间
* @return {*} 返回的时间
*/
export function dateFormat(obj = {}) {
let { type, time } = obj
let date
if (time) {
date = new Date(time)
} else {
date = new Date()
}
let year = date.getFullYear()
let month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1
let hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours()
let minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()
let seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds()
let day
if (type == "front_one_day") {
//前一天日期
day = date.getDate() - 1
day = day < 10 ? "0" + day : day
return `${year}-${month}-${day}`
} else if (type == "month") {
// month = month < 10 ? "0" + month : month;
//返回年月
return `${year}-${month}`
} else if (type == "one") {
//返回当年一月
month = date.getMonth() - date.getMonth() + 1
month = month < 10 ? "0" + month : month
return `${year}-${month}`
} else if (type == "all") {
//格式化日期时间
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate()
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
} else if (type == "queen_two_hour") {
//后两小时
let date1 = new Date(date.getTime() + 2 * 60 * 60 * 1000)
return setTimeTormat(date1)
} else if (type == "year") {
//返回年份
return year
} else if (type == "sfm") {
//返回年份
let hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours()
let minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()
let seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds()
return `${hours}:${minutes}:${seconds}`
} else if (type == "day") {
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate()
// month = month < 10 ? "0" + month : month;
//返回年月日
return `${year}-${month}-${day}`
} else if (type == "ones") {
//返回当年一月
month = date.getMonth() - date.getMonth() + 1
month = month < 10 ? "0" + month : month
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate()
return `${year}-${month}-${day}`
} else if (type == "lastmonth") {
// 计算上一个月的年份和月份
date.setMonth(date.getMonth() - 1)
let months = date.getMonth() + 1
if (months < 10) {
months = "0" + (date.getMonth() + 1)
}
return `${date.getFullYear()}-${months}`
} else if (type == "firstday") {
// 获取当年第一天
return `${year}-01-01`
} else {
//当天日期
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate()
return `${year}-${month}-${day}`
}
}
// 累加或者累减保持精度
/**
*
* @param {*String} type 默认add加
* @param {*Number} part 保留几位小数 4
* @param {...any} args 需要加减的参数
* @param {Number} total 初始值
* @returns
*/
export function numAdd(type = "add", part = 4, total = 0, ...args) {
let count = Number(total)
for (let i = 0; i < args.length; i++) {
if (isNaN(args[i])) {
continue
} else {
args[i] = Number(args[i])
count = type == "add" ? (count += args[i]) : (count -= args[i])
}
}
return part != -1 ? Number(count.toPrecision(20)).toFixed(part) : Number(count.toPrecision(20))
}
//设置时间
function setTimeTormat(date) {
let year1 = date.getFullYear()
let month1 = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1
let day1 = date.getDate() < 10 ? "0" + date.getDate() : date.getDate()
let hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours()
let minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()
let seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds()
return `${year1}-${month1}-${day1} ${hours}:${minutes}:${seconds}`
}
/**
* 查询当天日期
*/
export function getNowDate() {
const timeOne = new Date()
const year = timeOne.getFullYear()
let month = timeOne.getMonth() + 1
let day = timeOne.getDate()
month = month < 10 ? "0" + month : month
day = day < 10 ? "0" + day : day
const NOW_MONTHS_AGO = `${year}.${month}.${day}`
return NOW_MONTHS_AGO
}
// 获取当前系统的时间
export function formatTime(data, flag) {
const date = data ? new Date(data) : new Date()
const y = date.getFullYear()
let m = date.getMonth() + 1
m = m < 10 ? "0" + m : m
let d = date.getDate()
d = d < 10 ? "0" + d : d
let h = date.getHours()
h = h < 10 ? "0" + h : h
let minute = date.getMinutes()
minute = minute < 10 ? "0" + minute : minute
let second = date.getSeconds()
second = second < 10 ? "0" + second : second
if (flag == "ymd") {
return y + "-" + m + "-" + d
} else if (flag == "ym") {
return y + "-" + m
} else {
return h + ":" + minute + ":" + second
}
}
//选择出生日期
export function getDefaultDate() {
const now = new Date()
const oneYearAgo = new Date(now.getFullYear() - 18, now.getMonth(), now.getDate())
return oneYearAgo.toISOString().substring(0, 10)
}
//禁止选择18年后的日期
export function disabledDate(time) {
const date = new Date(time)
const year = date.getFullYear()
return year > new Date().getFullYear() - 18
}
//禁止选择当前系统之前的时间以及当前系统日期
export function disablednowDate(time) {
return time.getTime() + 24 * 60 * 60 * 1000 > Date.now()
}
export function disablednowDate1(time) {
return time.getTime() > Date.now()
}
//禁止选择当前系统之后的时间
export function disablednowDates(time) {
return time.getTime() + 24 * 60 * 60 * 1000 < Date.now()
}
//禁止选择当前系统之后的月份
export function disablednowmonth(time) {
return time.getTime() < Date.now()
}
//数字超长处理
export function handleNum(num) {
var data = 0
if (num) {
try {
if (num * 1 > 100000) {
data = (num / 10000).toFixed(0) + "万"
} else {
data = (num * 1).toFixed(0)
}
} catch (error) {
data = 0
}
}
return data
}
/**
* 文件是否是图片
* @param {*} val
*/
export function IS_PNG(val) {
return (
["bmp", "jpg", "png", "tif", "gif", "pcx", "tga", "exif", "fpx", "svg", "psd", "cdr", "pcd", "dxf", "ufo", "eps", "ai", "raw", "wmf", "webp", "avif", "apng"].indexOf(
val.toLowerCase()
) !== -1
)
}
/**
* 文件是否是音频
* @param {*} val
*/
export function IS_MP3(val) {
return ["mp3", "wav", "wma", "mp2", "flac", "midi", "ra", "ape", "aac", "cda", "mov"].indexOf(val.toLowerCase()) !== -1
}
/**
* 文件是否是视频
* @param {*} val
*/
export function IS_MP4(val) {
return ["avi", "wmv", "mpeg", "mp4", "m4v", "mov", "asf", "fiv", "f4v", "mvb", "rm", "3gp", "vob"].indexOf(val.toLowerCase()) !== -1
}
/**
*对象数组排序
* @export
* @param {*} attr 排序的字段
* @param {*} rev true 升序 false 降序
*/
export function compare(attr, rev) {
if (rev == undefined) {
rev = 1
} else {
rev = rev ? 1 : -1
}
return (a, b) => {
a = a[attr]
b = b[attr]
if (a > b) {
return rev * -1
}
if (a < b) {
return rev * 1
}
return 0
}
}
//附件下载
export function createAndClickLink(downloadUrl, fileName) {
return new Promise((resolve, reject) => {
const xhr = new window.XMLHttpRequest()
xhr.open("GET", downloadUrl, true)
xhr.responseType = "blob"
xhr.onload = () => {
const url = window.URL.createObjectURL(xhr.response)
const a = document.createElement("a")
a.href = url
a.download = fileName
// 使用 setTimeout 延迟点击操作
setTimeout(() => {
a.click()
window.URL.revokeObjectURL(url) // 释放资源
resolve() // 解决 Promise
}, 0)
}
xhr.onerror = () => {
reject(new Error("文件下载失败"))
}
xhr.send()
})
}
/**
*导出表格
* @export
* @param {object} title 表头
* @param {Array} data 数据
* @param {*} XLSX 插件实例化对象
* @param {*} fileName 文件名称
*/
export function exportXlsx(title, tableData, XLSX, fileName) {
const list = tableData.map(item => {
const obj = {}
for (const k in item) {
if (title[k]) {
obj[title[k]] = item[k]
}
}
return obj
})
//创建表个数据
const data = XLSX.utils.json_to_sheet(list)
const wb = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(wb, data, "data")
XLSX.writeFile(wb, fileName + ".xlsx")
}
//节流
export function _throttle(func, delay) {
let timer = null
let startTime = Date.now()
return () => {
let curTime = Date.now()
let remaining = delay - (curTime - startTime)
let context = this
let args = arguments
clearTimeout(timer)
if (remaining <= 0) {
func.apply(context, args)
startTime = Date.now()
} else {
timer = setTimeout(func, remaining)
}
}
}
//echarts自适应
export function chartAdaptation(chart) {
const DELAY = 500 // 延迟时间
let fnn = _throttle(() => {
setTimeout(() => {
chart.resize()
}, 300)
}, DELAY)
window.addEventListener("resize", fnn)
}
//深拷贝
export function deepClone(obj, cache = new WeakMap()) {
if (typeof obj !== "object") return obj // 普通类型,直接返回
if (obj === null) return obj
if (cache.get(obj)) return cache.get(obj) // 防止循环引用,程序进入死循环
if (obj instanceof Date) return new Date(obj)
if (obj instanceof RegExp) return new RegExp(obj)
// 找到所属原型上的constructor所属原型上的constructor指向当前对象的构造函数
let cloneObj = new obj.constructor()
cache.set(obj, cloneObj) // 缓存拷贝的对象,用于处理循环引用的情况
for (let key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
cloneObj[key] = deepClone(obj[key], cache) // 递归拷贝
}
}
return cloneObj
}
//导出为Excel表格 exportExcel
export function exportExcel(tabname) {
//从表生成工作簿对象
var wb = XLSX.utils.table_to_book(document.querySelector("#out-table"))
//获取二进制字符串作为输出
var wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array"
})
try {
FileSaver.saveAs(
//Blob 对象表示一个不可变、原始数据的类文件对象。
//Blob 表示的不一定是JavaScript原生格式的数据。
//File 接口基于Blob继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
//返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
new Blob([wbout], { type: "application/octet-stream" }),
//设置导出文件名称
`${tabname ? tabname : "index"}.xlsx`
)
} catch (e) {
if (typeof console !== "undefined") {
}
}
return wbout
}
//表格合计
export function getSummaries(param) {
const { columns, data } = param
const sums = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = "合计"
return
}
const values = data.map(item => Number(item[column.property]))
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
return numAdd("add", -1, prev, curr)
} else {
return prev
}
}, 0)
} else {
sums[index] = "N/A"
}
})
return sums
}
//合并数组方法
export function mergeArray(arr1, arr2) {
const newArray = []
let length1 = arr1.length
let length2 = arr2.length
for (let i = 0; i < length1; i++) {
for (let j = 0; j < length2; j++) {
if (i == j) {
let mergeItem = Object.assign(arr1[i], arr2[j])
newArray.push(mergeItem)
break
}
}
}
return newArray
}
/* 1 . 手机校验 */
export const validatePhone = rule => {
return (rule, value, callback) => {
if (!value) {
} else {
const reg = /^1[3|4|5|7|8][0-9]\d{8}$/
if (reg.test(value)) {
callback()
} else {
return callback(new Error("请输入正确的手机号"))
}
}
}
}
//身份证校验
export const validateIdentity = () => {
return (rule, value, callback) => {
if (!value) {
// return callback(new Error('身份证号不能为空'));
} else if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(value)) {
callback(new Error("输入的身份证长度或格式错误"))
}
//身份证城市
var aCity = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "内蒙古",
21: "辽宁",
22: "吉林",
23: "黑龙江",
31: "上海",
32: "江苏",
33: "浙江",
34: "安徽",
35: "福建",
36: "江西",
37: "山东",
41: "河南",
42: "湖北",
43: "湖南",
44: "广东",
45: "广西",
46: "海南",
50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门",
91: "国外"
}
if (!aCity[parseInt(value.substr(0, 2))]) {
callback(new Error("身份证地区非法"))
}
// 出生日期验证
var sBirthday = (value.substr(6, 4) + "-" + Number(value.substr(10, 2)) + "-" + Number(value.substr(12, 2))).replace(/-/g, "/"),
d = new Date(sBirthday)
if (sBirthday !== d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate()) {
callback(new Error("身份证上的出生日期非法"))
}
// 身份证号码校验
var sum = 0,
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],
codes = "10X98765432"
for (var i = 0; i < value.length - 1; i++) {
sum += value[i] * weights[i]
}
var last = codes[sum % 11] //计算出来的最后一位身份证号码
if (value[value.length - 1] !== last) {
callback(new Error("输入的身份证号非法"))
}
callback()
}
}
/**
* 根据身份证计算出生日期
* @param {*} idCard
* @returns
*/
export function getBirthdayFromIdCard(idCard) {
var birthday = ""
if (idCard != null && idCard != "") {
if (idCard.length == 15) {
birthday = "19" + idCard.substr(6, 6)
} else if (idCard.length == 18) {
birthday = idCard.substr(6, 8)
}
birthday = birthday.replace(/(.{4})(.{2})/, "$1-$2-")
}
return birthday
}
/**
* 倒计时
* @param {*} time 目标时间
* @returns
*/
export function countDown(time) {
// 设置目标时间这里以毫秒为单位。例如设置为当前时间后的1小时
let countDownDate = time ? new Date(time).getTime() : new Date().getTime() // 1小时后的时间
// 获取当前时间
let now = new Date().getTime()
// 计算距离时间
let distance = countDownDate - now
// 倒计时时间计算
let num,
obj = { overtime: false, timeValue: "" }
if (distance > 0) {
num = distance
} else {
// 如果倒计时结束
num = Math.floor(Math.abs(distance))
obj.overtime = true
}
let days = Math.floor(num / (1000 * 60 * 60 * 24))
let hours = Math.floor((num % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))
let minutes = Math.floor((num % (1000 * 60 * 60)) / (1000 * 60))
let seconds = Math.floor((num % (1000 * 60)) / 1000)
obj.timeValue = days + "天 " + hours + "时 " + minutes + "分 " + seconds + "秒 "
return obj
}
export function weekValidate(date) {
let val = (new Date(date)).getDay()
switch (val) {
case 0:
return "星期日"
case 1:
return "星期一"
case 2:
return "星期二"
case 3:
return "星期三"
case 4:
return "星期四"
case 5:
return "星期五"
case 6:
return "星期六"
}
}
// 转换时间格式
export function timeValidate(date, type) {
const time = date ? new Date(date) : new Date()
const yyyy = time.getFullYear()
const MM = (time.getMonth() + 1).toString().padStart(2, 0)
const dd = time.getDate().toString().padStart(2, "0")
const hh = time.getHours().toString().padStart(2, "0")
const mm = time.getMinutes().toString().padStart(2, "0")
const ss = time.getSeconds().toString().padStart(2, "0")
if (type == "ymd") {
return `${yyyy}-${MM}-${dd}`
}
if (type == "md") {
return `${MM}.${dd}`
}
return `${yyyy}-${MM}-${dd} ${hh}:${mm}:${ss}`
}
/**根据字典获取值
* @param {Array} dicArr 字典数组
* @param {String} val 值
*/
export function getValByDic(val, dicArr) {
val = typeof val === "string" ? val : ""
/** 是否多个数值 */
const isMult = val.indexOf(",") > -1
if (val === undefined) return ""
dicArr = Array.isArray(dicArr) ? dicArr : []
/** 字典对象 */
let dicObj = {}
for (let i = 0; i < dicArr.length; i++) {
const item = dicArr[i]
dicObj[item.value] = item.label
}
if (isMult) {
let valArr = val.split(",")
return valArr.map(dm => dicObj[dm]).join(",")
} else {
return dicObj[val] || val || "" // 查询不到返回原值
}
}
/** 按钮权限 */
export function getAuth() {
return new Promise((resolve, reject) => {
// 先强制为 true TODO: 方便所有人有权限
resolve(true)
// 后面以后用
// getApi({}, '/mosty-jcgl/securitychild/isAqyPower').then(res => {
// store.dispatch('user/setAuth', res)
// resolve(res)
// })
})
}
/**
* 限制小数位数
* @param { Number,String} 值
* @param {Number} num 小数位数
*/
export function numberLimit(val, num = 2) {
if (val === 0) return "0"
if (!val) return ""
if (typeof val === "number") val = String(val)
if (typeof val !== "string") return ""
switch (num) {
case 1:
return val.match(/\d+\.?\d{0,1}/)?.[0] || ""
break
case 2:
return val.match(/\d+\.?\d{0,2}/)?.[0] || ""
break
case 3:
return val.match(/\d+\.?\d{0,3}/)?.[0] || ""
break
case 4:
return val.match(/\d+\.?\d{0,4}/)?.[0] || ""
break
}
return ""
}
/**
* 将数字转换为中文数字表示形式 如11 十一
*
* @param {number} num - 要转换的数字。
* @returns {string} - 转换后的中文数字字符串。
*/
export function toChineseNumber(num) {
// 四位四位的进行分割
const parts = num
.toString()
.replace(/(?=(\d{4})+$)/g, ",")
.split(",")
.filter(Boolean)
const map = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]
const units = ["", "十", "百", "千"]
// 把连续的零给去掉 合并为1个零 当零在末尾的时候去掉
function _handleZero(str) {
return str.replace(/零+/g, "零").replace(/零$/, "")
}
function _transform(n) {
let result = ""
for (let i = 0; i < n.length; i++) {
const c = map[n[i]]
let u = units[n.length - i - 1]
if (c === "零") {
u = ""
}
result += c + u
}
result = _handleZero(result)
return result
}
const bigUnits = ["", "万", "亿"]
let result = ""
for (let i = 0; i < parts.length; i++) {
const p = parts[i]
const c = _transform(p)
const u = bigUnits[parts.length - i - 1]
if (c === "") {
result += "零"
continue
}
result += c + u
}
result = _handleZero(result)
if (result === "一十一") return "十一"
if (result === "一十二") return "十二"
if (result === "一十三") return "十三"
if (result === "一十四") return "十四"
if (result === "一十五") return "十五"
if (result === "一十六") return "十六"
if (result === "一十七") return "十七"
if (result === "一十八") return "十八"
if (result === "一十九") return "十九"
return result
}
/**
* 从一个列表中过滤目标数组
* @param originalData
* @param filteredData
*/
export const arrayFiltering = (originalData, filteredData) => {
let data = originalData
for (let i = 0; i < data.length; i++) {
for (let j = 0; j < filteredData.length; j++) {
if (filteredData[j] in data[i]) {
if (typeof data[i][filteredData[j]] !== "number" && typeof data[i][filteredData[j]] !== "boolean") {
if (data[i][filteredData[j]] !== null && (typeof data[i][filteredData[j]] === "string" || data[i][filteredData[j]] instanceof Array) && data[i][filteredData[j]].length) {
if (j === filteredData.length - 1) {
data[i]["sign"] = true
}
}else {
data[i]["sign"] = false
break
}
}
} else {
data[i]["sign"] = false
break
}
}
}
return data
}
/**
* 检查原始对象中是否包含合规的数据
* @param primaryObject
* @param filterArray
*/
export const singleObjectCheck = (primaryObject, filterArray) => {
for (let i = 0; i < filterArray.length; i++) {
if (filterArray[i] in primaryObject) {
if (typeof primaryObject[filterArray[i]] !== "number" && typeof primaryObject[filterArray[i]] !== "boolean" && typeof primaryObject[filterArray[i]] !== "undefined") {
if (primaryObject[filterArray[i]] !== null && (typeof primaryObject[filterArray[i]] === "string" || primaryObject[filterArray[i]] instanceof Array) && primaryObject[filterArray[i]].length) {
if (i === filterArray.length - 1) {
primaryObject["sign"] = true
}
}else {
primaryObject["sign"] = false
break
}
}else {
primaryObject["sign"] = true
}
} else {
primaryObject["sign"] = false
break
}
}
return primaryObject
}
/**
* 判断两个数组是否有交集
* @param arr1
* @param arr2
* @returns {boolean}
*/
export const haveIntersection = (arr1, arr2) => {
return arr1.filter(item => arr2.includes(item)).length > 0;
}