<template>
  <div>
    <div class="visualizing laonianren">
      <div class="visualizing-item">
        <div>
          <data-title title="老年人年龄统计" />
        </div>
        <div id="lnrLeftChart" style="height: 400px"></div>
      </div>
      <div class="visualizing-item">
        <div>
          <data-title title="老年人居住情况统计" />
        </div>
        <div id="lnrRightChart" style="height: 400px"></div>
      </div>
      <div class="visualizing-item">
        <div>
          <data-title title="老年人享受服务情况统计" />
        </div>
        <div id="lnrServiceChart" style="height: 400px"></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) => {
    return {
      name: item.classification,
      value: Number(item.classificationNum),
    };
  });
}
export default {
  name: "laonianren",
  props: {
    title: {
      type: String,
      default: "",
    },
    org_id: {
      type: String,
      default: "",
    },
  },
  components: {
    dataTitle,
  },
  data() {
    return {
      lnrLeft: [],
      lnrRight: [],
      lnrService: [],
    };
  },
  created() {
    const query = this.$route.query;
    this.getData();
  },
  activated() {},
  methods: {
    getData() {
      this.$http
        .get("/actual/base/peopleRoomOverview/oldPeopleAgePie")
        .then(({ data: res }) => {
          if (res.code !== 0) {
            return this.$message.error(res.msg);
          }
          this.lnrLeft = dataFormatter(res.data);
          this.initLeftCharts();
        })
        .catch(() => {});
      this.$http
        .get("/actual/base/peopleRoomOverview/oldPeopleResidePie")
        .then(({ data: res }) => {
          if (res.code !== 0) {
            return this.$message.error(res.msg);
          }
          this.lnrRight = dataFormatter(res.data);
          this.initRightCharts();
        })
        .catch(() => {});
        this.$http
        .get("/actual/base/peopleRoomOverview/findPeoplePie/OLD_PEOPLE_FLAG")
        .then(({ data: res }) => {
          if (res.code !== 0) {
            return this.$message.error(res.msg);
          }
          this.lnrService = dataFormatter(res.data);
          this.initLnrServiceCharts();
        })
        .catch(() => {});
    },
    initLeftCharts() {
      let div = document.getElementById("lnrLeftChart");
      this.myChart1 = echarts.init(div);
      const option = {
        color: [
          "#15a7ed",
          "#22b998",
          "#5f6ff4",
          "#a66eeb",
          "#faa834",
          "#fd6200",
          "#fb3905",
        ],
        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.lnrLeft,
          formatter: (name) => {
            if (this.lnrLeft.length) {
              const item = this.lnrLeft.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 },
          },
        },
        title: {
          show: !this.lnrLeft || this.lnrLeft.length == 0, // 是否要展示“暂无数据”矢量图
          text: " {a|}", // 写入占位符a，以便后续填充内容
          x: "center",
          y: "center",
          subtext: "暂无数据", // 子标题
          itemGap: -10, // 设置主副标题间隔
          textStyle: {
            rich: {
              a: {
                height: 128, // 设置图片高度
                width: 268, // 设置图片宽度
                backgroundColor: {
                  // 引入图片，作为背景图，填写相对路径
                  image: require("@/assets/images/overview/zanwu.png"),
                },
              },
            },
          },
          subtextStyle: {
            // 配置副标题的文字样式
            fontSize: 12,
            color: "#ffffff",
          },
        },
        series: [
          {
            type: "pie",
            radius:
              this.lnrLeft && this.lnrLeft.length > 0 ? [30, 130] : [0, 0],
            center: ["50%", "50%"],
            roseType: "area",
            itemStyle: {
              borderRadius: 0,
            },
            top: 20,
            left: -40,
            label: {
              position: "inside",
              formatter: "{d}%",
              textStyle: {
                color: "#ffffff",
                fontSize: 12,
              },
            },
            data: this.lnrLeft,
          },
        ],
      };
      this.myChart1.setOption(option);
      this.myChart1.on("click", (e) => {
        this.$router.push({
          path: "/dataBoard/renfang/resi-class-new",
          query: {
            org_id: this.org_id,
            type_id: "aged",
            type_name: "老年人",
            pageType: "normal",
            type: "old",
            olds: e.data.name,
          },
        });
      });
      window.addEventListener("resize", () => this.myChart1.resize());
    },
    initRightCharts() {
      let div = document.getElementById("lnrRightChart");
      this.myChart2 = echarts.init(div);
      const option = {
        color: [
          "#15a7ed",
          "#22b998",
          "#5f6ff4",
          "#a66eeb",
          "#faa834",
          "#fd6200",
          "#fb3905",
        ],
        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.lnrRight,
          formatter: (name) => {
            if (this.lnrRight.length) {
              const item = this.lnrRight.filter(
                (item) => item.name === name
              )[0];
              return `{name|${name}}{value| ${item.value}}`;
            }
          },
        },
        title: {
          show: !this.lnrRight || this.lnrRight.length == 0, // 是否要展示“暂无数据”矢量图
          text: " {a|}", // 写入占位符a，以便后续填充内容
          x: "center",
          y: "center",
          subtext: "暂无数据", // 子标题
          itemGap: -10, // 设置主副标题间隔
          textStyle: {
            rich: {
              a: {
                height: 128, // 设置图片高度
                width: 268, // 设置图片宽度
                backgroundColor: {
                  // 引入图片，作为背景图，填写相对路径
                  image: require("@/assets/images/overview/zanwu.png"),
                },
              },
            },
          },
          subtextStyle: {
            // 配置副标题的文字样式
            fontSize: 12,
            color: "#ffffff",
          },
        },
        toolbox: {
          show: false,
          feature: {
            mark: { show: true },
            dataView: { show: true, readOnly: false },
            restore: { show: true },
            saveAsImage: { show: true },
          },
        },
        series: [
          {
            type: "pie",
            radius:
              this.lnrRight && this.lnrRight.length > 0 ? [30, 130] : [0, 0],
            center: ["50%", "50%"],
            roseType: "area",
            itemStyle: {
              borderRadius: 0,
            },
            top: 20,
            left: -40,
            label: {
              position: "inside",
              formatter: "{d}%",
              textStyle: {
                color: "#ffffff",
                fontSize: 12,
              },
            },
            data: this.lnrRight,
          },
        ],
      };
      this.myChart2.on("click", (e) => {
        console.log('a, b::', e);
        this.$router.push({
          path: "/dataBoard/renfang/resi-class-new",
          query: {
            org_id: this.org_id,
            type_id: "aged",
            type_name: "老年人",
            pageType: "normal",
            type: "old",
            qingk: e.data.name,
          },
        });
      });
      this.myChart2.setOption(option);
      window.addEventListener("resize", () => this.myChart2.resize());
    },
    initLnrServiceCharts() {
      let div = document.getElementById("lnrServiceChart");
      this.myChart3 = echarts.init(div);
      const option = {
        color: [
          "#15a7ed",
          "#22b998",
          "#5f6ff4",
          "#a66eeb",
          "#faa834",
          "#fd6200",
          "#fb3905",
        ],
        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.lnrService,
          formatter: (name) => {
            if (this.lnrService.length) {
              const item = this.lnrService.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 },
          },
        },
        title: {
          show: !this.lnrService || this.lnrService.length == 0, // 是否要展示“暂无数据”矢量图
          text: " {a|}", // 写入占位符a，以便后续填充内容
          x: "center",
          y: "center",
          subtext: "暂无数据", // 子标题
          itemGap: -10, // 设置主副标题间隔
          textStyle: {
            rich: {
              a: {
                height: 128, // 设置图片高度
                width: 268, // 设置图片宽度
                backgroundColor: {
                  // 引入图片，作为背景图，填写相对路径
                  image: require("@/assets/images/overview/zanwu.png"),
                },
              },
            },
          },
          subtextStyle: {
            // 配置副标题的文字样式
            fontSize: 12,
            color: "#ffffff",
          },
        },
        series: [
          {
            type: "pie",
            radius:
              this.lnrService && this.lnrService.length > 0 ? [30, 130] : [0, 0],
            center: ["50%", "50%"],
            roseType: "area",
            itemStyle: {
              borderRadius: 0,
            },
            top: 20,
            left: -40,
            label: {
              position: "inside",
              formatter: "{d}%",
              textStyle: {
                color: "#ffffff",
                fontSize: 12,
              },
            },
            data: this.lnrService,
          },
        ],
      };
      this.myChart3.setOption(option);
      this.myChart3.on("click", (e) => {
        this.$router.push({
          path: "/dataBoard/renfang/resi-class-new",
          query: {
            org_id: this.org_id,
            type_id: "aged",
            type_name: "老年人",
            pageType: "normal",
            type: "old",
            serv_type: e.data.name,
          },
        });
      });
      window.addEventListener("resize", () => this.myChart3.resize());
    },
  },
};
</script>

<style
  lang="scss"
  src="@/assets/scss/dataBoard/renfang/index.scss"
  scoped
></style>
<style lang="scss" scoped>
.laonianren {
  padding: 140px 240px;
}
</style>
