<template>
  <div>
    <div class="visualizing">
      <div class="visualizing-item">
        <div>
          <data-title title="失业人员失业原因统计" />
        </div>
        <div id="syryChart1" style="height: 380px"></div>
      </div>
      <div class="visualizing-item">
        <div>
          <data-title title="失业人员就业愿望统计" />
        </div>
        <div id="syryChart2" style="height: 380px"></div>
      </div>
      <div class="visualizing-item">
        <div>
          <data-title title="失业人员年龄统计" />
        </div>
        <div id="syryChart3" style="height: 380px"></div>
      </div>
    </div>
    <div class="visualizing dibaorenyuan">
      <div class="visualizing-left">
        <div>
          <data-title title="技能找人统计" />
        </div>
        <div id="syryChart4" style="height: 380px"></div>
      </div>
      <div class="visualizing-right">
        <div>
          <data-title title="岗位找人统计" />
        </div>
        <div id="syryChart5" style="height: 380px"></div>
      </div>
    </div>
  </div>
</template>

<script>
import dataTitle from "@/views/dataBoard/renfang/visualizing/components/dataTitle.vue";
import * as echarts from "echarts";

function dataFormatter(arr) {
  return arr.map((item) => {
    let name = "";
    const arr = Array.from(item.classification);
    arr.forEach((d, i) => {
      name = name + d;
      if ((i + 1) % 5 == 0&&i!=arr.length-1) {
        name = name + d + "\n";
      }
    });
    return {
      name: name,
      value: Number(item.classificationNum),
    };
  });
}
function dataFormatter1(arr) {
  return arr.map((item) => {
    return {
      name: item.classification,
      value: Number(item.classificationNum),
    };
  });
}
export default {
  name: "shiyerenyuan",
  props: {
    title: {
      type: String,
      default: "详情",
    },
  },
  components: {
    dataTitle,
  },
  data() {
    return {
      syryData1: [],
      syryData2: [],
      syryData3: [],
      syryData4: [],
      syryData5: [],
    };
  },
  created() {
    const query = this.$route.query;
    this.getData();
  },
  methods: {
    getData() {
      this.$http
        .get("/actual/base/peopleRoomOverview/unemployedPie?type=0")
        .then(({ data: res }) => {
          if (res.code !== 0) {
            return this.$message.error(res.msg);
          }
          this.syryData1 = dataFormatter(res.data);
          this.syryDataCharts1();
        })
        .catch(() => {});
      this.$http
        .get("/actual/base/peopleRoomOverview/unemployedPie?type=1")
        .then(({ data: res }) => {
          if (res.code !== 0) {
            return this.$message.error(res.msg);
          }
          this.syryData2 = dataFormatter1(res.data);
          this.syryDataCharts2();
        })
        .catch(() => {});
      this.$http
        .get("/actual/base/peopleRoomOverview/unemployedPie?type=2")
        .then(({ data: res }) => {
          if (res.code !== 0) {
            return this.$message.error(res.msg);
          }
          this.syryData3 = dataFormatter1(res.data);
          this.syryDataCharts3();
        })
        .catch(() => {});
      this.$http
        .get("/actual/base/peopleRoomOverview/unemployedPie?type=3")
        .then(({ data: res }) => {
          if (res.code !== 0) {
            return this.$message.error(res.msg);
          }
          this.syryData4 = dataFormatter(res.data);
          this.syryDataCharts4();
        })
        .catch(() => {});
      this.$http
        .get("/actual/base/peopleRoomOverview/unemployedPie?type=4")
        .then(({ data: res }) => {
          if (res.code !== 0) {
            return this.$message.error(res.msg);
          }
          this.syryData5 = dataFormatter(res.data);
          this.syryDataCharts5();
        })
        .catch(() => {});
    },
    syryDataCharts1() {
      let div = document.getElementById("syryChart1");
      this.myChart1 = echarts.init(div);
      var option = {
        color: ["#60bce1", "#04c78f", "#fdaa00", "#f23800"],
        legend: {
          orient: "vertical",
          top: 20,
          left: 10,
          icon: "rect",
          itemHeight: 14,
          itemWidth: 14,
          textStyle: {
            color: "#ffffff",
            rich: {
              name: {
                width: 90,
                fontSize: 12,
                color: "#dddee7",
              },
              value: {
                width: 30,
                align: "right",
                fontSize: 18,
              },
            },
          },
          data: this.syryData1,
          formatter: (name) => {
            if (this.syryData1.length) {
              const item = this.syryData1.filter(
                (item) => item.name === name
              )[0];
              return `{name|${name}}{value| ${item.value}}`;
            }
          },
        },
        toolbox: {
          show: false,
          feature: {
            mark: { show: true },
            dataView: { show: true, readOnly: false },
            restore: { show: true },
            saveAsImage: { show: true },
          },
        },
        series: [
          {
            name: "Nightingale Chart",
            type: "pie",
            radius: [30, 130],
            center: ["50%", "50%"],
            roseType: "area",
            itemStyle: {
              borderRadius: 0,
            },
            top: 20,
            left: -40,
            label: {
              position: "inside",
              formatter: "{d}%",
              textStyle: {
                color: "#ffffff",
                fontSize: 12,
              },
            },
            data: this.syryData1,
          },
        ],
      };
      this.myChart1.setOption(option);
      this.myChart1.on("click", (a, b) => {
        this.$router.push({
          path: "/dataBoard/renfang/resi-class",
          query: {
            org_id: "7b6f9a9f9f38d5f9fa7ce94a93d6eb28",
            type_id: "aged",
            type_name: "失业人员失业原因",
            pageType: "normal",
          },
        });
      });
      window.addEventListener("resize", () => this.myChart1.resize());
    },
    syryDataCharts2() {
      let div = document.getElementById("syryChart2");
      this.myChart2 = echarts.init(div);
      var option = {
        color: ["#1b94fe", "#5a75ff", "#01c690", "#fdaa01"],
        legend: {
          orient: "vertical",
          top: 20,
          left: 10,
          icon: "rect",
          itemHeight: 14,
          itemWidth: 14,
          textStyle: {
            color: "#ffffff",
            rich: {
              name: {
                width: 80,
                fontSize: 12,
                color: "#dddee7",
              },
              value: {
                width: 30,
                align: "right",
                fontSize: 18,
              },
            },
          },
          data: this.syryData2,
          formatter: (name) => {
            if (this.syryData2.length) {
              const item = this.syryData2.filter(
                (item) => item.name === name
              )[0];
              return `{name|${name}}{value| ${item.value}}`;
            }
          },
        },
        toolbox: {
          show: false,
          feature: {
            mark: { show: true },
            dataView: { show: true, readOnly: false },
            restore: { show: true },
            saveAsImage: { show: true },
          },
        },
        series: [
          {
            name: "Nightingale Chart",
            type: "pie",
            radius: [30, 130],
            center: ["50%", "50%"],
            roseType: "area",
            itemStyle: {
              borderRadius: 0,
            },
            top: 20,
            left: -40,
            label: {
              position: "inside",
              formatter: "{d}%",
              textStyle: {
                color: "#ffffff",
                fontSize: 12,
              },
            },
            data: this.syryData2,
          },
        ],
      };
      this.myChart2.setOption(option);
      this.myChart2.on("click", (a, b) => {
        this.$router.push({
          path: "/dataBoard/renfang/resi-class",
          query: {
            org_id: "7b6f9a9f9f38d5f9fa7ce94a93d6eb28",
            type_id: "aged",
            type_name: "失业人员就业愿望",
            pageType: "normal",
          },
        });
      });
      window.addEventListener("resize", () => this.myChart2.resize());
    },
    syryDataCharts3() {
      let div = document.getElementById("syryChart3");
      this.myChart3 = echarts.init(div);
      var option = {
        color: ["#60bce1", "#04c78f", "#fdaa00", "#f23800"],
        legend: {
          type: "scroll",
          orient: "vertical",
          top: 20,
          left: 10,
          icon: "rect",
          itemHeight: 14,
          itemWidth: 14,
          textStyle: {
            width: 120,
            color: "#ffffff",
            rich: {
              name: {
                width: 90,
                fontSize: 12,
                color: "#dddee7",
              },
              value: {
                width: 30,
                align: "right",
                fontSize: 18,
              },
            },
          },
          data: this.syryData3,
          formatter: (name) => {
            if (this.syryData3.length) {
              const item = this.syryData3.filter(
                (item) => item.name === name
              )[0];
              return `{name|${name}}{value| ${item.value}}`;
            }
          },
        },
        toolbox: {
          show: false,
          feature: {
            mark: { show: true },
            dataView: { show: true, readOnly: false },
            restore: { show: true },
            saveAsImage: { show: true },
          },
        },
        series: [
          {
            name: "Nightingale Chart",
            type: "pie",
            radius: [30, 130],
            center: ["50%", "50%"],
            roseType: "area",
            itemStyle: {
              borderRadius: 0,
            },
            top: 20,
            left: -40,
            label: {
              position: "inside",
              formatter: "{d}%",
              textStyle: {
                color: "#ffffff",
                fontSize: 12,
              },
            },
            data: this.syryData3,
          },
        ],
      };
      this.myChart3.setOption(option);
      this.myChart3.on("click", (a, b) => {
        this.$router.push({
          path: "/dataBoard/renfang/resi-class",
          query: {
            org_id: "7b6f9a9f9f38d5f9fa7ce94a93d6eb28",
            type_id: "aged",
            type_name: "失业人员年龄",
            pageType: "normal",
          },
        });
      });
      window.addEventListener("resize", () => this.myChart3.resize());
    },
    syryDataCharts4() {
      let div = document.getElementById("syryChart4");
      this.myChart4 = echarts.init(div);
      var option = {
        color: ["#1b94fe", "#5a75ff", "#01c690", "#fdaa01"],
        legend: {
          type: "scroll",
          orient: "vertical",
          top: 20,
          left: 10,
          icon: "rect",
          itemHeight: 14,
          itemWidth: 14,
          textStyle: {
            color: "#ffffff",
            rich: {
              name: {
                width: 80,
                fontSize: 12,
                color: "#dddee7",
              },
              value: {
                width: 30,
                align: "right",
                fontSize: 18,
              },
            },
          },
          data: this.syryData4,
          formatter: (name) => {
            if (this.syryData4.length) {
              const item = this.syryData4.filter(
                (item) => item.name === name
              )[0];
              return `{name|${name}}{value| ${item.value}}`;
            }
          },
        },
        toolbox: {
          show: false,
          feature: {
            mark: { show: true },
            dataView: { show: true, readOnly: false },
            restore: { show: true },
            saveAsImage: { show: true },
          },
        },
        series: [
          {
            name: "Nightingale Chart",
            type: "pie",
            radius: [30, 130],
            center: ["50%", "50%"],
            roseType: "area",
            itemStyle: {
              borderRadius: 0,
            },
            top: 20,
            left: -40,
            label: {
              position: "inside",
              formatter: "{d}%",
              textStyle: {
                color: "#ffffff",
                fontSize: 12,
              },
            },
            data: this.syryData4,
          },
        ],
      };
      this.myChart4.setOption(option);
      window.addEventListener("resize", () => this.myChart4.resize());
    },
    syryDataCharts5() {
      let div = document.getElementById("syryChart5");
      this.myChart5 = echarts.init(div);
      var option = {
        color: ["#1b94fe", "#5a75ff", "#01c690", "#fdaa01"],
        legend: {
          type: "scroll",
          orient: "vertical",
          top: 20,
          left: 10,
          icon: "rect",
          itemHeight: 14,
          itemWidth: 14,
          textStyle: {
            color: "#ffffff",
            rich: {
              name: {
                width: 80,
                fontSize: 12,
                color: "#dddee7",
              },
              value: {
                width: 30,
                align: "right",
                fontSize: 18,
              },
            },
          },
          data: this.syryData5,
          formatter: (name) => {
            if (this.syryData5.length) {
              const item = this.syryData5.filter(
                (item) => item.name === name
              )[0];
              return `{name|${name}}{value| ${item.value}}`;
            }
          },
        },
        toolbox: {
          show: false,
          feature: {
            mark: { show: true },
            dataView: { show: true, readOnly: false },
            restore: { show: true },
            saveAsImage: { show: true },
          },
        },
        series: [
          {
            name: "Nightingale Chart",
            type: "pie",
            radius: [30, 130],
            center: ["50%", "50%"],
            roseType: "area",
            itemStyle: {
              borderRadius: 0,
            },
            top: 20,
            left: -40,
            label: {
              position: "inside",
              formatter: "{d}%",
              textStyle: {
                color: "#ffffff",
                fontSize: 12,
              },
            },
            data: this.syryData5,
          },
        ],
      };
      this.myChart5.setOption(option);
      window.addEventListener("resize", () => this.myChart5.resize());
    },
  },
};
</script>

<style
  lang="scss"
  src="@/assets/scss/dataBoard/renfang/index.scss"
  scoped
></style>

<style lang="scss" scoped>
.dibaorenyuan {
  padding: 0px 240px;
}
#syryChart3 {
  .echarts-legend {
    white-space: normal;
  }
}

:v-deep #syryChart3 {
  .echarts-legend span {
    padding: 5px 0;
    display: block;
  }
}
</style>
