riku
2023-12-21 c24a5a2a99515b365ebc343b04538bb862790de1
src/utils/chartFunction/lineChart.js
@@ -46,9 +46,10 @@
      if (tempData) {
        xData.push(tempData.lst)
        yAvg.push(tempData.dayAvg)
        yOnline.push(this.deleteLastStr(tempData.dayOnline))
        yValid.push(this.deleteLastStr(tempData.dayValid))
        yExceed.push(this.deleteLastStr(tempData.dayExceeding))
        yOnline.push(tempData.dayOnline)
        yValid.push(tempData.dayValid)
        yExceed.push(tempData.dayExceeding)
        continue
      }
@@ -78,47 +79,11 @@
  },
  /**
   * 返回无数据的时间段
   * @param:
   * @returns:
   */
  backNoDataInteval(dataBeginTime, dataEndTime) {
    const result = []
    // 数据开始时间
    const start = dayjs(dataBeginTime)
    // 数据结束时间
    const end = dayjs(dataEndTime)
    // 该月的1号
    const monthStart = start.startOf('month')
    // 该月最后一天
    const monthEnd = start.endOf('month')
    // 数据起始不等于月初 且 数据结束不等于月末
    if (!start.isSame(monthStart, 'day') && !end.isSame(monthEnd, 'day')) {
      result.push([monthStart.format('YYYY-MM-DD'), start.format('YYYY-MM-DD')])
      result.push([end.format('YYYY-MM-DD'), monthEnd.format('YYYY-MM-DD')])
    }
    // 数据起始等于月初 且 数据结束不等于月末
    if (start.isSame(monthStart, 'day') && !end.isSame(monthEnd, 'day')) {
      result.push([end.format('YYYY-MM-DD'), monthEnd.format('YYYY-MM-DD')])
    }
    // 数据起始不等于月初 且 数据结束等于月末
    if (!start.isSame(monthStart, 'day') && end.isSame(monthEnd, 'day')) {
      result.push([monthStart.format('YYYY-MM-DD'), start.format('YYYY-MM-DD')])
    }
    // 数据起始等于月初 且 数据结束等于月末  (这种情况没有空数据的时间间隔)
    return result
  },
  /**
   * 组成无数据区域
   * @param: 2维数组
   * @returns:
   */
  getMarkArea(timeInteval,describe='无数据') {
  getMarkArea(timeInteval, describe = '无数据') {
    let result = []
    for (let i = 0; i < timeInteval.length; i++) {
      let temp = []
@@ -163,5 +128,46 @@
   */
  deleteLastStr(valueStr) {
    return valueStr.slice(0, -1)
  },
  /**
   * 指定时间区间的线段变颜色
   * @param:
   * @returns:
   */
  getLineColor(timeInteval, xList) {
    let result = []
    // 只取
    let temp = []
    for (let i = 0; i < timeInteval.length; i++) {
      if (timeInteval[i][0] != timeInteval[i][1]) {
        temp.push(timeInteval[i])
      }
    }
    // 无连续的数据 直接退出
    if (temp.length == 0) {
      return []
    }
    // 取第一个连续的时段
    result.push([
      {
        lte: temp[0][0],
        color: 'green'
      },
      {
        gt: temp[0][0],
        lte: temp[0][1],
        color: 'red'
      },
      {
        gt: temp[0][1],
        lte: xList[xList.length - 1],
        color: 'green'
      }
    ])
    return result[0]
  }
}