/* eslint-disable vue/valid-template-root */
<template>
  <div class="app-container">
    <div class="filter-container">
      <div class="block">
        <el-date-picker v-model="yearDate" :clearable="false" type="year" placeholder="选择年" />
      </div>
    </div>

    <el-row v-if="isBarChart1" style="position: relative;">
      <p style="position: absolute;top:-12px;left:40%;color:rgb(130, 165, 252);background:rgb(230, 243, 255);border:1px solid rgb(130, 165, 252);padding:10px;border-radius:10px">
        {{ year }}年集团用电量:{{ total }}万度
      </p>
      <el-col :span="24">
        <div id="barChart1" style="width: 100%;height:400px;" />
      </el-col>
    </el-row>

    <!-- 年度维修成本 -->
    <el-row>
      <el-col :span="12">
        <div id="lineChart1" style="width: 100%;height:400px;" />
      </el-col>
      <el-col :span="12">
        <div id="lineChart2" style="width: 100%;height:400px;" />
      </el-col>
    </el-row>

    <el-row>
      <el-col :span="12">
        <div id="pieChart1" style="width: 100%;height:400px;" />
      </el-col>
      <el-col :span="12">
        <div id="barChart2" style="width: 100%;height:400px;" />
      </el-col>
    </el-row>

  </div>

</template>

<script>
import echarts from 'echarts'

require('echarts/theme/macarons') // echarts theme

// eslint-disable-next-line no-unused-vars
import waves from '@/directive/waves' // waves directive
import Pagination from '@/components/Pagination' // secondary package based on el-pagination
import { GetDataByName, GetDataByNames, GetReportform, checkButtons } from '@/api/common'
import { parseTime } from '@/utils/index.js'

import Cookies from 'js-cookie'
export default {
  name: 'QueryElec',
  directives: { waves },
  components: { Pagination },
  data() {
    return {
      yearDate: new Date(),

      pasture: Cookies.get('pasturename'),
      year: new Date().getFullYear(),
      month: new Date().getMonth() < 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1,
      deptment: '维修处',
      total: '',
      getBarChart1Parm: {
        name: 'getpSumNowElec',
        parammaps: {
          receiveTime: new Date().getFullYear(),
          center:'',
          pastureName: Cookies.get('pasturename')
        }
      },
      getLineChart1Parm: {
        name: 'getPastureSumMonthElec',
        parammaps: {
          receiveTime: new Date().getFullYear(),
          pastureName: Cookies.get('pasturename')
        }
      },
      getLineChart2Parm: {
        name: 'getPastureSumDayElec',
        parammaps: {
          receiveTime: new Date().getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1),
          pastureName: Cookies.get('pasturename')
        }
      },
      getPieChart1Parm: {
        name: 'getdeptSumMonthElec',
        parammaps: {
          receiveTime: new Date().getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1),
          pastureName: Cookies.get('pasturename')
        }
      },
      getBarChart2Parm: {
        name: 'geteqclassSumMonthElec',
        parammaps: {
          receiveTime: new Date().getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1),
          pastureName: Cookies.get('pasturename'),
          deptName: ''
        }
      },
      barChart1: null,
      lineChart1: null,
      lineChart2: null,
      pieChart1: null,
      barChart2: null,

      chart_data1: {
        // pasture: ['宝鸡', '恒盛', '塞一', '塞二', '塞三', '塞四', '塞五', '通山', '合肥', '和林'],
        // nowYear: [123, 332, 222, 333, 444, 333, 222, 334, 234, 223],
        // lastYear: [22, 44, 77, 88, 444, 234, 342, 234, 234, 66]
      },
      chart_data2: {
        // months: ['2019-01', '2019-02', '2019-01', '2019-01', '2019-01', '2019-01', '2019-01', '2019-01', '2019-01', '2019-01'],
        // nowYear: [123, 332, 222, 333, 444, 333, 222, 334, 234, 223],
        // lastYear: [22, 44, 77, 88, 444, 234, 342, 234, 234, 66]
      },
      chart_data3: {
        // day: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
        // nowYear: [123, 332, 222, 333, 444, 333, 222, 334, 234, 223],
        // lastYear: [22, 44, 77, 88, 444, 234, 342, 234, 234, 66]
      },
      chart_data4: {
        // name: ['饲养处', '其他部门', '设备处', '能源处', '牧场办公室'],
        // psum: [
        //   { value: 335, name: '饲养处' },
        //   { value: 310, name: '其他部门' },
        //   { value: 234, name: '设备处' },
        //   { value: 135, name: '能源处' },
        //   { value: 1548, name: '牧场办公室' }
        // ]
      },
      chart_data5: {
        // typeName: ['小型装载机', '叉车', '拖拉机', '抛料机', '搅拌机'],
        // eqCost: [123, 332, 222, 333, 444],
        // lastYear: [22, 342, 234, 234, 66]
      },

      tableKey: 0,
      list: null,
      total: 0,
      listLoading: true,
      rowStyle: { maxHeight: 50 + 'px', height: 45 + 'px' },
      cellStyle: { padding: 0 + 'px' },

      dialogFormVisibleCard: false,
      listLoadingSee: true,
      rowSeeData: {},
      listSee: [],
      totalSee: 0,
      getdataListParmSee: {
        name: 'geteqclassSumDay',
        page: 1,
        offset: 1,
        pagecount: 10,
        returntype: 'Map',
        parammaps: {
          receiveTime: new Date().getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1),
          pastureName: Cookies.get('pasturename'),
          deptName: '',
          typeName: '',
          assetCode: '',
          eqName: '',
          startTime: '',
          stopTime: '',
          pastureId: Cookies.get('pastureid')
        }
      },
      buttons: [],
      isBarChart1: []

    }
  },

  watch: {
    'yearDate': {
      deep: true,
      handler: function(newVal, oldVal) {
        var time = this.yearDate
        console.log(newVal.getFullYear())
        this.year = time.getFullYear()
        this.getBarChart1Parm.parammaps.receiveTime = time.getFullYear()
        this.getLineChart1Parm.parammaps.receiveTime = time.getFullYear()
        this.getLineChart2Parm.parammaps.receiveTime = time.getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1)
        this.getPieChart1Parm.parammaps.receiveTime = time.getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1)
        this.getBarChart2Parm.parammaps.receiveTime = time.getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1)

        this.getBarChart1()
        this.getLineChart1()
        this.getLineChart2()
        this.getPieChart1()
      }
    }
  },

  created() {
    this.getBarChart1()
    this.getLineChart1()
    this.getLineChart2()
    this.getPieChart1()
    const that = this
    GetDataByName({ 'name': 'getUserPCButtons', 'parammaps': { 'jwt_username': Cookies.get('name') }}).then(response => {
      that.buttons = response.data.list
      that.get_auto_buttons()
    })
  },
  mounted() {
    // this.roadBarChart1(this.chart_data1)
    // this.roadlineChart1(this.chart_data2, this.pasture, this.year)
    // this.roadlineChart2(this.chart_data3, this.pasture, this.month)
    //  this.roadpieChart1(this.chart_data4, this.month)
    // this.roadBarChart2(this.chart_data5, this.deptment)
  },
  methods: {
    get_auto_buttons() {
      // 图1
      const BarChart1 = 'report:queryElec:pastures'
      const isBarChart1 = checkButtons(this.$store.state.user.buttons, BarChart1)
      this.isBarChart1 = isBarChart1
    },
    // 各牧场年度维修成本对比
    getBarChart1() {
      GetReportform(this.getBarChart1Parm).then(response => {
        console.log('图1', response)
        let pasture =  response.data.chart_data.pasture
        let keys = []
        pasture.forEach((item,key)=>{
          if(item.includes("公司")){
            keys.push(key)
          }
        })
        let lastYear = response.data.chart_data.lastYear
        let new_pasture =  pasture.splice(keys[0],keys.length)
        let new_lastYear =  lastYear.splice(keys[0],keys.length)
        let NowYear = response.data.chart_data.nowYear
        let new_NowYear =  NowYear.splice(keys[0],keys.length)
        this.chart_data1.pasture = pasture
        this.chart_data1.lastYear = lastYear
        this.chart_data1.nowYear = NowYear
        // this.chart_data1 = response.data.chart_data
        this.roadBarChart1(this.chart_data1)
        var nowYear = response.data.chart_data.nowYear
        var total = 0
        if (nowYear !== null || nowYear !== undefined) {
          nowYear.forEach(function(item, index) {
            console.log(parseFloat(item))
            total = total + parseFloat(item)
          })
        }
        this.total = total.toFixed(4)
      })
    },
    getLineChart1() {
      GetReportform(this.getLineChart1Parm).then(response => {
        console.log('图2', response)
        this.chart_data2 = response.data.chart_data
        this.roadlineChart1(this.chart_data2, this.pasture, this.year)
      })
    },
    getLineChart2() {
      GetReportform(this.getLineChart2Parm).then(response => {
        console.log('图3', response)
        this.chart_data3 = response.data.chart_data
        this.roadlineChart2(this.chart_data3, this.pasture, this.month)
      })
    },
    getPieChart1() {
      GetDataByName(this.getPieChart1Parm).then(response => {
        console.log('图4', response)
        if (response.data === null || response.data.list === null) {
          this.chart_data4 = { name: [], psum: [] }
          this.roadpieChart1(this.chart_data4, this.month)
        } else {
          this.chart_data4.psum = response.data.list
          var name = []
          console.log(response.data.list)
          response.data.list.forEach(function(i) {
            name.push(i.name)
          })
          console.log(this.chart_data4)
          this.chart_data4.name = name
          this.roadpieChart1(this.chart_data4, this.month)
          this.deptment = name[0]
          this.getdataListParmSee.parammaps.deptName = name[0]
          this.getBarChart2Parm.parammaps.deptName = name[0]
          this.getBarChart2()
        }
      })
    },
    getBarChart2() {
      GetReportform(this.getBarChart2Parm).then(response => {
        console.log('图5', response)
        this.chart_data5 = response.data.chart_data
        this.roadBarChart2(this.chart_data5, this.deptment)
      })
    },

    // 各牧场年度维修成本对比
    roadBarChart1(chart_data1) {
      if (this.barChart1 != null) {
        this.barChart1.dispose()
      }
      this.barChart1 = echarts.init(document.getElementById('barChart1'))
      var option = {
        title: { text: '各牧场年度用电量对比', textStyle: { color: '#769cfc' }},
        tooltip: { trigger: 'axis' },
        legend: {
          data: ['今年用量', '去年同期'],
          right: 40
        },
        color: ['#2dc0e8', '#769cfc', '#FFB800'],
        grid: { left: '3%', right: '4%', bottom: '4%', containLabel: true },
        xAxis: [{ type: 'category', data: chart_data1.pasture, axisLabel: { interval: 0, rotate: 30 }}],
        yAxis: [{ type: 'value', name: '电量(度)', axisLabel: { formatter: '{value}万' }}],
        series: [
          {
            name: '今年用量',
            type: 'bar',
            data: chart_data1.nowYear,
            emphasis: { label: { show: true, position: 'inside' }}
          },
          {
            name: '去年同期',
            type: 'bar',
            data: chart_data1.lastYear,
            emphasis: { label: { show: true, position: 'inside' }}
          }

        ]
      }
      this.barChart1.setOption(option)
      window.onresize = function() {
        this.barChart1.resize()
      }
      var that = this
      this.barChart1.on('click', function(param, i) {
        console.log(param)
        that.pasture = param.name
        that.getLineChart1Parm.parammaps.pastureName = param.name
        that.getLineChart2Parm.parammaps.pastureName = param.name
        that.getPieChart1Parm.parammaps.pastureName = param.name
        that.getBarChart2Parm.parammaps.pastureName = param.name

        that.getLineChart1()
        that.getLineChart2()
        that.getPieChart1()
      })
    },
    // 每月维修成本对比
    roadlineChart1(chart_data2, pasture, year) {
      if (this.lineChart1 != null) {
        this.lineChart1.dispose()
      }
      this.lineChart1 = echarts.init(document.getElementById('lineChart1'))
      var option = {
        title: { text: pasture + year + '每月用电量对比', textStyle: { color: '#769cfc' }},
        tooltip: { trigger: 'axis' },
        legend: {
          data: ['今年用量', '去年同期用量'],
          x: 'right'
        },
        color: [ '#769cfc', '#FFB800'],
        grid: { left: '3%', right: '5%', bottom: '4%', containLabel: true },
        xAxis: [{ type: 'category', data: chart_data2.months, name: '月份', axisLabel: { interval: 0, rotate: 30 }}],
        yAxis: [{ type: 'value', name: '电量(度)', axisLabel: { formatter: '{value}万' }}],
        series: [
          {
            name: '今年用量',
            type: 'line',
            data: chart_data2.nowYear,
            emphasis: { label: { show: true, position: 'inside' }}
          },
          {
            name: '去年同期用量',
            type: 'line',
            data: chart_data2.lastYear,
            emphasis: { label: { show: true, position: 'inside' }}
          }

        ]
      }
      this.lineChart1.setOption(option)
      window.onresize = function() {
        this.lineChart1.resize()
      }
      var that = this
      this.lineChart1.on('click', function(param, i) {
        console.log(param)

        that.getLineChart2Parm.parammaps.receiveTime = param.name
        that.getPieChart1Parm.parammaps.receiveTime = param.name
        that.getBarChart2Parm.parammaps.receiveTime = param.name

        var num = param.name.substring(5)
        console.log(num)
        that.month = num
        that.getLineChart2()
        that.getPieChart1()
      })
    },

    // 每月维修成本对比
    roadlineChart2(chart_data3, pasture, month) {
      if (this.lineChart2 != null) {
        this.lineChart2.dispose()
      }
      this.lineChart2 = echarts.init(document.getElementById('lineChart2'))
      var option = {
        title: { text: pasture + month + '月每日用电量对比', textStyle: { color: '#769cfc' }},
        tooltip: { trigger: 'axis' },
        legend: {
          data: ['今年日用量', '去年同期'],
          x: 'right'
        },
        color: [ '#769cfc', '#FFB800'],
        grid: { left: '3%', right: '5%', bottom: '4%', containLabel: true },
        xAxis: [{ type: 'category', data: chart_data3.day, name: '日期', axisLabel: { interval: 0 }}],
        yAxis: [{ type: 'value', name: '电量(度)', axisLabel: { formatter: '{value}' }}],
        series: [
          {
            name: '今年日用量',
            type: 'line',
            data: chart_data3.nowYear,
            emphasis: { label: { show: true, position: 'inside' }}
          },
          {
            name: '去年同期',
            type: 'line',
            data: chart_data3.lastYear,
            emphasis: { label: { show: true, position: 'inside' }}
          }

        ]
      }
      this.lineChart2.setOption(option)
      window.onresize = function() {
        this.lineChart2.resize()
      }
      this.lineChart2.on('click', function(param, i) {
        console.log(param)
      })
    },
    // 部门统计
    roadpieChart1(chart_data4, month) {
      if (this.pieChart1 != null) {
        this.pieChart1.dispose()
      }
      this.pieChart1 = echarts.init(document.getElementById('pieChart1'))
      var option = {
        title: { text: month + '月部门统计', textStyle: { color: '#769cfc' }},
        tooltip: {
          trigger: 'item',
          formatter: '{a} <br/>{b} : {c} ({d}%)'
        },
        legend: {
          data: chart_data4.name, top: 40, x: 'right'
        },
        color: ['#769cfc', '#FFB800'],
        grid: { left: '3%', right: '5%', bottom: '4%', containLabel: true },
        series: [
          {
            name: '',
            type: 'pie',
            radius: '55%',
            center: ['50%', '60%'],
            data: chart_data4.psum,
            emphasis: {
              itemStyle: {
                shadowBlur: 10,
                shadowOffsetX: 0,
                shadowColor: 'rgba(0, 0, 0, 0.5)'
              }
            }
          }

        ]
      }
      this.pieChart1.setOption(option)
      window.onresize = function() {
        this.pieChart1.resize()
      }
      var that = this
      this.pieChart1.on('click', function(param, i) {
        console.log(param)
        that.deptment = param.name
        that.getBarChart2Parm.parammaps.deptName = param.name
        that.getBarChart2()
      })
    },
    // 维修成本
    roadBarChart2(chart_data5, deptment) {
      if (this.barChart2 != null) {
        this.barChart2.dispose()
      }
      this.barChart2 = echarts.init(document.getElementById('barChart2'))
      var option = {
        title: { text: deptment + '用电量', textStyle: { color: '#769cfc' }},
        tooltip: { trigger: 'axis' },
        legend: {
          data: ['用电量'],
          x: 'right'
        },
        color: [ '#769cfc', '#FFB800'],
        grid: { left: '3%', right: '10%', bottom: '4%', containLabel: true },
        xAxis: [{ type: 'category', data: chart_data5.typeName, name: '电表名称', axisLabel: { interval: 0 }}],
        yAxis: [{ type: 'value', name: '电量(度)', axisLabel: { formatter: '{value}万' }}],
        series: [
          {
            name: '用电量',
            type: 'bar',
            barWidth: 14,
            data: chart_data5.eqCost,
            emphasis: { label: { show: true, position: 'inside' }}
          }

        ]
      }
      this.barChart2.setOption(option)
      window.onresize = function() {
        this.barChart2.resize()
      }
    }

  }
}
</script>
<style>
.el-row {
    margin-bottom: 40px;
    &:last-child {
      margin-bottom: 0;
    }
  }
</style>

<style lang="scss" scoped>

.dashboard-editor-container {
  padding: 20px;
  background-color: rgb(240, 242, 245);
  position: relative;

  .github-corner {
    position: absolute;
    top: 0px;
    border: 0;
    right: 0;
  }

  .chart-wrapper {
    background: #fff;
    padding: 16px 16px 0;
  }
}

@media (max-width:1024px) {
  .chart-wrapper {
    padding: 8px;
  }
}
</style>