<template>
  <div class="demand">
    <triangle>
      <slot>
        <div class="common-title">
          <img
            class="icon-title"
            src="@/assets/images/screen/boardsDemand.png"
            alt=""
          />
          <span class="title">{{ title }}</span>
          <img class="bg" src="@/assets/images/screen/title02_bg.png" alt="" />
        </div>
        <div id="barDemand" @click="echartsClick"></div>
      </slot>
    </triangle>
  </div>
</template>

<script>
import triangle from "../components/slot/triangle";
export default {
  name: "demand",
  data() {
    return {
      title: "互动频次",
      echartsDiv: "",
    };
  },
  components: { triangle },
  props: {
    data: {
      type: Object,
      default: () => {
        return {};
      },
    },
  },
  mounted() {},
  methods: {
    init() {
      let option = {
        tooltip: {
          trigger: "axis",
        },
        grid: {
          top: 40,
          left: 30,
          right: 40,
          bottom: "15%",
          containLabel: true,
        },
        // dataZoom: [{
        //   type: "slider",
        //   show: true,
        //   bottom: '20',
        //   start: 0,
        //   end: 100,
        //   height: 18,
        //   handleStyle: {
        //     color: "#d3dee5",
        //   },
        //   textStyle: {
        //     color: "#fff",
        //     fontSize: "10px"
        //   },
        // }
        // ],
        xAxis: {
          type: "category",
          boundaryGap: true, //坐标轴两边留白
          data: this.data.xAxisData,
          axisLabel: {
            //坐标轴刻度标签的相关设置。
            interval: 0,
            textStyle: {
              color: "#FFFFFF",
              fontStyle: "normal",
              fontFamily: "微软雅黑",
              fontSize: 14,
            },
            formatter: function (value, index) {
              if (value.length > 4) {
                return value.slice(0, 4) + "...";
              } else {
                return value;
              }
            },
          },
          axisTick: {
            //坐标轴刻度相关设置。
            show: false,
          },
          axisLine: {
            //坐标轴轴线相关设置
            lineStyle: {
              color: "rgba(98,186,255,0.6)",
              type: "solid",
            },
          },
          splitLine: {
            //坐标轴在 grid 区域中的分隔线。
            show: false,
          },
        },
        yAxis: [
          {
            type: "value",
            name: "单位/次",
            splitNumber: 5,
            nameTextStyle: {
              color: "#fff",
            },
            axisLabel: {
              textStyle: {
                color: "#FFFFFFFF",
                fontStyle: "normal",
                fontFamily: "微软雅黑",
                fontSize: 12,
              },
              interval: "auto",
            },
            axisLine: {
              show: false,
            },
            axisTick: {
              show: false,
            },
            splitLine: {
              show: true,
              lineStyle: {
                color: "rgba(98,186,255,0.6)",
                type: "dashed",
              },
            },
          },
        ],
        series: [
          {
            type: "bar",
            barWidth: 16, // 柱子宽度
            itemStyle: {
              barBorderRadius: 120, // 圆角(左上、右上、右下、左下)
            },

            color: new this.$echarts.graphic.LinearGradient(
              0,
              0,
              0,
              1,
              ["rgba(78,255,253,1)", "rgba(255,74,83,1)"].map(
                (color, offset) => ({
                  color,
                  offset,
                })
              )
            ), // 渐变
            data: this.data.yAxisData,
          },
        ],
      };
      this.echartsDiv = this.$echarts.init(
        document.getElementById("barDemand")
      );
      this.echartsDiv.setOption(option);
    },
    // 点击事件
    echartsClick() {
      this.$emit("itemClick", { type: 1, title: this.title });
    },
  },
  watch: {
    data() {
      if (this.echartsDiv) {
        this.echartsDiv.clear();
      }
       this.init();
    },
  },
};
</script>

<style lang=scss>
#barDemand {
  width: 100%;
  height: calc(100% - 0.6rem);
  margin-top: 0.6rem;
}
</style>