<template>
  <moduleEnclosure title="趋势图">
    <template v-slot:rightce>
      <div class="classbtns">
        <div
          @click="cindex = 0"
          :class="{
            select: cindex === 0,
          }"
        >
          浏览量
        </div>
        <div
          @click="cindex = 1"
          :class="{
            select: cindex === 1,
          }"
        >
          访客量
        </div>
      </div>
    </template>
    <el-carousel
      height="100%"
      style="width: 100%; height: 100%"
      ref="elCarousel"
      :autoplay="false"
    >
      <el-carousel-item v-for="(item, index) in 2" :key="index">
        <div style="width: 100%; height: 100%">
          <div
            :id="`chartmain_${item}`"
            style="width: 100%; height: 100%"
          ></div>
        </div>
      </el-carousel-item>
    </el-carousel>
  </moduleEnclosure>
</template>

<script>
import moduleEnclosure from '@/components/moduleEnclosure.vue';
import * as echarts from 'echarts';
import { getQuery12 } from '@/api/bigView.js';
import { csize } from '@/utils/const.js';
let myChart, myChart2;
export default {
  components: {
    moduleEnclosure,
  },
  data() {
    return {
      cindex: -1,
      myChart: null,
      myChart2: null,
    };
  },
  mounted() {
    this.timeId = getQuery12((res) => {
      this.eac(res.data);
      this.init_myChart2(res.data);
    }, 70000);
    this.cindex = 0;
  },
  beforeUnmount() {
    this.timeId();
  },
  watch: {
    cindex(newVal, oldValue) {
      if (oldValue !== -1) {
        this.$refs.elCarousel.next();
      }
      if (this.timed) {
        clearTimeout(this.timed);
      }
      this.timed = setTimeout(() => {
        this.cindex = this.cindex ? 0 : 1;
      }, 30000);
    },
  },
  methods: {
    eac(value) {
      var times = value.map((item) => {
        var str1 = item.ddate.split(' ')[0];
        return str1.slice(5);
      });
      var data = value.map((item) => {
        return item.badapp;
      });
      var option = {
        tooltip: {
          trigger: 'axis',
          formatter: function (params) {
            var res = '' + params[1].name + ' : ' + params[1].value;
            return `<div style="color:#fff;">${res}</div>`;
          },
          transitionDuration: 0,
          backgroundColor: '#092a66',
          borderColor: '#0462b5',
          borderRadius: 8,
          borderWidth: 2,
          padding: [5, 10],
          axisPointer: {
            type: 'line',
            lineStyle: {
              type: 'dashed',
              color: '#8AB1DC',
            },
          },
        },
        title: {
          text: '',
          subtext: '',
        },
        grid: {
          x: csize(65),
          y: csize(40),
          x2: csize(30),
          y2: csize(30),
        },
        xAxis: {
          data: times,
          axisLabel: {
            interval: Math.floor(times.length / 15),
            showMinLabel: true, //是否显示最小 tick 的 label
            showMaxLabel: true, //是否显示最大 tick 的 label
            fontSize: csize(12),
          },
          axisTick: {
            show: false,
          },
          axisLine: {
            show: false,
            symbol: ['none', 'arrow'],
            symbolOffset: 12,
            lineStyle: {
              fontSize: csize(12),
              color: '#8AB1DC',
            },
          },
        },
        yAxis: [
          {
            type: 'value',
            name: '单位（单）',
            nameTextStyle: {
              fontSize: csize(16),
            },
            axisLine: {
              show: false,
              lineStyle: {
                color: '#8AB1DC',
              },
            },
            axisLabel: {
              margin: 10,
              textStyle: {
                fontSize: csize(12),
              },
            },
            splitLine: {
              lineStyle: {
                color: '#364D95',
              },
            },
            axisTick: {
              show: false,
            },
          },
        ],
        dataZoom: [
          {
            type: 'inside',
          },
        ],
        series: [
          {
            // For shadow
            type: 'bar',
            barWidth: 10,
            itemStyle: {
              color: 'rgba(0,0,0,0.05)',
            },
            barGap: '-100%',
            barCategoryGap: '40%',
            data: data,
            animation: false,
          },
          {
            type: 'bar',
            barWidth: 10,
            itemStyle: {
              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                { offset: 0, color: '#0efdff' },
                { offset: 0.5, color: '#188df0' },
                { offset: 1, color: '#188df0' },
              ]),
              barBorderRadius: 5,
            },
            emphasis: {
              itemStyle: {
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                  { offset: 0, color: '#2378f7' },
                  { offset: 0.7, color: '#2378f7' },
                  { offset: 1, color: '#0efdff' },
                ]),
                barBorderRadius: 5,
              },
            },
            data: data,
          },
        ],
      };
      if (myChart) {
        myChart.dispose();
      }
      myChart = new echarts.init(document.getElementById('chartmain_1'));
      myChart.setOption(option);
    },
    init_myChart2(value) {
      var times = value.map((item) => {
        var str1 = item.ddate.split(' ')[0];
        return str1.slice(5);
      });
      var data = value.map((item) => {
        return item.goodrate;
      });
      var data1 = value.map((item) => {
        return item.insrate;
      });
      var data2 = value.map((item) => {
        return item.reprate;
      });
      if (myChart2) {
        myChart2.dispose();
      }
      myChart2 = new echarts.init(document.getElementById('chartmain_2'));
      myChart2.setOption({
        tooltip: {
          trigger: 'axis',
          formatter: function (params) {
            var res = '';
            for (var i = 0, l = params.length; i < l; i++) {
              res +=
                '' + params[i].seriesName + ' : ' + params[i].value + '<br>';
            }
            return `<div style="color:#fff;">${res}</div>`;
          },
          transitionDuration: 0,
          backgroundColor: '#092a66',
          borderColor: '#0462b5',
          borderRadius: 8,
          borderWidth: 2,
          padding: [5, 10],
          axisPointer: {
            type: 'line',
            lineStyle: {
              type: 'dashed',
              color: '#8AB1DC',
            },
          },
        },
        legend: {
          icon: 'circle',
          itemWidth: 8,
          itemHeight: 8,
          itemGap: 10,
          top: '16',
          right: '10',
          data: ['好评率', '安装评价率', '维修评价率'],
          textStyle: {
            fontSize: csize(16),
            color: '#8AB1DC',
          },
        },
        grid: {
          x: csize(65),
          y: csize(50),
          x2: csize(30),
          y2: csize(30),
        },
        xAxis: [
          {
            type: 'category',
            boundaryGap: false,
            axisLabel: {
              interval: Math.floor(times.length / 15),
              showMinLabel: true, //是否显示最小 tick 的 label
              showMaxLabel: true, //是否显示最大 tick 的 label
              fontSize: csize(12),
            },
            axisLine: {
              show: false,
              lineStyle: {
                color: '#8AB1DC',
              },
            },
            axisTick: {
              show: false,
            },
            data: times,
          },
        ],
        yAxis: [
          {
            type: 'value',
            name: '单位（%）',
            nameTextStyle: {
              fontSize: csize(16),
            },
            axisLine: {
              show: false,
              lineStyle: {
                color: '#8AB1DC',
              },
            },
            axisLabel: {
              margin: 10,
              textStyle: {
                fontSize: csize(12),
              },
            },
            splitLine: {
              lineStyle: {
                color: '#364D95',
              },
            },
            axisTick: {
              show: false,
            },
          },
        ],
        series: [
          {
            name: '好评率',
            type: 'line',
            smooth: true,
            showSymbol: false,
            lineStyle: {
              normal: {
                width: 2,
              },
            },
            areaStyle: {
              normal: {
                color: new echarts.graphic.LinearGradient(
                  0,
                  0,
                  0,
                  1,
                  [
                    {
                      offset: 0,
                      color: 'rgba(137, 189, 27, 0.3)',
                    },
                    {
                      offset: 0.8,
                      color: 'rgba(137, 189, 27, 0)',
                    },
                  ],
                  false
                ),
                shadowColor: 'rgba(0, 0, 0, 0.1)',
                shadowBlur: 10,
              },
            },
            itemStyle: {
              normal: {
                color: '#F34799',
              },
            },
            data: data,
          },
          {
            name: '安装评价率',
            type: 'line',
            smooth: true,
            showSymbol: false,
            lineStyle: {
              normal: {
                width: 2,
              },
            },
            areaStyle: {
              normal: {
                color: new echarts.graphic.LinearGradient(
                  0,
                  0,
                  0,
                  1,
                  [
                    {
                      offset: 0,
                      color: 'rgba(137, 189, 27, 0.3)',
                    },
                    {
                      offset: 0.8,
                      color: 'rgba(137, 189, 27, 0)',
                    },
                  ],
                  false
                ),
                shadowColor: 'rgba(0, 0, 0, 0.1)',
                shadowBlur: 10,
              },
            },
            itemStyle: {
              normal: {
                color: '#1cc840',
              },
            },
            data: data1,
          },
          {
            name: '维修评价率',
            type: 'line',
            smooth: true,
            showSymbol: false,
            lineStyle: {
              normal: {
                width: 2,
              },
            },
            areaStyle: {
              normal: {
                color: new echarts.graphic.LinearGradient(
                  0,
                  0,
                  0,
                  1,
                  [
                    {
                      offset: 0,
                      color: 'rgba(0, 136, 212, 0.3)',
                    },
                    {
                      offset: 0.8,
                      color: 'rgba(0, 136, 212, 0)',
                    },
                  ],
                  false
                ),
                shadowColor: 'rgba(0, 0, 0, 0.1)',
                shadowBlur: 10,
              },
            },
            itemStyle: {
              normal: {
                color: '#43bbfb',
              },
            },
            data: data2,
          },
        ],
      });
    },
  },
};
</script>

<style scoped lang="scss">
.classbtns {
  width: 160px;
  height: 28px;
  display: flex;
  flex-direction: row;
  align-items: center;
  border: 2px solid #0e72e6;
  cursor: pointer;
  div {
    width: 50%;
    height: 100%;
    text-align: center;
    line-height: 28px;
  }
  div:nth-child(1) {
    border-right: 2px solid #0e72e6;
  }
  .select {
    background: #0e72e6;
    color: #bbd4ff;
  }
}
::v-deep .el-carousel__arrow,
::v-deep .el-carousel__indicators {
  display: none;
}
</style>
