Files
lz_web_qwgl/src/utils/tools.js
2025-06-08 22:23:25 +08:00

295 lines
8.4 KiB
JavaScript

// 毫秒转时长
export function formatDuring(mss) {
var days = parseInt(mss / (1000 * 60 * 60 * 24));
var hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60));
var seconds = (mss % (1000 * 60)) / 1000;
if (days) {
return days + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒";
} else if (hours) {
return hours + "小时" + minutes + "分钟" + seconds + "秒";
} else if (minutes) {
return minutes + "分钟" + seconds + "秒";
} else {
return seconds + "秒";
}
}
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 getDifferTime(startDate, endDate, type='day') {
let startTime = new Date(Date.parse(startDate.replace(/-/g,"/"))).getTime();
let endTime = new Date(Date.parse(endDate.replace(/-/g,"/"))).getTime();
let dates = 0;
switch (type) {
case "day":
dates = Math.abs((startTime - endTime)) / (1000 * 60 * 60 * 24);
break;
case "hour":
dates = Math.abs((startTime - endTime)) / (1000 * 60 * 60);
break;
}
return Math.round(dates)
}
// 转换时间格式
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}`
}
// 获取当前近多少天 7后7天 -7 前五天
export function getRecentDay(n) {
var currentDate = new Date();
var preDate = new Date(currentDate.getTime() + n * 24 * 3600 * 1000)
let year = preDate.getFullYear()
let mon = preDate.getMonth() + 1
let day = preDate.getDate()
let s = year + '-' + (mon < 10 ? ('0' + mon) : mon) + '-' + (day < 10 ? ('0' + day) : day)
return s
}
// 获取时间的第一天 和最后一天
export function getThistWeekDare(type) {
var dateArr = []
var date = new Date()
let year = date.getFullYear() //当年
let m = date.getMonth() + 1 //当月
let mon = m < 10 ? ("0" + m) : m;
if (type == 'week') { //周
date.setDate(date.getDate() - date.getDay() + 1); // 本周一的日期
let first = year + '-' + mon + '-' + date.getDate()
date.setDate(date.getDate() - date.getDay() + 7); // 本周日的日期
let last = year + '-' + mon + '-' + date.getDate()
dateArr = [timeValidate(first,"ymd"),timeValidate(last,"ymd")]
} else if (type == 'month') { //月
let d = new Date(year, m, 0).getDate() //获取当月最后一天
let day = d < 10 ? "0" + d : d
dateArr = [[year, mon, '01'].join('-'), [year, mon, day].join('-')]
} else if (type == 'quarter') { //季度
let quarter = Math.floor(mon / 3)//从1开始到4
let quarterArr = []
if(quarter == 1) quarterArr = [new Date(year,0,1),new Date(year,2,31)];
if(quarter == 2) quarterArr = [new Date(year,3,1),new Date(year,5,30)];
if(quarter == 3) quarterArr = [new Date(year,6,1),new Date(year,8,30)];
if(quarter == 4) quarterArr = [new Date(year,9,1),new Date(year,11,31)];
dateArr = [timeValidate(quarterArr[0],'ymd'),timeValidate(quarterArr[1],'ymd')]
}
return dateArr
}
// 获取n近7月 7后7 -7 前
export function getnRencebtMonth(n) {
let date = new Date();
date.setMonth(date.getMonth() - n)
date.toLocaleDateString()
let y = date.getFullYear()
let m = date.getMonth() + 1
m = m < 10 ? ('0' + m) : m + ''
return y + m
}
/**
* 数据去重 相同数据值累加
* @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 function dateFormat(type, time) {
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 == 'z') {
//前一天日期
day = date.getDate() - 1;
day = day < 10 ? "0" + day : day;
return `${year}-${month}-${day}`;
} else if (type == 'all') {
//格式化日期时间
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
} else {
//当天日期
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
return `${year}-${month}-${day}`;
}
return day
}
//数字超长处理
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
}
function handelArr(arr) {
let brr = []
if (arr && arr.length > 0) {
let obj = {}
let coords = "";
for (let i = 0; i < arr.length; i++) {
coords += arr[i] + ","
}
obj.coords = coords
brr.push(obj)
}
return brr
}
/**
* 时间 天数
* @param {*} val
*/
export function setEchartTime(val) {
let date = new Date();
let arrTime = [];
if (val == 0) {
for (let i = 0; i < 24; i++) {
arrTime.push(i)
}
} else {
for (let i = 0; i < val; i++) {
let date1 = new Date(date.getTime() - i * 24 * 60 * 60 * 1000)
arrTime.push(_setTime(date1))
}
arrTime.reverse()
}
return arrTime
}
//设置时间
function _setTime(date) {
let month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
let day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
return `${month}-${day}`;
}
// 随机颜色 - 把16进制的颜色换成rgba格式
export function choseRbgb(color,opcity) {
if(color){
return 'rgba('+ parseInt('0x'+color.slice(1,3)) + ','+ parseInt('0x'+color.slice(3,5))+','+parseInt('0x'+color.slice(5,7)) + ','+opcity+')'
}else{
let r = Math.floor(Math.random()*256)
let g = Math.floor(Math.random()*256)
let b = Math.floor(Math.random()*256)
let a = opcity ? opcity :1
return `rgba(${r},${g},${b},${a})`
}
}