Browse Source
			
			
			
			
				
		2.修改热水监控-实时监控流程图,屏蔽循环泵 3.修改仪表报警规则,修改弹框时候请求设备名称、采集点位 4.区域空间管理,针对新增、修改房间,添加设备名称、采集点位多选meizhou
				 11 changed files with 1056 additions and 47 deletions
			
			
		@ -0,0 +1,9 @@
					 | 
				
			||||
import request from "@/utils/request"; | 
				
			||||
 | 
				
			||||
export const compreReport = (data) => { | 
				
			||||
  return request({ | 
				
			||||
    url: "/compre/report", | 
				
			||||
    method: "post", | 
				
			||||
    data, | 
				
			||||
  }); | 
				
			||||
}; | 
				
			||||
| 
		 Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 24 KiB  | 
| 
		 Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.5 KiB  | 
@ -0,0 +1,777 @@
					 | 
				
			||||
<template> | 
				
			||||
  <div class="main-body"> | 
				
			||||
    <div class="irregular-border"> | 
				
			||||
      <div class="main-content"> | 
				
			||||
        <div class="condition"> | 
				
			||||
          <div class="condition-left"> | 
				
			||||
            <div class="time-label">时间类型:</div> | 
				
			||||
            <el-radio-group | 
				
			||||
              v-model="dateType" | 
				
			||||
              style="margin-right: 0.24rem" | 
				
			||||
              @change="updateDateType" | 
				
			||||
            > | 
				
			||||
              <el-radio label="hour">小时</el-radio> | 
				
			||||
              <el-radio label="day">日</el-radio> | 
				
			||||
              <el-radio label="month">月</el-radio> | 
				
			||||
              <el-radio label="year">年</el-radio> | 
				
			||||
            </el-radio-group> | 
				
			||||
            <el-date-picker | 
				
			||||
              v-model="timeDate" | 
				
			||||
              :default-time="['00:00:00', '23:59:59']" | 
				
			||||
              type="datetimerange" | 
				
			||||
              range-separator="至" | 
				
			||||
              v-if="dateType == 'hour'" | 
				
			||||
              placeholder="选择日期" | 
				
			||||
              start-placeholder="开始日期" | 
				
			||||
              end-placeholder="结束日期" | 
				
			||||
            > | 
				
			||||
            </el-date-picker> | 
				
			||||
            <el-date-picker | 
				
			||||
              v-model="dayDate" | 
				
			||||
              type="daterange" | 
				
			||||
              v-if="dateType == 'day'" | 
				
			||||
              :key="this.dateType" | 
				
			||||
              range-separator="至" | 
				
			||||
              value-format="yyyy-MM-dd" | 
				
			||||
              start-placeholder="开始日期" | 
				
			||||
              end-placeholder="结束日期" | 
				
			||||
              @change="dateChange" | 
				
			||||
            > | 
				
			||||
            </el-date-picker> | 
				
			||||
            <el-date-picker | 
				
			||||
              v-model="monthDate" | 
				
			||||
              type="monthrange" | 
				
			||||
              v-if="dateType == 'month'" | 
				
			||||
              :key="this.dateType" | 
				
			||||
              range-separator="至" | 
				
			||||
              start-placeholder="开始月份" | 
				
			||||
              end-placeholder="结束月份" | 
				
			||||
              value-format="yyyy-MM" | 
				
			||||
              @change="dateChange" | 
				
			||||
            > | 
				
			||||
            </el-date-picker> | 
				
			||||
            <div | 
				
			||||
              class="years-div" | 
				
			||||
              v-if="dateType == 'year'" | 
				
			||||
              :key="this.dateType" | 
				
			||||
            > | 
				
			||||
              <el-date-picker | 
				
			||||
                v-model="startYear" | 
				
			||||
                type="year" | 
				
			||||
                placeholder="选择开始年份" | 
				
			||||
                style="width: 180px" | 
				
			||||
                value-format="yyyy" | 
				
			||||
              > | 
				
			||||
              </el-date-picker> | 
				
			||||
              <div class="years-word">至</div> | 
				
			||||
              <el-date-picker | 
				
			||||
                v-model="endYear" | 
				
			||||
                type="year" | 
				
			||||
                placeholder="选择结束年份" | 
				
			||||
                style="width: 180px" | 
				
			||||
                value-format="yyyy" | 
				
			||||
              > | 
				
			||||
              </el-date-picker> | 
				
			||||
            </div> | 
				
			||||
            <div class="success-btn" style="margin-left: 0.24rem"> | 
				
			||||
              <el-button type="success" @click="findData">查询</el-button> | 
				
			||||
            </div> | 
				
			||||
            <div class="warning-btn"> | 
				
			||||
              <el-button type="warning" @click="goExport()">导出</el-button> | 
				
			||||
            </div> | 
				
			||||
          </div> | 
				
			||||
        </div> | 
				
			||||
        <div class="choice"> | 
				
			||||
          <div | 
				
			||||
            class="mr20" | 
				
			||||
            v-for="(item, index) in timeData2" | 
				
			||||
            :key="index" | 
				
			||||
            @click="handleEnter(index, $event)" | 
				
			||||
            :class="{ timeStyle: currentIndex == index }" | 
				
			||||
          > | 
				
			||||
            {{ item.title }} | 
				
			||||
          </div> | 
				
			||||
        </div> | 
				
			||||
        <div class="charts" ref="chart_ref"></div> | 
				
			||||
        <el-table :data="tableData" stripe> | 
				
			||||
          <el-table-column label="时间" align="center" prop="time" /> | 
				
			||||
          <el-table-column | 
				
			||||
            label="总用电量(kwh)" | 
				
			||||
            align="center" | 
				
			||||
            prop="electValue" | 
				
			||||
          /> | 
				
			||||
          <el-table-column | 
				
			||||
            label="总产冷量(kw)" | 
				
			||||
            align="center" | 
				
			||||
            prop="coldValue" | 
				
			||||
          /> | 
				
			||||
          <el-table-column | 
				
			||||
            label="总热水补水量(t)" | 
				
			||||
            align="center" | 
				
			||||
            prop="hotValue" | 
				
			||||
          /> | 
				
			||||
          <el-table-column | 
				
			||||
            label="总蒸汽流量(t)" | 
				
			||||
            align="center" | 
				
			||||
            prop="steamValue" | 
				
			||||
          /> | 
				
			||||
        </el-table> | 
				
			||||
 | 
				
			||||
        <pagination | 
				
			||||
          v-show="total > 0" | 
				
			||||
          :total="total" | 
				
			||||
          :page.sync="queryParams.pageNum" | 
				
			||||
          :limit.sync="queryParams.pageSize" | 
				
			||||
          @pagination="getTableData" | 
				
			||||
        /> | 
				
			||||
      </div> | 
				
			||||
    </div> | 
				
			||||
  </div> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
import { format2 } from "@/utils/datetime"; | 
				
			||||
import * as echarts from "echarts"; | 
				
			||||
import { compreReport } from "@/api/comprehensiveEnergy/systemEnergy"; | 
				
			||||
export default { | 
				
			||||
  data() { | 
				
			||||
    return { | 
				
			||||
      listLoading: false, | 
				
			||||
      dateType: "hour", //默认选择小时 | 
				
			||||
      timeDate: [], //小时值 | 
				
			||||
      dayDate: [], //日值 | 
				
			||||
      monthDate: [], //月值 | 
				
			||||
      startYear: "", //开始年份 | 
				
			||||
      endYear: "", //结束年份 | 
				
			||||
      startTime: "", //开始日期 | 
				
			||||
      endTime: "", //结束日期 | 
				
			||||
      // 总条数 | 
				
			||||
      total: 0, | 
				
			||||
      // 表格数据 | 
				
			||||
      tableData: [], | 
				
			||||
      exportData: [], | 
				
			||||
      // 查询参数 | 
				
			||||
      queryParams: { | 
				
			||||
        pageNum: 1, | 
				
			||||
        pageSize: 10, | 
				
			||||
        startTime: "", | 
				
			||||
        endTime: "", | 
				
			||||
      }, | 
				
			||||
      brokenInstanc: null, | 
				
			||||
      brokenOption: {}, | 
				
			||||
      timeData2: [ | 
				
			||||
        { title: "总用电量" }, | 
				
			||||
        { title: "总产冷量" }, | 
				
			||||
        { title: "总热水补水量" }, | 
				
			||||
        { title: "总蒸汽流量" }, | 
				
			||||
      ], | 
				
			||||
      currentIndex: 0, | 
				
			||||
      brokenData1: [], | 
				
			||||
      brokenData2: [], | 
				
			||||
      brokenData3: [], | 
				
			||||
      brokenData4: [], | 
				
			||||
      brokenTime: [], | 
				
			||||
      useWater: 0, | 
				
			||||
      useWaterRadio: 0, | 
				
			||||
      useElect: 0, | 
				
			||||
      useElectRadio: 0, | 
				
			||||
      useUnit: 0, | 
				
			||||
      useUnitRadio: 0, | 
				
			||||
    }; | 
				
			||||
  }, | 
				
			||||
  mounted() { | 
				
			||||
    this.initializeTimeDate(); | 
				
			||||
    this.getTableData(); | 
				
			||||
    this.initChart(); | 
				
			||||
    window.addEventListener("resize", this.screenAdapter); | 
				
			||||
    this.screenAdapter(); | 
				
			||||
  }, | 
				
			||||
  destroyed() { | 
				
			||||
    //取消监听器 | 
				
			||||
    window.removeEventListener("resize", this.screenAdapter); | 
				
			||||
  }, | 
				
			||||
  methods: { | 
				
			||||
    // 初始化时间 | 
				
			||||
    initializeTimeDate() { | 
				
			||||
      const start = new Date(new Date().setHours(0, 0, 0, 0)); | 
				
			||||
      const end = new Date(new Date().setHours(23, 59, 59, 59)); | 
				
			||||
      this.timeDate = [format2(start), format2(end)]; // 更新 | 
				
			||||
      this.titleDate = format2(start) + "至" + format2(end); | 
				
			||||
    }, | 
				
			||||
 | 
				
			||||
    // 选择时间类型 | 
				
			||||
    updateDateType() { | 
				
			||||
      // this.dateType = this.radio; | 
				
			||||
      console.log(this.dateType); | 
				
			||||
      (this.timeDate = []), //小时值 | 
				
			||||
        (this.dayDate = []), //日值 | 
				
			||||
        (this.monthDate = []), //月值 | 
				
			||||
        (this.startYear = ""), //开始年份 | 
				
			||||
        (this.endYear = ""); //结束年份 | 
				
			||||
    }, | 
				
			||||
    // 选中日期事件 | 
				
			||||
    dateChange() { | 
				
			||||
      // console.log("打印时间", this.timeform.time1); | 
				
			||||
      if (!this.dayDate) { | 
				
			||||
        this.$nextTick(() => { | 
				
			||||
          this.dayDate = []; | 
				
			||||
        }); | 
				
			||||
      } | 
				
			||||
      if (!this.monthDate) { | 
				
			||||
        this.$nextTick(() => { | 
				
			||||
          this.monthDate = []; | 
				
			||||
        }); | 
				
			||||
      } | 
				
			||||
    }, | 
				
			||||
    // 查询 | 
				
			||||
    findData() { | 
				
			||||
      console.log("this.dateType", this.dateType); | 
				
			||||
      console.log("this.timeDate", this.timeDate); | 
				
			||||
      switch (this.dateType) { | 
				
			||||
        case "hour": | 
				
			||||
          if (!this.timeDate) { | 
				
			||||
            this.showMessage("请选择时间!", "warning"); | 
				
			||||
          } else { | 
				
			||||
            this.titleDate = | 
				
			||||
              format2(this.timeDate[0]) + "至" + format2(this.timeDate[1]); | 
				
			||||
            this.getTableData(); | 
				
			||||
          } | 
				
			||||
          break; | 
				
			||||
        case "day": | 
				
			||||
          if (this.dayDate.length === 0) { | 
				
			||||
            this.showMessage("请选择时间!", "warning"); | 
				
			||||
          } else { | 
				
			||||
            const newLength = | 
				
			||||
              new Date(this.dayDate[1]).getTime() - | 
				
			||||
              new Date(this.dayDate[0]).getTime(); | 
				
			||||
            const dayDiff = Math.floor(newLength / (1000 * 60 * 60 * 24)); | 
				
			||||
            if (dayDiff > 31) { | 
				
			||||
              this.showMessage( | 
				
			||||
                "最多只能选择30天区间,请重新选择再查询!", | 
				
			||||
                "warning" | 
				
			||||
              ); | 
				
			||||
            } else { | 
				
			||||
              this.titleDate = this.dayDate[0] + "至" + this.dayDate[1]; | 
				
			||||
              this.getTableData(); | 
				
			||||
            } | 
				
			||||
          } | 
				
			||||
          break; | 
				
			||||
        case "month": | 
				
			||||
          if (this.monthDate.length === 0) { | 
				
			||||
            this.showMessage("请选择时间!", "warning"); | 
				
			||||
          } else { | 
				
			||||
            const [start, end] = this.monthDate; | 
				
			||||
            const startDate = new Date(start); | 
				
			||||
            const endDate = new Date(end); | 
				
			||||
            const startYear = startDate.getFullYear(); | 
				
			||||
            const startMonth = startDate.getMonth(); | 
				
			||||
            const endYear = endDate.getFullYear(); | 
				
			||||
            const endMonth = endDate.getMonth(); | 
				
			||||
            const monthDiff = | 
				
			||||
              (endYear - startYear) * 12 + (endMonth - startMonth); | 
				
			||||
            if (monthDiff > 12) { | 
				
			||||
              this.showMessage( | 
				
			||||
                "最多只能选择12个月区间,请重新选择再查询!", | 
				
			||||
                "warning" | 
				
			||||
              ); | 
				
			||||
            } else { | 
				
			||||
              this.titleDate = this.monthDate[0] + "至" + this.monthDate[1]; | 
				
			||||
              this.getTableData(); | 
				
			||||
            } | 
				
			||||
          } | 
				
			||||
          break; | 
				
			||||
        case "year": | 
				
			||||
          if (!this.startYear || !this.endYear) { | 
				
			||||
            this.showMessage("请选择全年份区间!", "warning"); | 
				
			||||
          } else if (this.startYear > this.endYear) { | 
				
			||||
            this.showMessage("结束年份要大于开始年份!", "warning"); | 
				
			||||
          } else { | 
				
			||||
            this.titleDate = this.startYear + "至" + this.endYear; | 
				
			||||
            this.getTableData(); | 
				
			||||
          } | 
				
			||||
          break; | 
				
			||||
        default: | 
				
			||||
          break; | 
				
			||||
      } | 
				
			||||
    }, | 
				
			||||
    // 显示消息的函数 | 
				
			||||
    showMessage(message, type) { | 
				
			||||
      this.$message({ | 
				
			||||
        message: message, | 
				
			||||
        type: type, | 
				
			||||
      }); | 
				
			||||
    }, | 
				
			||||
    handleEnter(index) { | 
				
			||||
      this.currentIndex = index; | 
				
			||||
      this.renderingBroken(); | 
				
			||||
    }, | 
				
			||||
    //请求数据 | 
				
			||||
    getTableData() { | 
				
			||||
      if (this.dateType == "hour") { | 
				
			||||
        this.startTime = format2(this.timeDate[0]); | 
				
			||||
        this.endTime = format2(this.timeDate[1]); | 
				
			||||
      } else if (this.dateType == "day") { | 
				
			||||
        this.startTime = this.dayDate.length > 0 ? this.dayDate[0] : ""; | 
				
			||||
        this.endTime = this.dayDate.length > 0 ? this.dayDate[1] : ""; | 
				
			||||
      } else if (this.dateType == "month") { | 
				
			||||
        this.startTime = this.monthDate.length > 0 ? this.monthDate[0] : ""; | 
				
			||||
        this.endTime = this.monthDate.length > 0 ? this.monthDate[1] : ""; | 
				
			||||
      } else if (this.dateType == "year") { | 
				
			||||
        (this.startTime = this.startYear), (this.endTime = this.endYear); | 
				
			||||
      } | 
				
			||||
      let data = { | 
				
			||||
        timeType: this.dateType, | 
				
			||||
        startTime: this.startTime, | 
				
			||||
        endTime: this.endTime, | 
				
			||||
        pageNum: this.queryParams.pageNum, | 
				
			||||
        pageSize: this.queryParams.pageSize, | 
				
			||||
      }; | 
				
			||||
      console.log("查询数据参数", data); | 
				
			||||
      this.listLoading = true; | 
				
			||||
 | 
				
			||||
      compreReport(data).then((res) => { | 
				
			||||
        console.log("表格返回的数据", res); | 
				
			||||
        if (res.code == 200 && res.rows.length > 0) { | 
				
			||||
          this.tableData = res.rows; | 
				
			||||
          this.total = res.total; | 
				
			||||
        } else { | 
				
			||||
          this.tableData = []; | 
				
			||||
          this.total = 0; | 
				
			||||
        } | 
				
			||||
        this.getChartData(); | 
				
			||||
      }); | 
				
			||||
      // Just to simulate the time of the request | 
				
			||||
      setTimeout(() => { | 
				
			||||
        this.listLoading = false; | 
				
			||||
      }, 1.0 * 1000); | 
				
			||||
    }, | 
				
			||||
    //请求折线图数据 | 
				
			||||
    getChartData() { | 
				
			||||
      if ((this.total == 10)) { | 
				
			||||
        // 防止数据提交重复 | 
				
			||||
        console.log("不用请求"); | 
				
			||||
        this.brokenData1 = []; | 
				
			||||
        this.brokenData2 = []; | 
				
			||||
        this.brokenData3 = []; | 
				
			||||
        this.brokenData4 = []; | 
				
			||||
        this.brokenTime = []; | 
				
			||||
        if (this.tableData.length > 0) { | 
				
			||||
          this.exportData = this.tableData; | 
				
			||||
          this.tableData.forEach((item) => { | 
				
			||||
            this.brokenData1.push(item.electValue); | 
				
			||||
            this.brokenData2.push(item.coldValue); | 
				
			||||
            this.brokenData3.push(item.hotValue); | 
				
			||||
            this.brokenData4.push(item.steamValue); | 
				
			||||
            this.brokenTime.push(item.time); | 
				
			||||
          }); | 
				
			||||
          this.renderingBroken(); | 
				
			||||
        } else { | 
				
			||||
          this.brokenData1 = []; | 
				
			||||
          this.brokenData2 = []; | 
				
			||||
          this.brokenData3 = []; | 
				
			||||
          this.brokenData4 = []; | 
				
			||||
          this.brokenTime = []; | 
				
			||||
        } | 
				
			||||
        this.renderingBroken(); | 
				
			||||
      } else { | 
				
			||||
        console.log("图表参数", this.queryParams); | 
				
			||||
        if (this.dateType == "hour") { | 
				
			||||
          this.startTime = format2(this.timeDate[0]); | 
				
			||||
          this.endTime = format2(this.timeDate[1]); | 
				
			||||
        } else if (this.dateType == "day") { | 
				
			||||
          this.startTime = this.dayDate.length > 0 ? this.dayDate[0] : ""; | 
				
			||||
          this.endTime = this.dayDate.length > 0 ? this.dayDate[1] : ""; | 
				
			||||
        } else if (this.dateType == "month") { | 
				
			||||
          this.startTime = this.monthDate.length > 0 ? this.monthDate[0] : ""; | 
				
			||||
          this.endTime = this.monthDate.length > 0 ? this.monthDate[1] : ""; | 
				
			||||
        } else if (this.dateType == "year") { | 
				
			||||
          (this.startTime = this.startYear), (this.endTime = this.endYear); | 
				
			||||
        } | 
				
			||||
        let data = { | 
				
			||||
          timeType: this.dateType, | 
				
			||||
          startTime: this.startTime, | 
				
			||||
          endTime: this.endTime, | 
				
			||||
          pageNum: this.queryParams.pageNum, | 
				
			||||
          pageSize: this.total, | 
				
			||||
        }; | 
				
			||||
        compreReport(data).then((res) => { | 
				
			||||
          console.log("图表返回的数据", res); | 
				
			||||
          this.brokenData1 = []; | 
				
			||||
          this.brokenData2 = []; | 
				
			||||
          this.brokenData3 = []; | 
				
			||||
          this.brokenData4 = []; | 
				
			||||
          this.brokenTime = []; | 
				
			||||
          if (res.code == 200 && res.rows.length > 0) { | 
				
			||||
            this.exportData = res.rows; | 
				
			||||
            res.rows.forEach((item) => { | 
				
			||||
              this.brokenData1.push(item.electValue); | 
				
			||||
              this.brokenData2.push(item.coldValue); | 
				
			||||
              this.brokenData3.push(item.hotValue); | 
				
			||||
              this.brokenData4.push(item.steamValue); | 
				
			||||
              this.brokenTime.push(item.time); | 
				
			||||
            }); | 
				
			||||
            this.renderingBroken(); | 
				
			||||
          } else { | 
				
			||||
            this.brokenData1 = []; | 
				
			||||
            this.brokenData2 = []; | 
				
			||||
            this.brokenData3 = []; | 
				
			||||
            this.brokenData4 = []; | 
				
			||||
            this.brokenTime = []; | 
				
			||||
          } | 
				
			||||
          this.renderingBroken(); | 
				
			||||
        }); | 
				
			||||
      } | 
				
			||||
    }, | 
				
			||||
    renderingBroken() { | 
				
			||||
      if (this.currentIndex === 0) { | 
				
			||||
        this.brokenOption.yAxis.name = "kwh"; | 
				
			||||
        this.brokenOption.yAxis.nameTextStyle = { | 
				
			||||
          color: "rgba(255, 255, 255, 1)", | 
				
			||||
          fontSize: 12, | 
				
			||||
        }; | 
				
			||||
        this.brokenOption.series[0].data = this.brokenData1; | 
				
			||||
        this.brokenOption.series[0].itemStyle.color = "#d48e17"; | 
				
			||||
        this.brokenOption.series[0].areaStyle.color.colorStops = [ | 
				
			||||
          { | 
				
			||||
            offset: 0, | 
				
			||||
            color: "rgba(212, 142, 23, 0.3)", // 0% 处的颜色 | 
				
			||||
          }, | 
				
			||||
          { | 
				
			||||
            offset: 0.8, | 
				
			||||
            color: "rgba(212, 142, 23,0)", // 100% 处的颜色 | 
				
			||||
          }, | 
				
			||||
        ]; | 
				
			||||
      } else if (this.currentIndex === 1) { | 
				
			||||
        this.brokenOption.yAxis.name = "kw"; | 
				
			||||
        this.brokenOption.yAxis.nameTextStyle = { | 
				
			||||
          color: "rgba(255, 255, 255, 1)", | 
				
			||||
          fontSize: 12, | 
				
			||||
        }; | 
				
			||||
        this.brokenOption.series[0].data = this.brokenData2; | 
				
			||||
        this.brokenOption.series[0].itemStyle.color = "#1ab395"; | 
				
			||||
        this.brokenOption.series[0].areaStyle.color.colorStops = [ | 
				
			||||
          { | 
				
			||||
            offset: 0, | 
				
			||||
            color: "rgba(26, 179, 149, 0.3)", // 0% 处的颜色 | 
				
			||||
          }, | 
				
			||||
          { | 
				
			||||
            offset: 0.8, | 
				
			||||
            color: "rgba(26, 179, 149,0)", // 100% 处的颜色 | 
				
			||||
          }, | 
				
			||||
        ]; | 
				
			||||
      } else if (this.currentIndex === 2) { | 
				
			||||
        this.brokenOption.yAxis.name = "t"; | 
				
			||||
        this.brokenOption.yAxis.nameTextStyle = { | 
				
			||||
          color: "rgba(255, 255, 255, 1)", | 
				
			||||
          fontSize: 12, | 
				
			||||
        }; | 
				
			||||
        this.brokenOption.series[0].data = this.brokenData3; | 
				
			||||
        this.brokenOption.series[0].itemStyle.color = "#1f8dee"; | 
				
			||||
        this.brokenOption.series[0].areaStyle.color.colorStops = [ | 
				
			||||
          { | 
				
			||||
            offset: 0, | 
				
			||||
            color: "rgba(31, 141, 238, 0.3)", // 0% 处的颜色 | 
				
			||||
          }, | 
				
			||||
          { | 
				
			||||
            offset: 0.8, | 
				
			||||
            color: "rgba(31, 141, 238,0)", // 100% 处的颜色 | 
				
			||||
          }, | 
				
			||||
        ]; | 
				
			||||
      } else if (this.currentIndex === 3) { | 
				
			||||
        this.brokenOption.yAxis.name = "t"; | 
				
			||||
        this.brokenOption.yAxis.nameTextStyle = { | 
				
			||||
          color: "rgba(255, 255, 255, 1)", | 
				
			||||
          fontSize: 12, | 
				
			||||
        }; | 
				
			||||
        this.brokenOption.series[0].data = this.brokenData4; | 
				
			||||
        this.brokenOption.series[0].itemStyle.color = "#f1f524"; | 
				
			||||
        this.brokenOption.series[0].areaStyle.color.colorStops = [ | 
				
			||||
          { | 
				
			||||
            offset: 0, | 
				
			||||
            color: "rgba(241, 245, 36, 0.3)", // 0% 处的颜色 | 
				
			||||
          }, | 
				
			||||
          { | 
				
			||||
            offset: 0.8, | 
				
			||||
            color: "rgba(241, 245, 36,0)", // 100% 处的颜色 | 
				
			||||
          }, | 
				
			||||
        ]; | 
				
			||||
      } | 
				
			||||
      // 保存当前索引用于闭包 | 
				
			||||
      const currentIndex = this.currentIndex; | 
				
			||||
      // 动态设置 tooltip 格式化函数 | 
				
			||||
      this.brokenOption.tooltip = { | 
				
			||||
        trigger: "axis", | 
				
			||||
        formatter: function (params) { | 
				
			||||
          // 获取当前数据点信息 | 
				
			||||
          const data = params[0]; | 
				
			||||
          const month = data.name; | 
				
			||||
          const value = data.value; | 
				
			||||
 | 
				
			||||
          // 根据索引返回不同内容 | 
				
			||||
          if (currentIndex === 0) { | 
				
			||||
            return `${month}<br/>总用电量: ${value} 度`; | 
				
			||||
          } else if (currentIndex === 1) { | 
				
			||||
            return `${month}<br/>总产冷量: ${value} 千瓦`; | 
				
			||||
          } else if (currentIndex === 2) { | 
				
			||||
            return `${month}<br/>总热水补水量: ${value} 吨`; | 
				
			||||
          } else if (currentIndex === 3) { | 
				
			||||
            return `${month}<br/>总蒸汽量: ${value} 吨`; | 
				
			||||
          } | 
				
			||||
        }, | 
				
			||||
      }; | 
				
			||||
      this.brokenOption.xAxis.data = this.brokenTime; | 
				
			||||
      this.brokenInstanc.setOption(this.brokenOption); | 
				
			||||
    }, | 
				
			||||
    // 导出 | 
				
			||||
    goExport() { | 
				
			||||
      if (this.exportData) { | 
				
			||||
        import("@/assets/excel/Export2Excel").then((excel) => { | 
				
			||||
          // 导出的excel表头字段名,需要导出表格字段名 | 
				
			||||
          var tHeader = [ | 
				
			||||
            "时间", | 
				
			||||
            "总用电量(kwh)", | 
				
			||||
            "总产冷量(kw)", | 
				
			||||
            "总热水补水量(t)", | 
				
			||||
            "总蒸汽流量(t)", | 
				
			||||
          ]; // 导出的excel表头名信息 改参数 | 
				
			||||
          var filterVal = [ | 
				
			||||
            "time", | 
				
			||||
            "electValue", | 
				
			||||
            "coldValue", | 
				
			||||
            "hotValue", | 
				
			||||
            "steamValue", | 
				
			||||
          ]; | 
				
			||||
          const data = this.formatJson(filterVal, this.exportData); | 
				
			||||
          const autoWidth = true; | 
				
			||||
          excel.export_json_to_excel({ | 
				
			||||
            header: tHeader, //表头 | 
				
			||||
            data, //数据 | 
				
			||||
            filename: "系统能耗报表", //名称 | 
				
			||||
            autoWidth: true, //宽度自适应 | 
				
			||||
          }); | 
				
			||||
        }); | 
				
			||||
        this.$message({ | 
				
			||||
          type: "success", | 
				
			||||
          message: "导出成功!", | 
				
			||||
        }); | 
				
			||||
      } else { | 
				
			||||
        this.$message.error("导出失败!"); | 
				
			||||
      } | 
				
			||||
    }, | 
				
			||||
    //格式转换,不需要改动 | 
				
			||||
    formatJson(filterVal, jsonData) { | 
				
			||||
      return jsonData.map((v) => | 
				
			||||
        filterVal.map((j) => { | 
				
			||||
          if (j === "perWater") { | 
				
			||||
            return (v[j] * 1000).toFixed(1); | 
				
			||||
          } else { | 
				
			||||
            return v[j]; | 
				
			||||
          } | 
				
			||||
        }) | 
				
			||||
      ); | 
				
			||||
    }, | 
				
			||||
    // 折线图自适应+ 根据按钮切换图例仅限一条且不可点击+ 折线图数据 | 
				
			||||
    screenAdapter() { | 
				
			||||
      //自己定义的比较合适的适配大小,2.6  mes_ref是图表盒子 | 
				
			||||
      const titleFontSize = this.$refs.chart_ref.offsetWidth / 130; | 
				
			||||
      //因为option可以多次配置的,所以这里的option只需要写 需要配置大小的相关数据 | 
				
			||||
      const adapterOption = {}; | 
				
			||||
      //记得重新给配置项给实例对象。只要实例对象.chartInstance不变,option就可以多次配置不同的条件。也可以配置一个dataoption只写需要从后台请求的数据相关 | 
				
			||||
      this.brokenInstanc.setOption(adapterOption); | 
				
			||||
      //手动的调用图标对象的resize才能产生效果 | 
				
			||||
      this.brokenInstanc.resize(); | 
				
			||||
    }, | 
				
			||||
    //初始化chartInstance对象 | 
				
			||||
    initChart() { | 
				
			||||
      this.brokenInstanc = echarts.init(this.$refs.chart_ref); | 
				
			||||
      this.brokenOption = { | 
				
			||||
        tooltip: { | 
				
			||||
          trigger: "axis", | 
				
			||||
        }, | 
				
			||||
        legend: { | 
				
			||||
          show: false, | 
				
			||||
          selectedMode: false, // 是否允许图例进行点击 | 
				
			||||
          icon: "cricle", //图例样式,可以自行查看样式选择 | 
				
			||||
          //图例文字颜色 | 
				
			||||
          textStyle: { | 
				
			||||
            color: "#ffff", | 
				
			||||
            fontSize: 16, //这里改字体大小 | 
				
			||||
          }, | 
				
			||||
          // left: "73%", | 
				
			||||
          left: "66%", | 
				
			||||
          top: "0", | 
				
			||||
          //图例距离饼图的距离 | 
				
			||||
          itemGap: 5, | 
				
			||||
          itemWidth: 10, | 
				
			||||
          itemHeight: 5, | 
				
			||||
        }, | 
				
			||||
 | 
				
			||||
        grid: { | 
				
			||||
          top: "10%", | 
				
			||||
          left: "3%", | 
				
			||||
          right: "4%", | 
				
			||||
          bottom: "5%", | 
				
			||||
          containLabel: true, | 
				
			||||
        }, | 
				
			||||
        xAxis: { | 
				
			||||
          type: "category", | 
				
			||||
          //设置为true代表离零刻度间隔一段距离 | 
				
			||||
          boundaryGap: true, | 
				
			||||
          // 修饰刻度标签的颜色即x坐标数据 | 
				
			||||
          axisLabel: { | 
				
			||||
            // interval: 0, //强制显示所有x轴数据 | 
				
			||||
            // rotate: 30, //x轴坐标字体倾斜30度 | 
				
			||||
            color: "rgba(255, 255, 255, 1)", | 
				
			||||
            fontSize: 14, // 设置字体大小,可根据需要调整 | 
				
			||||
          }, | 
				
			||||
          axisTick: { | 
				
			||||
            show: false, // 不显示坐标轴刻度线 | 
				
			||||
          }, | 
				
			||||
          // x坐标轴的颜色 | 
				
			||||
          axisLine: { | 
				
			||||
            show: true, | 
				
			||||
            lineStyle: { | 
				
			||||
              color: "#365576", | 
				
			||||
            }, | 
				
			||||
          }, | 
				
			||||
          splitLine: { | 
				
			||||
            lineStyle: { | 
				
			||||
              color: "#e2e6f0", | 
				
			||||
            }, | 
				
			||||
          }, //x轴分割线 | 
				
			||||
          data: this.brokenTime, | 
				
			||||
        }, | 
				
			||||
        yAxis: { | 
				
			||||
          min: 0, | 
				
			||||
          // max:20, | 
				
			||||
          // // // min:'dataMin', | 
				
			||||
          // // // max:'dataMax', | 
				
			||||
          // name: "kwh", // 第一个 y 轴的单位描述 | 
				
			||||
          // 设置 name 的样式 | 
				
			||||
          nameTextStyle: { | 
				
			||||
            color: "rgba(255, 255, 255, 1)", | 
				
			||||
            fontSize: 12, | 
				
			||||
          }, | 
				
			||||
          miniInterval: 5, | 
				
			||||
          type: "value", | 
				
			||||
          // 修饰刻度标签的颜色即y坐标数据 | 
				
			||||
          axisLabel: { | 
				
			||||
            color: "rgba(255, 255, 255, 1)", | 
				
			||||
          }, | 
				
			||||
          // 显示y坐标轴 | 
				
			||||
          axisLine: { | 
				
			||||
            show: true, | 
				
			||||
            lineStyle: { | 
				
			||||
              color: "#365576", // 设置 y 轴线的颜色 | 
				
			||||
            }, | 
				
			||||
            fontSize: 14, // 设置字体大小,可根据需要调整 | 
				
			||||
          }, | 
				
			||||
          //y轴分割线段数 | 
				
			||||
          // splitNumber: 10, | 
				
			||||
          // 修改y轴分割线的颜色 | 
				
			||||
          splitLine: { | 
				
			||||
            lineStyle: { | 
				
			||||
              color: "#1a3d62", // 设置分割线的颜色 | 
				
			||||
              type: "dashed", // 设置分割线为虚线 | 
				
			||||
            }, | 
				
			||||
          }, | 
				
			||||
        }, | 
				
			||||
        series: [ | 
				
			||||
          { | 
				
			||||
            type: "line", | 
				
			||||
            // 拐点大小 | 
				
			||||
            symbolSize: 8, | 
				
			||||
            smooth: true, | 
				
			||||
            showSymbol: false, | 
				
			||||
            data: this.brokenData1, | 
				
			||||
            //折线颜色 | 
				
			||||
            itemStyle: { | 
				
			||||
              color: "#d48e17", //折线点的颜色 | 
				
			||||
              lineStyle: { | 
				
			||||
                color: "#d48e17", //折线的颜色 | 
				
			||||
              }, | 
				
			||||
            }, | 
				
			||||
            areaStyle: { | 
				
			||||
              color: { | 
				
			||||
                //线性渐变 | 
				
			||||
                type: "linear", | 
				
			||||
                x: 0, | 
				
			||||
                y: 0, | 
				
			||||
                x2: 0, | 
				
			||||
                y2: 1, | 
				
			||||
                colorStops: [], | 
				
			||||
              }, | 
				
			||||
            }, | 
				
			||||
          }, | 
				
			||||
        ], | 
				
			||||
      }; | 
				
			||||
      //把配置项给实例对象 | 
				
			||||
      this.brokenInstanc.setOption(this.brokenOption, true); | 
				
			||||
    }, | 
				
			||||
  }, | 
				
			||||
}; | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style lang="scss" scoped> | 
				
			||||
.condition-left { | 
				
			||||
  display: flex; | 
				
			||||
  flex-direction: row; | 
				
			||||
  align-items: center; | 
				
			||||
  flex-wrap: wrap; | 
				
			||||
 | 
				
			||||
  .years-div { | 
				
			||||
    display: flex; | 
				
			||||
    flex-direction: row; | 
				
			||||
    align-items: center; | 
				
			||||
 | 
				
			||||
    .years-word { | 
				
			||||
      font-size: 14px; | 
				
			||||
      margin: 0 5px; | 
				
			||||
      color: #388ff3; | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  .time-label { | 
				
			||||
    font-size: 16px; | 
				
			||||
    line-height: 7px; | 
				
			||||
    margin-right: 12px; | 
				
			||||
    white-space: nowrap; | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.main-content { | 
				
			||||
  min-height: 6.6rem; | 
				
			||||
} | 
				
			||||
.choice { | 
				
			||||
  margin: 20px 0; | 
				
			||||
  .mr20 { | 
				
			||||
    padding: 0.05rem 0.2rem; | 
				
			||||
    white-space: nowrap; | 
				
			||||
    width: auto; | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.charts { | 
				
			||||
  width: 100%; | 
				
			||||
  height: 300px; | 
				
			||||
  margin-bottom: 0.1rem; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
// 媒体查询,适配大于2000px分辨率的大屏样式 | 
				
			||||
@media (min-width: 2000px) { | 
				
			||||
  .condition { | 
				
			||||
    .condition-left { | 
				
			||||
      .years-div { | 
				
			||||
        .years-word { | 
				
			||||
          font-size: 0.14rem !important; | 
				
			||||
          margin: 0 0.05rem !important; | 
				
			||||
        } | 
				
			||||
      } | 
				
			||||
 | 
				
			||||
      .time-label { | 
				
			||||
        font-size: 0.16rem !important; | 
				
			||||
        line-height: 0.07rem !important; | 
				
			||||
        margin-right: 0.12rem !important; | 
				
			||||
      } | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
</style> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue