<template>
  <el-card shadow="always" class="common-card-container common-card-container-body-no-padding time-range-card">
    <div slot="header" class="time-range-header">
      <span class="card-title">当日功率曲线</span>
      <date-range-select ref="dateRangeSelect" :showIcon="true" :mini-time-picker="true" @updateDate="updateDate"/>
    </div>
    <div style="height: 310px" id="activeChart"></div>
  </el-card>
</template>

<script>
import * as echarts from 'echarts'
import resize from '@/mixins/ems/resize'
import DateRangeSelect from '@/components/Ems/DateRangeSelect/index.vue'
import {getPointData} from '@/api/ems/dzjk'
import intervalUpdate from "@/mixins/ems/intervalUpdate";

export default {
  mixins: [resize, intervalUpdate],
  components: {DateRangeSelect},
  data() {
    return {
      chart: null,
      timeRange: [],
      siteId: '',
      isInit: true
    }
  },
  mounted() {
    this.$nextTick(() => {
      this.initChart()
    })
  },
  beforeDestroy() {
    if (!this.chart) {
      return
    }
    this.chart.dispose()
    this.chart = null
  },
  methods: {
    // 更新时间范围 重置图表
    updateDate(data) {
      this.timeRange = data
      !this.isInit && this.getGVQXData()
      this.isInit = false
    },
    getGVQXData() {
      this.showLoading()
      const {siteId, timeRange} = this
      getPointData({siteId, startDate: timeRange[0], endDate: timeRange[1]}).then(response => {
        this.setOption(response?.data || [])
      }).finally(() => this.hideLoading())
    },
    init(siteId) {
      //初始化 清空数据
      this.siteId = siteId
      this.isInit = true
      this.timeRange = []
      this.$refs.dateRangeSelect.init(true)
      this.getGVQXData()
      this.updateInterval(this.getGVQXData)
    },
    initChart() {
      this.chart = echarts.init(document.querySelector('#activeChart'))
    },
    showLoading() {
      this.chart && this.chart.showLoading()
    },
    hideLoading() {
      this.chart && this.chart.hideLoading()
    },
    setOption(data) {
      const source = [['日期', '电网功率', '负载功率', '储能功率', '光伏功率', 'soc平均值', 'soh平均值', '电池平均温度平均值']]
      console.log('source.slice(1)', source[0].slice(1))
      this.chart && data.forEach((item) => {
        source.push([item.statisDate, item.gridPower, item.loadPower, item.storagePower, item.pvPower, item.avgSoc, item.avgSoh, item.avgTemp])
      })
      this.chart.setOption({
        grid: {
          containLabel: true
        },
        legend: {
          left: 'center',
          bottom: '15',
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: { // 坐标轴指示器，坐标轴触发有效
            type: 'shadow' // 默认为直线，可选为：'line' | 'shadow'
          }
        },
        textStyle: {
          color: "#333333",
        },
        xAxis: {
          type: 'category',
        },
        yAxis: [
          {
            type: 'value',
          },
          {
            type: 'value',
          },
        ],
        dataset: {source},
        series: source[0].slice(1).map((item, index) => {
          return {
            type: 'line',//index === 5 ? 'bar' : 'line',
            showSymbol: false,
            symbolSize: 2,
            smooth: true,
            areaStyle: {
              opacity: 0.5,
            },
            yAxisIndex: index <= 4 ? 0 : 1
          }
        })
      })
    },

  }
}

</script>

