<!--
 * @Author: your name
 * @Date: 2022-04-19 14:38:28
 * @LastEditTime: 2022-05-05 11:36:25
 * @LastEditors: Please set LastEditors
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: /gassafety-progress/gassafetyprogress-web/src/views/statistic/overview/conponents/Left/CharBoxA.vue
-->
<template>
  <div class="chars-box all-flex-h">
    <div class="title">隐患/事故排名</div>
    <div class="btn-wrapper">
      <div
        v-for="(item, index) in btnArr"
        :key="item"
        class="left"
        :class="{ active: btnV == index }"
        @click="btnClick(index)"
      >
        {{ item }}
      </div>
    </div>
    <div class="num-wrapper" v-if="false">
      <div class="left">
        <span class="text">隐患总数</span><span class="num">12</span>件
      </div>
      <div class="right">
        <span class="text">已整改</span><span class="num">10</span>件
      </div>
    </div>

    <div class="chars">
      <Chars :options="options" />
    </div>
  </div>
</template>

<script>
import Chars from "@/components/allCharsCom/Chars";
import {selectHiddenRanking} from "@/api/standingBook/hidden"
import {selectTrobleRanking} from "@/api/standingBook/trouble"
export default {
  name: "",
  components: {
    Chars,
  },
  data() {
    return {
      btnArr: ["隐患处置", "事故数量"],
      btnV: 0,
      options: null,
      // charData: [50, 40, 20, 40, 10, 10, 30, 10, 30, 50],
      // xData:['营里乡', '下槐镇', '宅北乡', '合河口乡', '蛟潭庄镇', '孟家庄镇', '苏家庄乡', '东王坡乡', '上观音堂乡', '杨家桥乡'],
      arr: [
      ],
      countList1:[],
      countList2:[]
    };
  },
  computed: {},
  mounted() {
    this.getcount();
  },
  computed: {
    charsArr() {
      return (this.arr = this.arr.sort((a, b) => {
        return b.value - a.value;
      }));
    },
  },
  methods: {
    getcount(){
      selectHiddenRanking().then(response => {
        this.countList1 = response.data;
        this.arr = response.data;
        this.bottomOptions();
        this.getcount2();
      });
    },
    getcount2(){
      selectTrobleRanking().then(response => {
        this.countList2 = response.data;
    });
    },
    btnClick(index) {
      if (this.btnV == index) return;
      this.btnV = index;
      if (index === 0) {
        this.arr =this.countList1;
      } else {
        this.arr = this.countList2;
      }
      this.bottomOptions();
    },

    bottomOptions() {
      const colors = ["#1890FF"];
      this.options = {
        color: colors,
        tooltip: {
          // trigger: "axis",
          // axisPointer: {
          //   type: "cross",
          // },
          formatter: "{b}: {c}(个)",
        },
        grid: {
          top: "30",
          left: "3%",
          right: "10%",
          bottom: "3%",
          containLabel: true,
        },
        toolbox: {},
        legend: {
          // data: ['Evaporation', 'Temperature'],
          // left: 'right'
          show: false,
        },
        xAxis: [
          {
            type: "category",
            axisTick: {
              alignWithLabel: true,
            },
            axisLabel: {
              show: true, // 是否显示刻度标签，默认显示
              interval: 0, // 坐标轴刻度标签的显示间隔，在类目轴中有效；默认会采用标签不重叠的策略间隔显示标签；可以设置成0强制显示所有标签；如果设置为1，表示『隔一个标签显示一个标签』，如果值为2，表示隔两个标签显示一个标签，以此类推。
              rotate: 30, // 刻度标签旋转的角度，在类目轴的类目标签显示不下的时候可以通过旋转防止标签之间重叠；旋转的角度从-90度到90度
              inside: false, // 刻度标签是否朝内，默认朝外
              margin: 6, // 刻度标签与轴线之间的距离
              // formatter: "{value} Day", // 刻度标签的内容格式器
              // textStyle: {
              color: "#333",
              // },
            },
            max:"dataMax",
            // prettier-ignore
            data: this.charsArr.map(item=>item.name),
          },
        ],
        yAxis: [
          {
            type: "value",
            name: "单位 (件)",
            position: "left",
            alignTicks: true,
            axisLine: {
              show: true,
            },
            splitLine: {
              lineStyle: {
                type: "dashed", //虚线
              },
              show: true, //隐藏
            },
            nameTextStyle: {
              color: "#333",
            },
            axisLabel: {
              formatter: "{value}",
              // textStyle: {
              color: "#333",
              // },
            },
            min: 0,
            max: "dataMax"
          },
        ],
        series: [
          {
            name: "Evaporation",
            type: "bar",
            data: this.charsArr.map((item) => item.value),
            yAxisIndex: 0,
            itemStyle: {
              color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
                { offset: 0, color: colors[0] },
                { offset: 1, color: "#ffffff" },
              ]),
            },
            barWidth: 10,
            barGap: "0%",
          },
        ],
      };
    },
  },
};
</script>
<style lang="scss" scoped>
.chars-box {
  width: 100%;
  height: 100%;
  position: relative;
  .title {
    font-size: 16px;
    margin: 22px 0 11px 19px;
    font-weight: 600;
  }
  .btn-wrapper {
    display: flex;
    font-size: 12px;
    justify-content: flex-end;
    margin-right: 34px;
    margin-bottom: 12px;
    > div {
      border-radius: 3px 3px 3px 3px;
      border: 1px solid #c5c5c5;
      padding: 3px 6px;
      cursor: pointer;
      margin-left: 3px;
      &.active {
        background-color: #1a91ff;
        color: #fff;
        border: 1px solid #1a91ff;
      }
      &:hover {
        background: #1a91ffcc;
        color: #fff;
        border: 1px solid #3291ebcc;
      }
    }
  }
  // .num-wrapper {
  //   position: absolute;
  //   display: flex;
  //   top: 100px;
  //   right: 50px;
  //   > div {
  //     font-size: 12px;
  //     margin-left: 19px;
  //     display: inline-block;
  //     position: relative;
  //     .text {
  //       margin-right: 10px;
  //     }
  //     .num {
  //       margin-right: 2px;
  //     }
  //     &.left {
  //       &::before {
  //         content: "";
  //         position: absolute;
  //         width: 6px;
  //         height: 6px;
  //         background-color: #1a91ff;
  //         border-radius: 50%;
  //         left: -10px;
  //         top: 50%;
  //         margin-top: -3px;
  //       }
  //       &::after {
  //       }
  //       .num {
  //         color: #1a91ff;
  //       }
  //     }
  //     &.right {
  //        &::before {
  //         content: "";
  //         position: absolute;
  //         width: 6px;
  //         height: 6px;
  //         background-color: #ffcb44;
  //         border-radius: 50%;
  //         left: -10px;
  //         top: 50%;
  //         margin-top: -3px;
  //       }
  //       .num {
  //         color: #ffcb44;
  //       }
  //     }
  //   }
  // }
  .chars {
    flex: 1;
    // background-color: red;
  }
}
</style>
