<!--
 * @Author: your name
 * @Date: 2021-10-14 10:48:56
 * @LastEditTime: 2021-11-09 13:16:07
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: /data-show/src/views/WeiboDetails/weiboCharacters/index.vue
-->
<template>
  <div class="wc-outter" v-loading="load">
    <v-label-div title="内容分布">
      <div>
        <v-tab-group
          v-if="form.ilimitType == 1 || form.ilimitType == 2"
          :btns="['认证', '精华', '图文']"
          @change="handlerTab"
        ></v-tab-group>
      </div>
    </v-label-div>
    <div class="wc-inner">
      <div class="d1">
        <v-echarts :opt="opt"></v-echarts>
      </div>
      <div class="d2">
        <div v-if="labelArr.length<=3">
          <v-label-ctx
            v-for="(item, index) in labelArr"
            :key="index"
            :label="item.Key"
            :cont="item.Value"
            :percentage="((item.Value / total) * 100).toFixed(2) + '%'"
            :color="colors[index]"
            :eStyle="{ height: '8.54rem' }"
          ></v-label-ctx>
        </div>
        <vue-scroll v-if="labelArr.length>3">
          <v-label-ctx
            v-for="(item, index) in labelArr"
            :key="index"
            :label="item.Key"
            :cont="item.Value"
            :percentage="((item.Value / total) * 100).toFixed(2) + '%'"
            :color="colors[index]"
            :eStyle="{ height: '5.14rem' }"
          ></v-label-ctx>
        </vue-scroll>
      </div>
    </div>
  </div>
</template>

<script>
import {getUserAttestationGroupBy, getIsjingGroupBy, getPicboolGroupBy} from "@/api/KeyMediaTheme/index.js";
import createOpt from "./opt";
export default {
  name: "weiboCharacters",
  data() {
    return {
      load: false,
      form: {
        token: "",
        sSource: '',
        sGuid: '',
        ilimitType: 0,
      },
      RegionWeiBo: [],
      attestation: [],
      sex: [],
      total: 0,
      labelArr: [],

      opt: createOpt(),
      colors: [
        "#54BF93",
        "#3373CC",
        "#CC9D12",
        "#f15c80",
        "#e4d354",
        "#8085e8",
        "#8d4653",
        "#91e8e1",
        "#f7a35c",
        "#90ed7d",
        "#54BF93",
        "#3373CC",
        "#CC9D12",
        "#f15c80",
        "#e4d354",
        "#8085e8",
        "#8d4653",
        "#91e8e1",
        "#f7a35c",
        "#90ed7d",
      ],
    };
  },
  created() {
        this.form.token = this.getToken;
        this.form.sGuid = this.$route.query.sGuid;
        this.form.sSource = this.$route.query.source || "抖音";
        if(this.form.sSource == '汽车之家') {
        this.form.ilimitType = 1;
        } else if (this.form.sSource == '懂车帝' && this.getCarCircle == 1) {
        this.form.ilimitType = 2;
        }
        this.getData();
  },
  methods: {
    // 获取后台数据
    getData() {
      let obj = Object.assign({}, this.getCtime2, this.form);
      // this.load = true;
      getUserAttestationGroupBy(obj).then((res) => {
        let data = res.data || {};
        this.doVal(data)
        this.load = false;
      });
    },
    // 将对象变成数组
    toArr(obj) {
      let arr = [];
      for (let key in obj) {
        let o = {
          key: key,
          value: obj[key],
        };
        arr.push(o);
      }
      return arr;
    },
    // 给页面变化值赋值
    doVal(arr = []) {
      let total = 0;
      arr.forEach((ele) => {
        total += ele.Value * 1;
      });
      this.total = total;
      this.labelArr = arr;
      this.opt = createOpt(this.labelArr, this.colors);
    },
    // 切换数据
    handlerTab(n) {
      switch (n) {
        case 0:
          getUserAttestationGroupBy(Object.assign({}, this.getCtime2, this.form)).then((res) => {
            let data = res.data || {};
            this.doVal(data)
            this.load = false;
          });
        case 1:
           getIsjingGroupBy(Object.assign({}, this.getCtime2, this.form)).then((res) => {
              let data = res.data || {};
              this.doVal(data)
              this.load = false;
            });
          break;
        case 2:
          getPicboolGroupBy(Object.assign({}, this.getCtime2, this.form)).then((res) => {
            let data = res.data || {};
            this.doVal(data)
            this.load = false;
          });
      }
    },
  },
};
</script>

<style lang="less" scoped>
.wc-outter {
  width: 618px;
  height: 460px;
  border: 2px solid #0f2a4d;
  margin-left: 16px;
  overflow: hidden;
  .wc-inner {
    width: 100%;
    height: calc(100% - 48px);
    display: flex;
    justify-content: flex-start;
    .d1 {
      width: 280px;
      height: 100%;
    }
    .d2 {
      width: 300px;
      margin-left: 16px;
    }
  }
}
</style>

