<template>
  <div class="module">
    <div class="displayFlex left_bg">
      <div class="flex11">
        <div class="yd_title left_1">
          <div class="animate-border">
            <i></i>
            <i></i>
          </div>
        </div>
        <div class="hypertension">
          <pie3dMt1 :list="data.analysis.lnr"></pie3dMt1>
          <edxs
            :list="data.whistleblower.culeTotal.data"
            :month="data.whistleblower.culeTotal.time"
          ></edxs>
        </div>
      </div>
      <div class="flex1">
        <div class="yd_title left_2">
          <div class="animate-border">
            <i></i>
            <i></i>
          </div>
        </div>
        <div class="ViewData">
          <div class="ViewDatalist">
            <div
              class="ViewDataTop"
              v-for="(item, index) in data.ViewData"
              :key="item.name"
              @click="onViewData(item.name, index)"
            >
              <div
                class="ViewDataTopimg"
                :class="{ ViewDataBottomimg: item.show }"
              >
                {{ item.value }}
              </div>
              <div
                class="ViewDataTopimg_1"
                :class="{ ViewDataBottomimg_1: item.show }"
              ></div>
              <span> {{ item.name }}</span>
            </div>
          </div>
          <eP2 :list="data.DataViewing" :year="data.leftCenterYear"></eP2>
        </div>
      </div>
    </div>
    <div class="displayFlex center_bg">
      <div class="flex1">
        <div class="yd_title center_0">
          <div class="animate-border">
            <i></i>
            <i></i>
          </div>
        </div>
        <div class="minTopTitle"></div>
        <div class="minTopNum">
          <!-- <div
            class="numItem"
            v-for="(item, index) in minData.minTop"
            :key="index"
          >
            {{ item }}
          </div> -->
          <FlipClock :list="minData.minTop"></FlipClock>
        </div>
        <div style="overflow: hidden; margin-top: 20px">
          <div class="minPie">
            <div class="minPieImg" style="letter-spacing: 1px">
              集聚类型分布
            </div>
            <Pie3dMt :list="minData.minPieData1"></Pie3dMt>
          </div>
          <div class="minPie">
            <div class="minPieImg">年龄分布</div>
            <Pie3dMt2 :list="minData.minPieData2"></Pie3dMt2>
          </div>
        </div>

        <div class="jypx">
          <div class="minPieImg2">就业培训</div>
          <jypx></jypx>
          <div class="jypx_right">
            <div class="jypx_right_item" v-for="item in jypxList">
              <img :src="item.img" alt="" />
              <div class="jypx_right_item_right">
                <div class="jypx_name">{{ item.name }}</div>
                <div class="jypx_value">{{ item.value }}</div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="flex1">
        <div class="yd_title center_1">
          <div class="animate-border">
            <i></i>
            <i></i>
          </div>
        </div>
        <ylXZZC :list1="data.zccs1" :list2="data.zccs2"></ylXZZC>
      </div>
    </div>
    <div class="displayFlex right_bg">
      <div class="flex1">
        <div class="yd_title right_1">
          <div class="animate-border">
            <i></i>
            <i></i>
          </div>
        </div>
        <right1 :list="data.wjybrysl"></right1>
      </div>
      <div class="flex1">
        <div class="yd_title right_2">
          <div class="animate-border">
            <i></i>
            <i></i>
          </div>
        </div>
        <!-- <img src="@/assets/images/sjfx/right3D.png" alt="" class="right3d" /> -->
        <right2 :list="data.analysis.push"></right2>
      </div>
      <div class="flex1">
        <div class="yd_title right_3">
          <div class="animate-border">
            <i></i>
            <i></i>
          </div>
        </div>
        <Map class="map"></Map>
      </div>
    </div>
  </div>
</template>

<script setup>
import {
  ref,
  reactive,
  onMounted,
  onBeforeMount,
  onBeforeUnmount,
  computed,
} from "vue";
import right2 from "./echart_analyze/right2.vue";
import right1 from "./echart_analyze/right1.vue";
import jypx from "./echart_analyze/jypx.vue";
import http from "@/utils/request.js";
import Pie3dMt from "./echart_analyze/pie3dMt.vue";
import Pie3dMt2 from "./echart_analyze/pie3dMt2.vue";
import pie3dMt1 from "./echart_analyze/pie3dMt1.vue";
import edxs from "./echart_analyze/edXS.vue";
import eP2 from "./echart_analyze/eP2.vue";
import ylXZZC from "./echart_analyze/ylXZZC.vue";
import FlipClock from "./echart_analyze/FlipClock.vue";

import ViewDataimg from "@/assets/images/sjfx/sjfx.png";
import ViewDataimg1 from "@/assets/images/sjfx/sjfx1.png";
import ViewDataimg2 from "@/assets/images/sjfx/sjfx2.png";
import ViewDataimg3 from "@/assets/images/sjfx/sjfx3.png";
import jypx1 from "@/assets/images/sjfx/pxrc.png";
import jypx2 from "@/assets/images/sjfx/gygws.png";
import Map from "./echart_analyze/map.vue";
const showR = ref(false); //loading
//就业培训
const jypxList = reactive([
  {
    name: "培训人次",
    value: "5000",
    img: jypx1,
  },
  {
    name: "公益岗位数",
    value: "3815",
    img: jypx2,
  },
]);
const data = reactive({
  datashow: null,
  backgroundImageUrl: ViewDataimg,
  backgroundImageUrl1: ViewDataimg1,
  leftTop1: [],
  gxy: [], //高血压
  whistleblower: {
    culeTotal: {
      data: ["100", "120", "199", "133", "210"],
      time: ["61-70", "71-80", "81-90", "91-100", "100以上"],
    },
  }, //高血压柱状图

  ViewData: [
    {
      name: "医保支出万元以上",
      value: "0",
      show: true,
      data: ["0", "0", "0", "0", "0", "0"], //医保支出万元以上
    },
    {
      name: "大病住院",
      value: "0",
      show: false,
      data: ["0", "0", "0", "0", "0", "0"], //大病住院
    },
    {
      name: "高血压",
      value: "0",
      show: false,
      data: ["0", "0", "0", "0", "0", "0"], //高血压
    },
    {
      name: "糖尿病",
      value: "0",
      show: false,
      data: ["0", "0", "0", "0", "0", "0"], //糖尿病
    },
    {
      name: "高血脂",
      value: "0",
      show: false,
      data: ["0", "0", "0", "0", "0", "0"], //高血脂
    },
    {
      name: "高血糖",
      value: "0",
      show: false,
      data: ["0", "0", "0", "0", "0", "0"], //高血糖
    },
    {
      name: "残疾",
      value: "0",
      show: false,
      data: ["0", "0", "0", "0", "0", "0"], //残疾
    },
    {
      name: "低保",
      value: "0",
      show: false,
      data: ["0", "0", "0", "0", "0", "0"], //低保
    },
    {
      name: "特困",
      value: "0",
      show: false,
      data: ["0", "0", "0", "0", "0", "0"], //特困
    },
    {
      name: "其他疾病",
      value: "0",
      show: false,
      data: ["0", "0", "0", "0", "0", "0"], //其他疾病
    },
  ],
  DataViewing: [
    {
      name: "医保支出万元以上",
      data: ["0", "0", "0", "0", "0", "0"], //医保支出万元以上
    },
  ], //数据查看
  wjybrysl: [],
  leftCenterYear: ["2019", "2020", "2021", "2022", "2023", "2024"], //年份
  zccs1: ["图书馆", "公共自行车", "小奔通"], //一码通
  zccs2: ["100", "3924", "3905"], //一码通
  analysis: {
    lnr: {
      fgxy: { rs: "1610", zb: "51.77" },
      gxy: { rs: "1500", zb: "48.23" },
      rksj: {
        man: "196576",
        nl17: "48.23", // 17岁以下人口总数
        nl60: "0", // 60以上人口总数
        nl100: "0", // 100岁以上人口总数,
        nl110: "0", // 1-10岁人口总数
        nl1120: "0", // 11-20岁人口总数
        nl1834: "0", // 18-34人口总数
        nl2130: "0", // 21-30岁人口总数
        nl3140: "0", // 31-40岁人口总数
        nl3569: "0", // 35-69人口总数
        nl4150: "0", // 41-50岁人口总数
        nl5160: "0", // 51-60岁人口总数
        nl6170: "0", // 61-70岁人口总数
        nl7180: "0", // 71-80岁人口总数
        nl8190: "0", // 81-90岁人口总数
        nl91100: "0", // 91-100岁人口总数
        rkzs: "390754",
        woman: "194178",
      },
    },
    push: [
      { name: "小奔通", num: 4196 },
      { name: "交通", num: 102 },
      { name: "两慢病", num: 2 },
      { name: "天气", num: 102 },
    ],
  },
});
const minData = reactive({
  minTop: 49162,
  minTop1: ["4", "9", "1", "6", "2", "人"],
  minPieData1: {
    wfgz: "1500",
    xstp: "1610",
    skym: "1610",
    xxdc: "1610",
    dzzh: "1610",
    zq: "1610",
  },
  minPieData2: {
    wfgz: "1500",
    xstp: "1610",
    skym: "1610",
  },
});
// 数据查看
const onViewData = (value, i) => {
  clearInterval(interval); //关闭动画
  data.ViewData[i].show = !data.ViewData[i].show;
  data.DataViewing = data.ViewData.filter((item) => item.show).map((item) => ({
    name: item.name,
    data: item.data,
  }));
};
const onViewData1 = (i) => {
  data.ViewData[i].show = !data.ViewData[i].show;
  data.DataViewing = data.ViewData.filter((item) => item.show).map((item) => ({
    name: item.name,
    data: item.data,
  }));
};

let interval;
let currentIndex = ref(0);

const toggleShow = () => {
  const length = data.ViewData.length;
  if (length === 0) return;
  const current = currentIndex.value;
  const nextIndex = (currentIndex.value + 1) % length;
  // 取反当前索引和下一个索引的 show 值
  // data.ViewData[current].show = !data.ViewData[current].show;
  data.ViewData[nextIndex].show = !data.ViewData[nextIndex].show;
  onViewData1(current);
  currentIndex.value = nextIndex;
};

const startAutoSwitching = () => {
  interval = setInterval(toggleShow, 6000); // 每6秒切换一次
};
const getData = async () => {
  await http.get("/api/ggfwyth/analysis").then((res) => {
    if (res.code == 200) {
      // console.log(res.data, "信息推送");
      // data.analysis = res.data;
      data.analysis.lnr = res.data.lnr;
      data.analysis.push[0].num = res.data.push[0].num;

      const ageBt = ["nl6170", "nl7180", "nl8190", "nl91100", "nl100"];
      ageBt.forEach((key, index) => {
        data.whistleblower.culeTotal.data[index] = res.data.lnr.rksj[key];
      });
      data.wjybrysl = res.data.wjybrysl; //医保
    //   const mappings = [
    //   { key: 'ylzzwyrs', dataKey: 'ylzzwy' },
    //   { key: 'dbzyrs', dataKey: 'dbzyrs' },
    //   { key: 'gxyrs', dataKey: 'gxyrs' },
    //   { key: 'tnbrs', dataKey: 'tnbrs' },
    //   { key: 'gxzrs', dataKey: 'gxzrs' },
    //   { key: 'gxtrs', dataKey: 'gxtrs' },
    //   { key: 'cjrs', dataKey: 'cjrs' },
    //   { key: 'dibao', dataKey: 'dbjzrc' },
    //   { key: 'tekun', dataKey: 'tkjzrc' },
    //   { key: 'qtjbrs', dataKey: 'qtjbrs' },
    // ];

    // mappings.forEach((mapping, index) => {
    //   data.ViewData[index].data = res.data.dataShow[mapping.key][mapping.dataKey];
    //   data.ViewData[index].value = res.data.dataShow[mapping.key].total;
    // });
      data.leftCenterYear = res.data.dataShow.year;
      // data.ViewData[0].data = res.data.dataShow.ylzzwyrs.ylzzwy; //医保支出万元以上
      // data.ViewData[0].value = res.data.dataShow.ylzzwyrs.total; //医保支出万元以上年份
      // data.ViewData[1].data = res.data.dataShow.dbzyrs.dbzyrs; //大病住院
      // data.ViewData[1].value = res.data.dataShow.dbzyrs.total; //大病住院年份
        data.ViewData[2].data = res.data.dataShow.gxyrs.gxyrs; //高血压
        data.ViewData[2].value = res.data.dataShow.gxyrs.total; //高血压年份
        data.ViewData[3].data = res.data.dataShow.tnbrs.tnbrs; //糖尿病
        data.ViewData[3].value = res.data.dataShow.tnbrs.total; //糖尿病年份
      // data.ViewData[4].data = res.data.dataShow.gxzrs.gxzrs; //高血脂
      // data.ViewData[4].value = res.data.dataShow.gxzrs.total; //高血脂年份
      // data.ViewData[5].data = res.data.dataShow.gxtrs.gxtrs; //高血糖
      // data.ViewData[5].value = res.data.dataShow.gxtrs.total; //高血糖年份
      // data.ViewData[6].data = res.data.dataShow.cjrs.cjrs; //残疾
      // data.ViewData[6].value = res.data.dataShow.cjrs.total; //残疾年份
        data.ViewData[7].data = res.data.dataShow.dibao.dbjzrc; //低保
        data.ViewData[7].value = res.data.dataShow.dibao.total; //低保年份
        data.ViewData[8].data = res.data.dataShow.tekun.tkjzrc; //特困
        data.ViewData[8].value = res.data.dataShow.tekun.total; //特困年份
      // data.ViewData[9].data = res.data.dataShow.qtjbrs.qtjbrs; //其他疾病
      // data.ViewData[9].value = res.data.dataShow.qtjbrs.total; //其他疾病年份

    }
  });
};

onMounted(() => {
  startAutoSwitching();
});

onBeforeMount(() => {
  getData();
});

onBeforeUnmount(() => {
  clearInterval(interval); //清除定时器
});
</script>

<style lang="scss" scoped>
.displayFlex {
  box-sizing: border-box;
  height: 100%;
  display: flex;
  flex-direction: column;
  // flex: 1;
  width: 30%;
}

.flex1 {
  flex: 1;
  // padding: 0 28px;
  box-sizing: border-box;
}

.module {
  display: flex;
  width: 100%;
}

.left_bg {
  width: 642px;
  // height: 100%;
  box-sizing: border-box;
  padding-left: 50px;
  padding-right: 20px;
  margin-right: 28px;
  background-image: url(@/assets/images/left_bg.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.center_bg {
  width: 582px;
  box-sizing: border-box;
  padding-left: 10px;
  padding-right: 10px;
  background-image: url(@/assets/images/center_bg.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.right_bg {
  width: 642px;
  box-sizing: border-box;
  padding-right: 50px;
  padding-left: 20px;
  margin-left: 28px;
  background-image: url(@/assets/images/right_bg.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.left_1 {
  background-image: url(@/assets/images/sjfx/lnrsjfx.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.left_2 {
  background-image: url(@/assets/images/sjfx/znfxSJCK.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  height: 28px;
}

.center_0 {
  background-image: url(@/assets/images/sjfx/bft.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.center_1 {
  background-image: url(@/assets/images/sjfx/ymt.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.right_1 {
  background-image: url(@/assets/images/sjfx/wjybry.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.right_2 {
  background-image: url(@/assets/images/sjfx/xxts.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
}
.right_3 {
  background-image: url(@/assets/images/sjfx/jtzk.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.yd_title {
  box-sizing: border-box;
  width: 98%;
  height: 42px;
  position: relative;
  overflow: hidden;
  .text {
    display: flex;
    position: absolute;
    font-size: 16px;
    font-family: SourceHanSansCN;
    font-weight: bold;
    color: #ffffff;
    position: absolute;
    right: 5px;
    top: 3px;
  } /* 利用伪元素和两个i元素产生4条线 */
  .animate-border {
    position: absolute;
    top: 0px;
    width: 100%;
    height: 100%;
    &::before,
    &::after {
      content: "";
      position: absolute;
      width: 100%;
      height: 2px;
    }
    i {
      position: absolute;
      display: inline-block;
      height: 100%;
      width: 2px;
    }
    &::before {
      top: 0;
      left: -100%;
      background-image: linear-gradient(
        90deg,
        transparent,
        #03e9f4,
        transparent
      );

      animation: one 4s linear infinite;
    }
    i:nth-child(1) {
      top: -100%;
      right: 0;
      background-image: linear-gradient(
        180deg,
        transparent,
        #03e9f4,
        transparent
      );
      /* 动画名称  动画持续时间  动画渲染函数 动画延迟时间 动画执行次数 */
      animation: two 4s linear 1s infinite;
    }
    &::after {
      bottom: 0;
      right: -100%;
      background-image: linear-gradient(
        -90deg,
        transparent,
        #03e9f4,
        transparent
      );
      animation: three 4s linear 2s infinite;
    }
    i:nth-child(2) {
      bottom: -100%;
      left: 0;
      background-image: linear-gradient(
        360deg,
        transparent,
        #03e9f4,
        transparent
      );
      animation: four 4s linear 3s infinite;
    }
  }
}
@keyframes one {
  0% {
    left: -100%;
  }
  50%,
  100% {
    left: 100%;
  }
}

@keyframes two {
  0% {
    top: -100%;
  }
  50%,
  100% {
    top: 100%;
  }
}

@keyframes three {
  0% {
    right: -100%;
  }
  50%,
  100% {
    right: 100%;
  }
}

@keyframes four {
  0% {
    bottom: -100%;
  }
  50%,
  100% {
    bottom: 100%;
  }
}

.mechanism {
  background-image: url(@/assets/YLTitle/titleImg10.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.flex11 {
  padding: 12px 0;
}

.map {
  width: 560px;
  height: 268px;
  margin-top: 12px;
}
.right3d {
  width: 560px;
  height: 220px;
}
/* 滚动条整体部分 */
.rolling::-webkit-scrollbar {
  width: 5px;
  // height: 10px;
}

/* 滚动槽 */
.rolling::-webkit-scrollbar-track {
  border-radius: 1px;
  background: rgba(0, 128, 231, 0.56);
  -webkit-box-shadow: inset 0 0 6px rgba(139, 139, 139, 0.3);
}

/* 滚动条滑块样式 */
.rolling::-webkit-scrollbar-thumb {
  background-clip: content-box;
  border-radius: 6px;
  background: rgba(0, 162, 231, 1);
  -webkit-box-shadow: inset 0 0 6px rgba(20, 20, 20, 0.3);
}

.hypertension {
  display: flex;
}
.ViewData {
  .ViewDatalist {
    display: flex;
    flex-wrap: wrap;
    color: #ffffff;
    margin-top: 14px;
    .ViewDataTop {
      width: 114px;
      height: 132px;
      display: flex;
      align-items: center;
      flex-direction: column;
      cursor: pointer;

      .ViewDataTopimg {
        background-image: url(@/assets/images/sjfx/sjfx.png);
        background-repeat: no-repeat;
        background-size: 100% 100%;
        width: 80px;
        height: 80px;
        margin-bottom: -28px;
        text-align: center;
        line-height: 100px;
        animation: moveUpDown 2s infinite;
      }
      .ViewDataTopimg_1 {
        background-image: url(@/assets/images/sjfx/sjfx1.png);
        background-repeat: no-repeat;
        background-size: 100% 100%;
        width: 105px;
        height: 57px;
      }
      .ViewDataBottomimg {
        background-image: url(@/assets/images/sjfx/sjfx2.png);
        animation: scaleUpDown 2s infinite;
      }
      .ViewDataBottomimg_1 {
        background-image: url(@/assets/images/sjfx/sjfx3.png);
        margin-top: 4px;
      }

      @keyframes moveUpDown {
        0%,
        100% {
          transform: translateY(0);
        }
        50% {
          transform: translateY(-10px);
        }
      }
      // @keyframes scaleUpDown {
      //   0%,
      //   100% {
      //     transform: scale(1);
      //   }
      //   50% {
      //     transform: scale(1.1);
      //   }
      // }
    }
  }
}
.minTopTitle {
  width: 100%;
  height: 28px;
  background-image: url(@/assets/images/sjfx/yjj.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  margin: 4px auto;
  margin-top: 13px;
}
.minTopNum {
  width: 100%;
  height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
  .numItem {
    width: 72px;
    height: 114px;
    text-align: center;
    line-height: 114px;
    font-weight: 400;
    font-size: 60px;
    margin: 0 3px;
    color: #ffffff;
    text-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5);
    background-image: url(@/assets/images/sjfx/mtNum.png);
    background-repeat: no-repeat;
    background-size: 100% 100%;
  }
  .numItem:last-child {
    width: 72px;
    height: 114px;
    text-align: center;
    line-height: 114px;
    font-weight: 400;
    font-size: 36px;
    margin: 0 3px;
    color: #ffffff;
    text-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5);
    background-image: url(@/assets/images/sjfx/mtNum2.png);
    background-repeat: no-repeat;
    background-size: 100% 100%;
  }
}
.minPie {
  width: 50%;
  position: relative;
  float: left;
  .minPieImg {
    position: absolute;
    width: 137px;
    height: 20px;
    background-image: url(@/assets/images/sjfx/minPieT.png);
    background-repeat: no-repeat;
    background-size: 100% 100%;
    text-align: center;
    font-size: 16px;
    color: #ffffff;
    line-height: 22px;
    letter-spacing: 4px;
    top: 140px;
    left: 75px;
    z-index: 2;
  }
}
//就业培训
.jypx {
  width: 100%;
  height: 200px;
  margin: 20px 0;
  position: relative;
  display: flex;
  align-items: center;
}
.minPieImg2 {
  position: absolute;
  width: 137px;
  height: 20px;
  background-image: url(@/assets/images/sjfx/minPieT.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  text-align: center;
  font-size: 16px;
  color: #ffffff;
  line-height: 22px;
  letter-spacing: 4px;
  top: 185px;
  left: 25px;
  z-index: 2;
}
.jypx_right {
  display: flex;
  flex-direction: column;
  margin-left: 35px;
  .jypx_right_item {
    display: flex;
    align-items: center;
    img {
      width: 70px;
      height: 60px;
    }
    .jypx_right_item_right {
      margin-left: 15px;
      .jypx_name {
        letter-spacing: 1px;
        font-size: 18px;
        line-height: 25px;
      }
      .jypx_value {
        font-size: 22px;
        color: #ffffff;
        line-height: 30px;
        letter-spacing: 1px;
      }
    }
  }
  .jypx_right_item:first-child {
    margin-bottom: 20px;
    .jypx_name {
      color: #00ebff;
    }
  }
  .jypx_right_item:last-child {
    .jypx_name {
      color: #a5cdff;
    }
  }
}
</style>
