| | |
| | | /* 时间函数 */ |
| | | |
| | | import dayjs from 'dayjs' |
| | | import lineChart from '@/utils/chartFunction/lineChart.js' |
| | | export default { |
| | | // 判断已选的月份是否大于当前月份 |
| | | judgeDateValid(date) { |
| | | // 获得当月月份 |
| | | let currentMonth = dayjs() |
| | | let selectMonth = date.getTime() |
| | | // 选择大于现在月份 |
| | | if (selectMonth > currentMonth) { |
| | | return true |
| | | } |
| | | |
| | | |
| | | // 判断已选的月份是否大于当前月份 |
| | | judgeDateValid(date){ |
| | | // 获得当月月份 |
| | | let currentMonth = dayjs() |
| | | let selectMonth = date.getTime() |
| | | // 选择大于现在月份 |
| | | if(selectMonth > currentMonth){ |
| | | return true |
| | | } |
| | | return false |
| | | }, |
| | | |
| | | return false |
| | | } |
| | | /** |
| | | * 判断两个日期是否相差指定的分钟数 |
| | | * @param: |
| | | * @returns: |
| | | */ |
| | | isTimeOverFifty(time1, time2, minutes = 15) { |
| | | let t1 = dayjs(time1) |
| | | let t2 = dayjs(time2) |
| | | |
| | | } |
| | | let timeDifferce = Math.abs(t1.diff(t2, 'minute')) |
| | | if (timeDifferce <= minutes) { |
| | | return false |
| | | } |
| | | return true |
| | | }, |
| | | |
| | | /** |
| | | * 根据指定的分钟间隔,划分起始时间 |
| | | * @param:开始时间 结束时间 间隔分钟数 |
| | | * @returns: |
| | | */ |
| | | ascTime(beginTime, endTime, intervalMinute = 15) { |
| | | if (beginTime >= endTime) { |
| | | return [] |
| | | } |
| | | |
| | | let time = [] |
| | | time.push(beginTime) |
| | | let bt = dayjs(beginTime).add(intervalMinute, 'minute') |
| | | let et = dayjs(endTime) |
| | | |
| | | while (bt < et) { |
| | | time.push(bt.format('YYYY-MM-DD HH:mm:ss')) |
| | | bt = dayjs(bt).add(intervalMinute, 'minute') |
| | | } |
| | | return time |
| | | }, |
| | | |
| | | /** |
| | | * 返回flag不等于N的时间点和数据缺失的时间点 |
| | | * @param:扬尘数据,升序的时间字符串数组(接口中返回的已经是升序) |
| | | * @returns:升序的时间点 |
| | | */ |
| | | invalidTime(dustData, timeArr) { |
| | | // 参数为空则退出 |
| | | if (!dustData.length || !timeArr.length) { |
| | | return [] |
| | | } |
| | | |
| | | let time = [] |
| | | timeArr.forEach((item) => { |
| | | let r = lineChart.findDate(dustData, item) |
| | | // 没有找到对应时间的数据 |
| | | if (r == false) { |
| | | // 将该时间加入数组 |
| | | time.push(item) |
| | | } |
| | | |
| | | // 找到对应时间的数据,并且该数据标识不等与‘N’ |
| | | if (r && r.flag != 'N') { |
| | | // 将该数据的采集时间加入数组 |
| | | time.push(r.lst) |
| | | } |
| | | }) |
| | | |
| | | return time |
| | | }, |
| | | |
| | | /** |
| | | * 取指定间隔的时间为连续时间,放在数组中。 孤立的时间点与自身算一个连续 |
| | | * 目的是构造有效率缺失的颜色背景区间 |
| | | * @param:时间字符串数组 |
| | | * @returns:[ ['2023-11-02 00:00:00','2023-11-02 00:15:00','2023-11-02 00:30:00']] |
| | | */ |
| | | seriesTime(timeArr, intervalMinute = 15) { |
| | | let temp = [] |
| | | let temp_1 = [] |
| | | for (let i = 0; i < timeArr.length; i++) { |
| | | // 当前时间 |
| | | let currentTime = timeArr[i] |
| | | if (i === 0) { |
| | | temp_1.push(currentTime) |
| | | continue |
| | | } |
| | | // 前一个 |
| | | let pre = timeArr[i - 1] |
| | | |
| | | // 超过15分钟 |
| | | if (this.isTimeOverFifty(pre, currentTime, intervalMinute)) { |
| | | // 列表为连续时长为自身 |
| | | temp.push(temp_1) |
| | | temp_1 = [currentTime] |
| | | } |
| | | // 不超过15分钟 |
| | | else { |
| | | temp_1.push(currentTime) |
| | | } |
| | | } |
| | | |
| | | if (temp_1.length > 0) { |
| | | temp.push(temp_1) |
| | | } |
| | | |
| | | // 整理数据 |
| | | let temp_2 = [] |
| | | for (let i = 0; i < temp.length; i++) { |
| | | if (temp[i].length == 1) { |
| | | temp_2.push([temp[i][0], temp[i][0]]) |
| | | } else if (temp[i].length > 1) { |
| | | temp_2.push([temp[i][0], temp[i][temp[i].length - 1]]) |
| | | } |
| | | } |
| | | |
| | | return temp_2 |
| | | }, |
| | | |
| | | splitTime(timeArr) { |
| | | let result = [] |
| | | for (let i = 0; i < timeArr.length; i++) { |
| | | let temp = [] |
| | | for (let j = 0; j < timeArr[i].length; j++) { |
| | | temp.push(timeArr[i][j].slice(11, -3)) |
| | | } |
| | | result.push(temp) |
| | | } |
| | | return result |
| | | } |
| | | } |