Newer
Older
urbanLifeline_YanAn / src / views / oneMap / components / ZHRQ.vue
@zhangqy zhangqy 8 days ago 57 KB echarts 清除定时器
<template>
  <div id="ZHRQ">
    <PublicHead />

    <div
      :class="[
        'LeftBox',
        'animate__animated',
        showPanel ? 'animate__fadeOutLeft' : 'animate__fadeInLeft',
      ]"
    >
      <div class="ComBox LeftBox1_1">
        <div class="Box_header" style="cursor: pointer" @click="ShowSiSetu(true)">
          管道风险评估
        </div>
        <div class="Box_Body">
          <div class="TJListBox">
            <div class="TJList TJList_RQ" @click="TuChengClick(0)">
              <img
                class="TJListImg"
                src="@/assets/images/Sponge_screen/RQ/RQ_RQ.png"
                alt=""
              />
              <span class="TJListName">燃气管道</span>
              <span class="TJListValue">4979km</span>
            </div>
            <div class="TJList TJList_GZ">
              <img
                class="TJListImg"
                src="@/assets/images/Sponge_screen/RQ/RQ_GZ.png"
                alt=""
              />
              <span class="TJListName">需改造</span>
              <span class="TJListValue">149km</span>
            </div>
          </div>
          <div class="RQ_EchartsBox" id="Echarts2Box"></div>
        </div>
      </div>
      <div class="ComBox LeftBox1_2">
        <div class="Box_header">风险监测</div>
        <div class="Box_Body">
          <div class="TJListBox">
            <div class="TJList2" @click="showIndexOver()">
              <span class="TJList2Name">指标超标</span>
              <span class="TJList2Value">10</span>
            </div>
            <div class="TJList2" @click="showIndexWarning()">
              <span class="TJList2Name">预警站点数</span>
              <span class="TJList2Value">1</span>
            </div>
          </div>
          <div class="TableChange">
            <div
              class="TableChangeList"
              :class="AllData.TableChangeIndex == item.id ? 'TableCheck' : ''"
              v-for="item in AllData.ChangeData"
              @click="fxjsChange(item)"
            >
              {{ item.name }}
            </div>
          </div>
          <!-- 弹性盒子 -->
          <div class="TableBox">
            <div class="tableHeader">
              <span class="tableHeaderList tableList1">指标</span>
              <span class="tableHeaderList tableList2">数值</span>
              <span class="tableHeaderList tableList3">状态</span>
              <span class="tableHeaderList tableList4">操作</span>
            </div>
            <div class="tableBody">
              <div class="tableBodyList" v-for="item in AllData.FXJCData">
                <span class="tableBodyList_span1" @click="FengXianClick(item)">{{
                  item.zb
                }}</span>
                <span class="tableBodyList_span2" @click="FengXianClick(item)"
                  >{{ item.sz }}
                  <el-icon v-if="item.szzt" color="lime" size="14"><Top /> </el-icon>
                  <el-icon v-else color="#f54444" size="14">
                    <Bottom />
                  </el-icon>
                </span>
                <span
                  class="tableBodyList_span3"
                  :class="item.zt == 0 ? 'YJClass' : ''"
                  >{{ item.zt == 0 ? "预警" : "正常" }}</span
                >
                <span class="tableBodyList_span4" @click="PaiFa(item)">派发</span>
              </div>
            </div>
            <div class="tableFoot">更新时间:2024-11:13 10:00</div>
          </div>
        </div>
      </div>
      <div class="ComBox LeftBox1_3">
        <div class="Box_header">预警统计</div>
        <div class="Box_Body">
          <div class="TableChange2">
            <div
              class="TableChangeList2"
              :class="AllData.YJChangeIndex == item.id ? 'TableCheck2' : ''"
              v-for="item in AllData.YJChangeData"
              @click="initEcharts(item.id)"
            >
              {{ item.name }}
            </div>
          </div>
          <div id="YJEchartsBox"></div>
        </div>
      </div>
    </div>
    <div
      :class="[
        'RightBox',
        'animate__animated',
        showPanel ? 'animate__fadeOutRight' : 'animate__fadeInRight',
      ]"
    >
      <div class="ComBox RightBox1_1">
        <div class="Box_header">辅助决策</div>
        <div class="Box_Body">
          <div
            class="JCListBox"
            v-for="item in AllData.JCData"
            @click="fzjcBoxClick(item)"
          >
            <div class="JCListBox_List">
              <span class="JCListBox_List_label">风险区域:</span>
              <span class="JCListBox_List_value">{{ item.wranLocation }}</span>
            </div>
            <div class="JCListBox_List">
              <span class="JCListBox_List_label">风险特征:</span>
              <span class="JCListBox_List_value">{{ item.riskProfile }}</span>
            </div>
            <div class="JCListBox_List">
              <span class="JCListBox_List_label">历史事件:</span>
              <span class="JCListBox_List_value">{{ item.warnFrequency }}</span>
            </div>
            <div class="JCListBox_List">
              <span class="JCListBox_List_label">问题研判:</span>
              <span class="JCListBox_List_value color_red">{{ item.assessment }}</span>
            </div>
            <div class="JCListBox_List JCListBox_List_BTN">
              <el-button
                style="background: rgba(21, 141, 253); color: white; border: none"
                size="small"
                @click.stop="GongDanPaiFa(item)"
                >工单派发</el-button
              >
              <el-button
                style="background: rgba(21, 141, 253); color: white; border: none"
                size="small"
                @click.stop="XianChangLianXian(item)"
                >现场联线</el-button
              >
            </div>
          </div>
        </div>
      </div>
      <div class="ComBox RightBox1_2">
        <div class="Box_header">预警处置</div>
        <div class="Box_Body">
          <div class="FK_headerBox">
            <div class="FK_headerBox_list" @click="dealOrNoDeal(1)">
              <span class="FK_headerBox_list_colorBox1"></span> 未处理
            </div>
            <div class="FK_headerBox_list" @click="dealOrNoDeal(2)">
              <span class="FK_headerBox_list_colorBox2"></span> 已处理
            </div>
          </div>
          <div class="FK_bodyBox">
            <div class="FK_bodyBox_list" v-for="item in AllData.XCFKData">
              <span class="FK_bodyBox_list_label" @click="XunChaFanKui(item)">{{
                item.name
              }}</span>
              <div class="FK_BigBox">
                <div class="FK_CenBox1" :style="getWidth(item, 1)">{{ item.num1 }}</div>
                <div class="FK_CenBox2" :style="getWidth(item, 2)">{{ item.num2 }}</div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <!-- <div :class="['TopBox', 'animate__animated', showPanel ? 'animate__fadeOutUp' : 'animate__fadeInDown']">
      <div class="TopTableHeader">
        <span class="TopTableListSpan TopTableListSpan1">时间</span>
        <span class="TopTableListSpan TopTableListSpan2">事件明细</span>
        <span class="TopTableListSpan TopTableListSpan3">地点</span>
        <span class="TopTableListSpan TopTableListSpan4">状态</span>
        <span class="TopTableListSpan TopTableListSpan5">责任单位</span>
        <span class="TopTableListSpan TopTableListSpan6">督办</span>
      </div>

      <Vue3SeamlessScroll :list="AllData.TopTableData" :singleHeight="34" :hover="true" class="TopTableBody">
        <div class="TopTableBody_list" v-for="item in AllData.TopTableData">
          <span class="TopTableListSpan TopTableListSpan1">{{ item.sj }}</span>
          <span class="TopTableListSpan TopTableListSpan2">{{ item.mx }}</span>
          <span class="TopTableListSpan TopTableListSpan3">{{ item.dd }}</span>
          <span class="TopTableListSpan TopTableListSpan4">{{
            item.zt == 0 ? "未处理" : "已处理"
          }}</span>
          <span class="TopTableListSpan TopTableListSpan5">{{ item.dw }}</span>
          <span class="TopTableListSpan TopTableListSpan6">
            <img
              class="TopTableListSpanImg2"
              src="@/assets/images/Sponge_screen/RQ/RQ_XX.png"
              alt=""
              @click="PaiFa(item)"
            />
            <img
              class="TopTableListSpanImg"
              src="@/assets/images/Sponge_screen/RQ/RQ_SP.png"
              alt=""
              @click="XianChangLianXian(item)"
            />
          </span>
        </div>
      </Vue3SeamlessScroll>
    </div> -->
    <!-- <div
      :class="[
        'bottomBox',
        'animate__animated',
        showPanel ? 'animate__bounceOutDown' : 'animate__fadeInUpBig',
      ]"
    >
      <div class="TopTableHeader">
        <span class="TopTableListSpan TopTableListSpan1">指挥中心</span>
        <span class="TopTableListSpan TopTableListSpan2">动态</span>
        <span class="TopTableListSpan TopTableListSpan3">时间</span>
        <span class="TopTableListSpan TopTableListSpan4">指令状态</span>
      </div>
      <Vue3SeamlessScroll
        :list="AllData.bottomTableData"
        :singleHeight="34"
        :hover="true"
        class="TopTableBody"
      >
        <div class="TopTableBody_list" v-for="item in AllData.bottomTableData">
          <span class="TopTableListSpan TopTableListSpan1">{{ item.zhzx }}</span>
          <span class="TopTableListSpan TopTableListSpan2">{{ item.dt }}</span>
          <span class="TopTableListSpan TopTableListSpan3">{{ item.sj }}</span>
          <span class="TopTableListSpan TopTableListSpan4">{{ item.zlzt }}</span>
        </div>
      </Vue3SeamlessScroll>
    </div> -->

    <div
      class="IssueWarning"
      :class="[showPanel ? 'TuChengImgTrue' : 'TuChengImgFalse']"
      @click="WarningClick"
    >
      发布预警
    </div>
  </div>
</template>

<script setup name="ZHRQ">
import { ref, reactive, toRefs, onMounted, onBeforeUnmount, nextTick } from "vue";

import PublicHead from "./PublicHead";

import moment from "moment";
import * as echarts from "echarts";
import bus from "@/bus";
import { Vue3SeamlessScroll } from "vue3-seamless-scroll";
import sheBeiLost from "@/assets/sheBeiLost.json";
import xiaXian from "@/assets/xiaXian.json";
import yiBian from "@/assets/yiBian.json";
import zaWuDuiFang from "@/assets/zaWuDuiFang.json";
import rq_QiTa from "@/assets/rq_QiTa.json";
import no_sheBeiLost from "@/assets/no_sheBeiLost.json";
import no_xiaXian from "@/assets/no_xiaXian.json";
import no_yiBian from "@/assets/no_yiBian.json";
import no_zaWuDuiFang from "@/assets/no_zaWuDuiFang.json";
import no_rq_QiTa from "@/assets/no_rq_QiTa.json";
import yanAnRQoverindex from "@/assets/yanAnRQoverindex.json";
import yanAnWarring from "@/assets/yanAnWarring.json";

import dialogTabsStore from "@/store/modules/dialogTabs";
// 辅助决策
import { commonWarningList } from "@/api/RQWarning";
import { selectBoxBySiteNo } from "@/api/system/tanchuang";
import mapBoxVectorLayer from "@/utils/GISdocument/mapboxVectorLayer.js";
const useDialogTabs = dialogTabsStore();
const { proxy } = getCurrentInstance();
const { module_type } = proxy.useDict("module_type");
console.log("🚀 ~ module_type:", module_type);

const AllData = reactive({
  xunChaStatic: null,
  showTipsData: {},
  xunChaLayers: [
    "alreadyDeal_DF",
    "alreadyDeal_DS",
    "alreadyDeal_XX",
    "alreadyDeal_YB",
    "alreadyDeal_QT",
    "noDeal_DF",
    "noDeal_DS",
    "noDeall_XX",
    "noDeal_YB",
    "noDeal_QT",
  ],
  ChangeData: [
    {
      name: "延安中学",
      id: 1,
      siteNo: "RQ202400001",
      position: [109.4774986436632, 36.60497748480903],
    },
    {
      name: "延安大学附属医院",
      id: 2,
      siteNo: "RQ202400002",
      position: [109.48304674487184, 36.59982338278728],
    },
  ],
  TableChangeIndex: 1,
  TableChangeNo: "RQ202400001",
  TableChangeName: "延安中学",
  TableChangePosition: [109.4774986436632, 36.60497748480903],
  // 风险监测
  FXJCData: [
    {
      zb: "甲烷浓度",
      sz: "0%",
      szzt: false,
      zt: 1, //0预警 1 正常
      // value: "JWND",
      value: "1",
    },
    // {
    //   zb: "温度",
    //   sz: "17C°",
    //   szzt: true,
    //   zt: 1, //0预警 1 正常
    //   // value: "WD",
    //   value: "3",
    // },
    {
      zb: "水位",
      sz: "0",
      szzt: false,
      zt: 1, //0预警 1 正常
      // value: "YL",
      value: "2",
    },
  ],
  YJChangeData: [
    {
      name: "综合",
      id: 1,
    },
    {
      name: "压力",
      id: 2,
    },
    // {
    //   name: "温度",
    //   id: 3,
    // },
  ],
  YJChangeIndex: 1,
  //辅助决策
  JCData: [
    {
      qy: "宝塔区凤凰山街道二道街",
      tz: "压力监测异常波动",
      sj: 5,
      yp: "设施故障",
      value: "001", //语音识别内容编码-前段自己设置的,后期项目有接口就直接替换数据唯一id
    },
    {
      qy: "宝塔区凤凰山街道二道街",
      tz: "燃气管道压力过大",
      sj: 5,
      yp: "燃气爆管风险",
      value: "002",
    },
    {
      qy: "宝塔区凤凰山街道二道街",
      tz: "高峰期流量持续降低",
      sj: 4,
      yp: "燃气泄漏风险",
      value: "003",
    },
  ],
  // 巡查反馈
  XCFKData: [
    {
      name: "堆放杂物",
      num1: 20,
      num2: 80,
    },
    {
      name: "设备丢失",
      num1: 12,
      num2: 88,
    },
    {
      name: "下陷",
      num1: 32,
      num2: 68,
    },
    {
      name: "异变",
      num1: 30,
      num2: 70,
    },
    {
      name: "其他",
      num1: 20,
      num2: 80,
    },
  ],
  // 顶部表格数据
  TopTableData: [
    {
      sj: "2024-09-26 10:00:29",
      mx: "燃气常规检查发现泄漏",
      dd: "宝塔区凤凰山街道二道街",
      zt: 0, //0未处理 1已处理
      dw: "延安市燃气总公司",
      value: null,
    },
    {
      sj: "2024-09-27 16:10:248",
      mx: "燃气常规检查发现泄漏",
      dd: "宝塔区凤凰山街道二道街",
      zt: 0, //0未处理 1已处理
      dw: "延安市燃气总公司",
      value: null,
    },
    {
      sj: "2024-09-26 10:00:29",
      mx: "燃气常规检查发现泄漏",
      dd: "宝塔区凤凰山街道二道街",
      zt: 0, //0未处理 1已处理
      dw: "延安市燃气总公司",
      value: null,
    },
    {
      sj: "2024-09-27 16:10:248",
      mx: "燃气常规检查发现泄漏",
      dd: "宝塔区凤凰山街道二道街",
      zt: 0, //0未处理 1已处理
      dw: "延安市燃气总公司",
      value: null,
    },
  ],
  // 底部表格数据
  bottomTableData: [
    {
      zhzx: "预警发布",
      dt: "启动预警并通知成员单位",
      sj: "10-20 08:30",
      zlzt: "预警下发给城管局各单位,燃气供应处",
    },
    {
      zhzx: "预警启动",
      dt: "起草燃气安全预警应急行动",
      sj: "10-20 07:00",
      zlzt: "起草了预警通知",
    },
  ],
  timer: null,
});

const { JCData } = toRefs(AllData);

// 预警统计echarts实例
const myChart = shallowRef(null);
// 管道风险评估echarts实例
const myChart2 = shallowRef(null);
//面板展开收起
const showPanel = ref(true);
// 面板内容展开收起控制
const props = defineProps({
  showPanel: {
    type: Boolean,
  },
});

// 初始化预警统计的Echarts
const initEcharts = (id) => {
  AllData.YJChangeIndex = id;
  let Data1 = [];
  let Data2 = [];
  if (AllData.YJChangeIndex == 1) {
    Data1 = [6, 2, 1, 5, 7, 6, 3];
    Data2 = [16, 7, 8, 12, 16, 13, 12];
  } else if (AllData.YJChangeIndex == 2) {
    Data1 = [2, 3, 8, 3, 2, 1, 4];
    Data2 = [7, 16, 13, 16, 12, 8, 12];
  } else {
    Data1 = [6, 4, 3, 5, 8, 3, 8];
    Data2 = [8, 12, 16, 13, 16, 7, 12];
  }
  if (!!AllData.timer) {
    clearTimeout(AllData.timer);
  }
  if (!!myChart.value) {
    myChart.value.dispose();
  }
  myChart.value = echarts.init(document.getElementById("YJEchartsBox"));
  myChart.value.off("click");
  myChart.value.setOption({
    color: ["#18A7F2", "#1AF7AA"],
    tooltip: {
      trigger: "axis",
    },
    grid: {
      top: "30%",
      left: "3%",
      right: "4%",
      bottom: "3%",
      containLabel: true,
    },
    legend: {
      data: ["预警次数", "持续时长"],
      textStyle: {
        color: "#fffd", // 图例文字颜色
      },
      x: "40",
      y: "10",
    },
    xAxis: [
      {
        type: "category",
        data: ["今日", "11/12", "11/10", "11/09", "11/08", "11/07", "11/06"],
        axisPointer: {
          type: "shadow",
        },
        textStyle: {
          color: "#EBFEFF",
        },
        axisLine: {
          lineStyle: {
            color: "#EBFEFF",
          },
        },
        // boundaryGap: false,
      },
    ],
    yAxis: [
      {
        type: "value",
        name: "预警次数",
        min: 0,
        max: 12,
        interval: 2,
        axisLabel: {
          formatter: "{value}",
        },
        axisLine: {
          lineStyle: {
            color: "#AAC1CF",
          },
        },
        splitLine: {
          lineStyle: {
            // 使用深浅的间隔色
            color: ["#184E5A"],
          },
        },
      },
      {
        type: "value",
        name: "持续时长",
        min: 0,
        max: 30,
        interval: 5,
        axisLabel: {
          formatter: "{value}",
        },
        axisLine: {
          lineStyle: {
            color: "#AAC1CF",
          },
        },
        splitLine: {
          lineStyle: {
            // 使用深浅的间隔色
            color: ["#184E5A"],
          },
        },
      },
    ],
    series: [
      {
        name: "预警次数",
        type: "bar",
        barWidth: "10px",
        showBackground: true,
        tooltip: {
          valueFormatter: function (value) {
            return value + " 次";
          },
        },
        itemStyle: {
          // borderRadius: 10, // 统一设置四个角的圆角大小
          borderRadius: [10, 10, 0, 0], //(顺时针左上,右上,右下,左下)
        },
        data: Data1,
      },
      {
        name: "持续时长",
        type: "line",
        yAxisIndex: 1,
        tooltip: {
          valueFormatter: function (value) {
            return value + "min";
          },
        },
        areaStyle: {
          opacity: 0.8,
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
            {
              offset: 0,
              color: "#1AF7AA",
            },
            {
              offset: 1,
              color: "#1AF7AA00",
            },
          ]),
        },

        data: Data2,
      },
    ],
  });
  myChart.value.on("click", (param) => {
    console.log(param);
    let data = {
      title: "风险监测",
      comIDs: ["RQ_FengXianJianCe"],
    };
    bus.emit("publicDialog", data);
    let a = {
      value: "全部",
      endTime: "2024-10-05",
    };
    setTimeout(() => {
      bus.emit("getDataListFxjc", a);
    }, 500);
  });

  animateChart();
};
const animateChart = () => {
  if (AllData.timer) {
    clearInterval(AllData.timer);
  }
  let length = 7;
  let i = 0;
  AllData.timer = setInterval(() => {
    i++;
    if (i == length) i = 0;
    myChart.value.dispatchAction({
      type: "showTip",
      seriesIndex: 0,
      dataIndex: i,
    });
  }, 2000);
};
// 初始化管道风险的Echarts: ["市政老化", "庭院老化", "立管老化", "其他"]
const initEcharts2 = () => {
  if (!!myChart2.value) {
    myChart2.value.dispose();
  }
  myChart2.value = echarts.init(document.getElementById("Echarts2Box"));
  myChart2.value.off("click");
  myChart2.value.setOption({
    tooltip: {
      trigger: "axis",
      axisPointer: {
        type: "shadow",
      },
    },
    grid: {
      left: "5%",
      top: "5%",
      right: "5%",
      bottom: "5%",
      containLabel: true,
    },
    xAxis: {
      type: "category",
      triggerEvent: true,
      axisLine: {
        show: false,
      },
      axisLabel: {
        color: "#FFFFFF",
        fontSize: "14",
        // interval: 0,
        // rotate: rotate//文字旋转角度
      },
      axisTick: {
        // show: false,
        alignWithLabel: true,
        lineStyle: {
          color: "#0C4F81",
          type: "solid",
        },
      },
      // data: xAxisData,
      data: ["市政老化", "庭院老化", "立管老化", "其他"],
    },
    yAxis: {
      type: "value",
      nameTextStyle: {
        color: "#4F88BD",
        padding: [0, 25, -5, 0],
        fontSize: 12,
        fontFamily: "Microsoft YaHei",
      },
      axisLine: {
        show: true,
        lineStyle: {
          color: "#0C4F81",
        },
      },
      axisLabel: {
        color: "#4F88BD",
        fontSize: "12",
        formatter: "{value}",
      },
      splitLine: {
        lineStyle: {
          type: "dotted",
          color: "#0C4F81",
        },
      },
      axisTick: {
        show: false,
      },
    },
    series: [
      {
        z: 2,
        type: "pictorialBar",
        symbolPosition: "end",
        data: [410, 420, 520, 520],
        symbol: "diamond",
        symbolOffset: ["0", "-40%"], //盖子的位置
        symbolSize: [15, 13], //盖子的大小
        itemStyle: {
          color: {
            type: "linear",
            x: 0,
            x2: 1,
            y: 0,
            y2: 0,
            colorStops: [
              { offset: 0, color: "rgba(1, 224, 238, 1 )" },
              { offset: 1, color: "rgba(1, 224, 238, 1)" },
            ],
          }, //盖子的颜色
        },
        tooltip: {
          show: false,
        },
      },
      {
        z: 1,
        type: "bar",
        barWidth: 15,
        barGap: "50%",
        data: [410, 420, 520, 520],
        itemStyle: {
          color: {
            type: "linear",
            x: 0,
            x2: 1,
            y: 0,
            y2: 0,
            colorStops: [
              { offset: 0, color: "rgba(1, 224, 238, 0.8)" },
              { offset: 0.5, color: "rgba(1, 224, 238, 0.5)" },
              { offset: 0.5, color: "rgba(1, 224, 238, 0.1)" },
              { offset: 1, color: "rgba(1, 224, 238, 0.8)" },
            ],
          },
        },
      },
    ],
  });
  myChart2.value.on("click", (param) => {
    console.log(param);
    TuChengClick(param.dataIndex - 1);
  });
};

// 动态计算盒子的宽度
const getWidth = (item, num) => {
  let widthNum = 0;
  if (num == 1) {
    widthNum = (item.num1 / (item.num1 + item.num2)) * 100;
  } else {
    widthNum = (item.num2 / (item.num1 + item.num2)) * 100;
  }
  return `width:${widthNum}%`;
};
// 工单派发
const GongDanPaiFa = (item) => {
  console.log(item);
  let data = {
    title: item.wranLocation,
    comIDs: ["gdpf"],
    getSiteId: item.id,
  };
  bus.emit("publicDialog", data);
};
// // 风险
// const FengXianClick = (item) => {
//   console.log(item);
//   let data = {
//     title: item.zb + " 风险监测",
//     comIDs: ["RQ_FengXianJianCe"],
//   };
//   bus.emit("publicDialog", data);
// };
// 风险监测派发
const PaiFa = (item) => {
  console.log(item);
  // let data = {
  //   title: "智慧外呼",
  //   comIDs: ["RQ_ZhiHuiWaiHu"],
  //   getSiteId: item.value,
  // };
  // bus.emit("publicDialog", data);

  useDialogTabs.addPosition(AllData.TableChangePosition); // 添加全景位置
  useDialogTabs.addRQ(item);
  let data = {
    title: AllData.TableChangeName + " " + item.zb + " 风险监测",
    comIDs: [],
    SiteNo: AllData.TableChangeNo,
    RefName: "RQ_ZhiHuiWaiHu",
  };

  getTabsList(AllData.TableChangeNo).then((res) => {
    data.comIDs = res;
    bus.emit("publicDialog", data);
  });
};
//巡查反馈处理、未处理
const dealOrNoDeal = (item) => {
  AllData.xunChaStatic = item;
  newfiberMapbox.map.easeTo({
    center: [109.488, 36.596],
    zoom: 12,
    pitch: 55,
  });
  bus.emit("removeMapDatas", ["warning_monitor"]);
  if (item == 1) {
    let removedLayer = AllData.xunChaLayers.filter((layer) => layer.includes("noDeal"));
    let selectedLayer = AllData.xunChaLayers.filter((layer) =>
      layer.includes("alreadyDeal")
    );
    bus.emit("removeMapDatas", AllData.xunChaLayers);
    bus.emit("setGeoJSON", { json: zaWuDuiFang, key: "alreadyDeal_DF" });
    bus.emit("setGeoJSON", { json: sheBeiLost, key: "alreadyDeal_DS" });
    bus.emit("setGeoJSON", { json: xiaXian, key: "alreadyDeal_XX" });
    bus.emit("setGeoJSON", { json: yiBian, key: "alreadyDeal_YB" });
    bus.emit("setGeoJSON", { json: rq_QiTa, key: "alreadyDeal_QT" });
    selectedLayer.forEach((layer) => {
      bus.emit("setLayerVisible", { layername: layer, isCheck: true });
    });
  } else {
    let removedLayer = AllData.xunChaLayers.filter((layer) =>
      layer.includes("alreadyDeal")
    );
    let selectedLayer = AllData.xunChaLayers.filter((layer) => layer.includes("noDeal"));
    bus.emit("removeMapDatas", AllData.xunChaLayers);
    bus.emit("setGeoJSON", { json: no_zaWuDuiFang, key: "onDeal_DF" });
    bus.emit("setGeoJSON", { json: no_sheBeiLost, key: "onDeal_DS" });
    bus.emit("setGeoJSON", { json: no_xiaXian, key: "onDeal_XX" });
    bus.emit("setGeoJSON", { json: no_yiBian, key: "onDeal_YB" });
    bus.emit("setGeoJSON", { json: no_rq_QiTa, key: "onDeal_QT" });
    selectedLayer.forEach((layer) => {
      bus.emit("setLayerVisible", { layername: layer, isCheck: true });
    });
  }
};
// 巡查反馈
const XunChaFanKui = (item) => {
  let removedLayer = [];
  let selectedLayer = [];
  newfiberMapbox.map.easeTo({
    center: [109.488, 36.596],
    zoom: 12,
    pitch: 55,
  });
  switch (item.name) {
    case "堆放杂物":
      removedLayer = AllData.xunChaLayers.filter(
        (layer) => layer != "alreadyDeal_DF" && layer != "noDeal_DF"
      );
      selectedLayer = AllData.xunChaLayers.filter(
        (layer) => layer == "alreadyDeal_DF" || layer == "noDeal_DF"
      );
      selectedLayer.forEach((layer) => {
        bus.emit("setLayerVisible", { layername: layer, isCheck: true });
      });
      removedLayer.forEach((layer) => {
        bus.emit("setLayerVisible", { layername: layer, isCheck: false });
      });
      break;
    case "设备丢失":
      removedLayer = AllData.xunChaLayers.filter(
        (layer) => layer != "alreadyDeal_DS" && layer != "noDeal_DS"
      );
      selectedLayer = AllData.xunChaLayers.filter(
        (layer) => layer == "alreadyDeal_DS" || layer == "noDeal_DS"
      );
      selectedLayer.forEach((layer) => {
        bus.emit("setLayerVisible", { layername: layer, isCheck: true });
      });
      removedLayer.forEach((layer) => {
        bus.emit("setLayerVisible", { layername: layer, isCheck: false });
      });
      break;
    case "下陷":
      removedLayer = AllData.xunChaLayers.filter(
        (layer) => layer != "alreadyDeal_XX" && layer != "noDeal_XX"
      );
      selectedLayer = AllData.xunChaLayers.filter(
        (layer) => layer == "alreadyDeal_XX" || layer == "noDeal_XX"
      );
      selectedLayer.forEach((layer) => {
        bus.emit("setLayerVisible", { layername: layer, isCheck: true });
      });
      removedLayer.forEach((layer) => {
        bus.emit("setLayerVisible", { layername: layer, isCheck: false });
      });
      break;
    case "异变":
      removedLayer = AllData.xunChaLayers.filter(
        (layer) => layer != "alreadyDeal_YB" && layer != "noDeal_YB"
      );
      selectedLayer = AllData.xunChaLayers.filter(
        (layer) => layer == "alreadyDeal_YB" || layer == "noDeal_YB"
      );
      selectedLayer.forEach((layer) => {
        bus.emit("setLayerVisible", { layername: layer, isCheck: true });
      });
      removedLayer.forEach((layer) => {
        bus.emit("setLayerVisible", { layername: layer, isCheck: false });
      });
      break;
    case "其他":
      removedLayer = AllData.xunChaLayers.filter(
        (layer) => layer != "alreadyDeal_QT" && layer != "noDeal_QT"
      );
      selectedLayer = AllData.xunChaLayers.filter(
        (layer) => layer == "alreadyDeal_QT" || layer == "noDeal_QT"
      );
      selectedLayer.forEach((layer) => {
        bus.emit("setLayerVisible", { layername: layer, isCheck: true });
      });
      removedLayer.forEach((layer) => {
        bus.emit("setLayerVisible", { layername: layer, isCheck: false });
      });
      break;
  }
};
// 风险评估
const TuChengClick = (item) => {
  newfiberMapbox.map.easeTo({
    center: [109.488, 36.596],
    zoom: 12,
    pitch: 55,
  });
  switch (item) {
    case 0:
      bus.emit("setLayerVisible", { layername: "rq_SZLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_TYLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_LGLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_other", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_all", isCheck: true }); //所有管网rq_all、市政rq_SZLH、庭院rq_TYLH、立管rq_LGLH、其他rq_other
      break;
    case 1:
      bus.emit("setLayerVisible", { layername: "rq_all", isCheck: false }); //所有管网rq_all、市政rq_SZLH、庭院rq_TYLH、立管rq_LGLH、其他rq_other
      bus.emit("setLayerVisible", { layername: "rq_SZLH", isCheck: true });
      bus.emit("setLayerVisible", { layername: "rq_TYLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_LGLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_other", isCheck: false });
      break;
    case 2:
      bus.emit("setLayerVisible", { layername: "rq_all", isCheck: false }); //所有管网rq_all、市政rq_SZLH、庭院rq_TYLH、立管rq_LGLH、其他rq_other
      bus.emit("setLayerVisible", { layername: "rq_SZLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_TYLH", isCheck: true });
      bus.emit("setLayerVisible", { layername: "rq_LGLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_other", isCheck: false });

      break;
    case 3:
      bus.emit("setLayerVisible", { layername: "rq_all", isCheck: false }); //所有管网rq_all、市政rq_SZLH、庭院rq_TYLH、立管rq_LGLH、其他rq_other
      bus.emit("setLayerVisible", { layername: "rq_SZLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_TYLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_LGLH", isCheck: true });
      bus.emit("setLayerVisible", { layername: "rq_other", isCheck: false });
      break;
    case 4:
      bus.emit("setLayerVisible", { layername: "rq_all", isCheck: false }); //所有管网rq_all、市政rq_SZLH、庭院rq_TYLH、立管rq_LGLH、其他rq_other
      bus.emit("setLayerVisible", { layername: "rq_SZLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_TYLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_LGLH", isCheck: false });
      bus.emit("setLayerVisible", { layername: "rq_other", isCheck: true });
      break;
  }
};

// 辅助决策点击
const fzjcBoxClick = (item) => {
  item.zb = "压力";
  item.value = "2";
  console.log(
    "🚀 ~ fzjcBoxClick ~ item.location.split(','):",
    item.location.split(",").map((item) => parseFloat(item))
  );
  useDialogTabs.addPosition(item.location.split(",").map((item) => parseFloat(item))); // 添加全景位置
  useDialogTabs.addRQ(item); // 添加燃气数据
  let data = {
    title: item.wranLocation + " " + item.zb + " 风险监测",
    comIDs: [],
    SiteNo: item.siteNo,
    RefName: "RQ_FengXianJianCe",
  };

  getTabsList(item.siteNo).then((res) => {
    data.comIDs = res;
    bus.emit("publicDialog", data);
  });
};

// 风险
const FengXianClick = (item) => {
  // let data = {
  //   title: item.zb + " 风险监测",
  //   comIDs: ["RQ_FengXianJianCe"],
  // };
  // bus.emit("publicDialog", data);
  // 传给组件数据
  // AllData.TableChangeNo
  useDialogTabs.addPosition(AllData.TableChangePosition); // 添加全景位置
  useDialogTabs.addRQ(item); // 添加燃气数据
  let data = {
    title: AllData.TableChangeName + " " + item.zb + " 风险监测",
    comIDs: [],
    SiteNo: AllData.TableChangeNo,
    RefName: "RQ_FengXianJianCe",
  };

  getTabsList(AllData.TableChangeNo).then((res) => {
    data.comIDs = res;
    bus.emit("publicDialog", data);
  });

  // setTimeout(() => {
  //   bus.emit("getDataListFxjc", item);
  // }, 500);
  // setTimeout(() => {
  //   bus.emit('streetPosition', AllData.TableChangePosition);
  // }, 200);
};

// 现场连线
const XianChangLianXian = (item) => {
  bus.emit("OpenRY");
};

// 发布预警
const WarningClick = (item) => {
  let data = {
    title: "发布预警",
    comIDs: ["RQ_Warning"],
  };
  bus.emit("publicDialog", data);

  setTimeout(() => {
    bus.emit("RQ_PrimaryType", 1);
  });
};

watch(
  () => props.showPanel,
  () => {
    showPanel.value = props.showPanel;
  },
  { immediate: true }
);
//燃气超标
const showIndexOver = () => {
  bus.emit("removeMapDatas", AllData.xunChaLayers);
  let key = "warning_monitor";
  bus.emit("getGeojsonByType", {
    type: key,
    callback: (geojson) => {
      if (!!!geojson.features.length)
        bus.emit("setGeoJSON", { json: yanAnRQoverindex, key: "warning_monitor" });
      bus.emit("setLayerVisible", { type: "point", layername: key, isCheck: true });
    },
  });
  newfiberMapbox.map.easeTo({
    center: [109.488, 36.596],
    zoom: 13,
  });
};
//燃气告警
const showIndexWarning = () => {
  bus.emit("removeMapDatas", AllData.xunChaLayers);
  let key = "warning_monitor";
  bus.emit("getGeojsonByType", {
    type: key,
    callback: (geojson) => {
      if (!!!geojson.features.length)
        bus.emit("setGeoJSON", { json: yanAnWarring, key: "warning_monitor" });
      bus.emit("setLayerVisible", { type: "point", layername: key, isCheck: true });
    },
  });
  newfiberMapbox.map.easeTo({
    center: [109.488, 36.596],
    zoom: 13,
  });
};

// 辅助决策
const getCommonWarningList = async () => {
  try {
    const res = await commonWarningList({ moduleType: "Gas" });
    JCData.value = res.data;
    // console.log('🚀 ~ getCommonWarningList ~ res:', res);
  } catch (error) {
    console.log("🚀 ~ getCommonWarningList ~ error:", error);
  }
};

const fxjsChange = (item) => {
  // TableChangeIndex: 1,
  // TableChangeNo: 'RQ20240001',
  AllData.TableChangeIndex = item.id;
  AllData.TableChangeNo = item.siteNo;
  AllData.TableChangeName = item.name;
  AllData.TableChangePosition = item.position;
};

// 获取站点弹窗 tab列表
const getTabsList = async (siteNo) => {
  try {
    const res = await selectBoxBySiteNo(siteNo);
    const tabsList = res.data.boxList.map((item) => item.boxId);
    return tabsList;
  } catch (error) {
    console.log("🚀 ~ getTabsList ~ error:", error);
  }
};
// 展示四色图
const ShowSiSetu = (bol) => {
  bus.emit("SetLayerShow", ["燃气风险评估"]);
  // bus.emit("SiSeTuBol", true);
};
onMounted(() => {
  let initeRQTimer = setInterval(() => {
    if (!newfiberMapbox) return;
    if (!newfiberMapbox.map.getLayer("rq_pipeline_info")) return;
    if (!newfiberMapbox.map.getLayer("sx_ya_smx_rq_point")) return;
    newfiberMapbox.map.easeTo({
      center: [109.488, 36.596],
      zoom: 12,
    });
    //告警点事件
    let warningPoint = newfiberMapbox
      .getLayers()
      .filter((feature) => feature.newfiberId == "warning_monitor")[0];
    if (warningPoint) {
      warningPoint.on("click", (e) => {
        let popupData = e.feature.properties;

        debugger;
        console.log("popupData---", "告警---------", popupData);
        FengXianClick({
          zb: "甲烷浓度",
          sz: "3%",
          szzt: true,
          zt: 0, //0预警 1 正常
          value: "JWND",
        });
      });
    }
    bus.emit("setLayerVisible", { layername: "rq_SZLH", isCheck: true }); //所有管网rq_all、市政rq_SZLH、庭院rq_TYLH、立管rq_LGLH、其他rq_other
    bus.emit("setLayerVisible", { layername: "rq_SZLH", isCheck: true });
    bus.emit("setLayerVisible", { layername: "sx_ya_smx_rq_line_sz", isCheck: true });
    bus.emit("setLayerVisible", { layername: "rq_TYLH", isCheck: true });
    bus.emit("setLayerVisible", { layername: "sx_ya_smx_rq_line_zg", isCheck: true });
    clearInterval(initeRQTimer);
  }, 100);
  initEcharts(1);
  initEcharts2();
  getCommonWarningList();
});
onBeforeUnmount(() => {
  clearTimeout(AllData.timer);
  bus.emit("setLayerVisible", { layername: "rq_all", isCheck: false });
  bus.emit("setLayerVisible", { layername: "rq_SZLH", isCheck: false });
  bus.emit("setLayerVisible", { layername: "rq_TYLH", isCheck: false });
  bus.emit("setLayerVisible", { layername: "rq_LGLH", isCheck: false });
  bus.emit("setLayerVisible", { layername: "rq_other", isCheck: false });
  bus.emit("removeMapDatas", AllData.xunChaLayers);
  bus.emit("removeMapDatas", ["warning_monitor"]);
  bus.emit("setLayerVisible", { layername: "warning_monitor", isCheck: false });
  bus.emit("closeCesiumPopup");
  bus.emit("SetLayerShow", ["蓝色地图"]);
  mapBoxVectorLayer.removeByIds(["clickPoint"]);
  bus.emit("closeCesiumPopup");
  if (!!newfiberMapbox.getLayerByName("rqLine")) {
    newfiberMapbox.removeLayer(newfiberMapbox.getLayerByName("rqLine"));
  }
});
</script>

<style lang="scss" scoped>
@import "@/assets/styles/transition_oneMap.scss";
#ZHRQ {
  .warningPrompt {
    position: absolute;
    top: 120px;
    left: 970px;
    width: 670px;
    height: 34px;
    border-radius: 48px;
    transform: translateX(-50%);
    z-index: 20;
    padding: 0 12px;
    font-size: 14px;
    font-weight: 400;
    color: #ffffff;
    border: 1px solid #ff0303;
    animation: blink 1s linear infinite;
    span {
      margin: 0 2px;
    }
    @keyframes blink {
      0% {
        box-shadow: 0 0 0 rgba(255, 3, 3, 0.1) inset;
      }
      50% {
        box-shadow: 0 0 10px rgba(255, 3, 3, 0.6) inset;
      }
      100% {
        box-shadow: 0 0 20px rgba(255, 3, 3, 0.8) inset;
      }
    }
  }
  .radBg {
    display: block;
    line-height: 22px;
    background: linear-gradient(180deg, #5c0000 0%, #ff0000 100%);
    border-radius: 2px 2px 2px 2px;
    border: 1px solid #ff5449;
    padding: 0 3px;
  }
  .LeftBox {
    width: 450px;
    height: calc(100% - 98px);
    position: absolute;
    left: 10px;
    top: 70px;
    // background: linear-gradient(
    //   0deg,
    //   rgba(0, 43, 67, 0.8) 0%,
    //   rgba(0, 69, 108, 0.8) 100%
    // );
    // border-radius: 6px;
    // border: 1px solid #47eef3;
    // box-shadow: inset 0 0 5px 5px #47eef38a;
    box-sizing: border-box;
    padding: 10px;
    z-index: 999;
    background: linear-gradient(0deg, rgba(4, 34, 84, 0.8) 0%, rgba(4, 34, 84, 0.8) 100%);
    border-radius: 6px;
    border: 1px solid #4aa4ff;
    box-shadow: inset 0 0 5px 5px #4aa4ff8a;

    .LeftBox1_1 {
      height: 365px;

      .TJListBox {
        height: 42px;
        margin-top: 10px;
        width: 100%;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: space-between;
        align-items: center;

        .TJList {
          height: 42px;
          width: calc(50% - 9px);
          display: flex;
          .TJListImg {
            width: 22px;
            height: 22px;
            margin: 9px;
          }
          .TJListName {
            font-family: Source Han Sans CN;
            font-weight: 400;
            font-size: 14px;
            color: #f4f9ff;
            width: 65px;
            height: 40px;
            line-height: 40px;
          }

          .TJListValue {
            font-family: Source Han Sans CN;
            font-weight: bold;
            font-size: 20px;
            width: calc(100% - 110px);
            height: 40px;
            line-height: 40px;
            text-align: right;
          }
        }

        .TJList_RQ {
          background: rgba(7, 54, 102, 0.3);
          border-radius: 4px;
          border: 1px solid #15d2fd;
          box-shadow: inset 0 0 10px #15d2fdb0; /* 水平偏移|垂直偏移|模糊半径|颜色 */
          cursor: pointer;

          .TJListValue {
            color: #12f9ff;
          }
        }
        .TJList_GZ {
          background: rgba(164, 74, 8, 0.3);
          border-radius: 4px;
          border: 1px solid #ffd97f;
          box-shadow: inset 0 0 10px #ffd97fb0; /* 水平偏移|垂直偏移|模糊半径|颜色 */
          .TJListValue {
            color: #ffd97f;
          }
        }
      }
      .RQ_EchartsBox {
        width: 100%;
        height: calc(100% - 72px);
        margin-top: 10px;
        // background: url("@/assets/images/Sponge_screen/RQ/Ech.png") no-repeat center;
        position: relative;

        .ClickDiv1 {
          width: 80px;
          height: 250px;
          // background: #ff000063;
          position: absolute;
          bottom: 0px;
          left: 60px;
          cursor: pointer;
        }
        .ClickDiv2 {
          width: 80px;
          height: 250px;
          // background: #ff000063;
          position: absolute;
          bottom: 0px;
          left: 160px;
          cursor: pointer;
        }
        .ClickDiv3 {
          width: 80px;
          height: 250px;
          // background: #ff000063;
          position: absolute;
          bottom: 0px;
          left: 255px;
          cursor: pointer;
        }
        .ClickDiv4 {
          width: 80px;
          height: 250px;
          // background: #ff000063;
          position: absolute;
          bottom: 0px;
          left: 340px;
          cursor: pointer;
        }
      }
    }
    .LeftBox1_2 {
      height: calc(100% - 365px - 275px - 10px);
      margin-bottom: 10px;
      // 风险监测
      .TJListBox {
        height: 42px;
        margin-top: 10px;
        width: 100%;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: space-between;
        align-items: center;
        .TJList2 {
          height: 42px;
          width: calc(50% - 9px);
          display: flex;
          background: url("@/assets/images/Sponge_screen/RQ/RQ_FX.png") no-repeat center;
          background-size: 100% 100%;
          cursor: pointer;

          .TJList2Name {
            width: 50%;
            font-family: Source Han Sans CN;
            font-weight: 400;
            font-size: 14px;
            color: #f4f9ff;
            height: 40px;
            line-height: 40px;
            text-align: left;
            box-sizing: border-box;
            padding-left: 20px;
          }
          .TJList2Value {
            width: 50%;
            font-family: Source Han Sans CN;
            font-weight: bold;
            font-size: 20px;
            color: #15d2fd;
            height: 40px;
            line-height: 40px;
            text-align: center;
          }
        }
      }
      .TableChange {
        height: 42px;
        width: 100%;
        box-sizing: border-box;
        padding: 10px 0px;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: flex-end;
        align-items: center;

        .TableChangeList {
          width: auto;
          height: 22px;
          background: #0d4c7d;
          color: #ffffff;
          border-radius: 2px;
          font-family: Source Han Sans CN;
          font-weight: 500;
          font-size: 14px;
          text-align: center;
          line-height: 20px;
          cursor: pointer;
          padding: 2px 5px;
          margin-right: 3px;
        }

        .TableCheck {
          // background: #00344f;
          border-radius: 2px;
          // border: 1px solid #1cf5fc;
          background: #004285;
          border-radius: 2px;
          border: 1px solid #1c8aff;
          color: #ffffff;
          font-family: Source Han Sans CN;
          font-weight: bold;
          font-size: 12px;
          // background: #1cf4fc22;
          line-height: 16px;
        }
      }

      .TableBox {
        width: 100%;
        height: calc(100% - 94px);

        .tableHeader {
          width: 100%;
          height: 34px;
          // background: linear-gradient(0deg, #00fbffa3 0%, #00fbff00 100%);
          background: linear-gradient(0deg, #4aa4ffa3 0%, #00fbff00 100%);
          border-radius: 2px;
          border: 1px solid #004285;
          display: flex;

          .tableHeaderList {
            font-family: Source Han Sans CN;
            font-weight: 400;
            font-size: 14px;
            color: #ffffff;
            height: 34px;
            line-height: 34px;
            text-align: center;
          }
          .tableList1 {
            width: 20%;
          }
          .tableList2 {
            width: 30%;
          }
          .tableList3 {
            width: 30%;
          }
          .tableList4 {
            width: 20%;
          }
        }

        .tableBody {
          width: 100%;
          height: calc(100% - 68px);
          overflow: auto;

          .tableBodyList {
            height: 34px;
            line-height: 34px;
            width: 100%;
            display: flex;
            /* 选择偶数行 */
            &:nth-child(even) {
              // background: linear-gradient(0deg, #008599 0%, #08596d 100%);
              background: linear-gradient(
                0deg,
                rgba(21, 141, 253, 0.4) 0%,
                rgba(21, 141, 253, 0.05) 100%
              );
            }

            .tableBodyList_span1 {
              font-family: Source Han Sans CN;
              font-weight: 400;
              font-size: 14px;
              color: #ffffff;
              height: 34px;
              line-height: 34px;
              text-align: center;
              width: 20%;
              cursor: pointer;
            }
            .tableBodyList_span2 {
              font-family: Source Han Sans CN;
              font-weight: 400;
              font-size: 14px;
              color: #ffffff;
              height: 34px;
              line-height: 34px;
              text-align: center;
              width: 30%;
              cursor: pointer;
            }
            .tableBodyList_span3 {
              font-family: Source Han Sans CN;
              font-weight: 400;
              font-size: 14px;
              color: #ffffff;
              height: 34px;
              line-height: 34px;
              text-align: center;
              width: 30%;
            }
            .YJClass {
              color: #ffe243;
            }
            .tableBodyList_span4 {
              font-family: Source Han Sans CN;
              font-weight: 400;
              font-size: 14px;
              color: #ffffff;
              height: 34px;
              line-height: 34px;
              text-align: center;
              width: 20%;
              cursor: pointer;
            }
          }
        }

        .tableFoot {
          width: 100%;
          height: 34px;
          // background: linear-gradient(0deg, #008599b7 0%, #08596d91 100%);
          background: linear-gradient(
            0deg,
            rgba(21, 141, 253, 0.3) 0%,
            rgba(21, 141, 253, 0.05) 100%
          );
          font-family: Source Han Sans CN;
          font-weight: 400;
          font-size: 14px;
          color: #ebfeff;
          line-height: 34px;
          text-align: center;
        }
      }
    }
    .LeftBox1_3 {
      height: 275px;

      .TableChange2 {
        height: 42px;
        width: 200px;
        box-sizing: border-box;
        padding: 10px 0px;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: flex-end;
        align-items: center;
        position: absolute;
        top: 0px;
        right: 0px;
        z-index: 999;

        .TableChangeList2 {
          width: 60px;
          height: 22px;
          // background: #00344f;
          // border-radius: 2px;
          font-family: Source Han Sans CN;
          font-weight: 500;
          font-size: 16px;
          // color: #c1d3d4;
          background: #0d4c7d;
          border-radius: 2px;
          color: #ffffff;
          text-align: center;
          line-height: 20px;
          cursor: pointer;
          margin-right: 5px;
        }

        .TableCheck2 {
          border: 1px solid #1cf5fc;
          font-family: Source Han Sans CN;
          font-weight: bold;
          font-size: 16px;
          background: #004285;
          border-radius: 2px;
          border: 1px solid #1c8aff;
          color: #ffffff;
        }
      }
      #YJEchartsBox {
        width: 100%;
        height: 100%;
      }
    }
  }
  .RightBox {
    width: 450px;
    height: calc(100% - 98px);
    position: absolute;
    right: 10px;
    top: 70px;
    // background: linear-gradient(
    //   0deg,
    //   rgba(0, 43, 67, 0.8) 0%,
    //   rgba(0, 69, 108, 0.8) 100%
    // );
    // border-radius: 6px;
    // border: 1px solid #47eef3;
    // box-shadow: inset 0 0 5px 5px #47eef38a;
    box-sizing: border-box;
    padding: 10px;
    z-index: 999;
    background: linear-gradient(0deg, rgba(4, 34, 84, 0.8) 0%, rgba(4, 34, 84, 0.8) 100%);
    border-radius: 6px;
    border: 1px solid #4aa4ff;
    box-shadow: inset 0 0 5px 5px #4aa4ff8a;

    .RightBox1_1 {
      height: calc(100% - 298px);
      margin-bottom: 10px;
      box-sizing: border-box;
      // padding: 0 10px;

      .JCListBox {
        margin-top: 10px;
        width: 100%;
        height: 196px;
        // background: linear-gradient(0deg, #008599 0%, #08596d 100%);
        background: linear-gradient(
          0deg,
          rgba(21, 141, 253, 0.1) 0%,
          rgba(21, 141, 253, 0.5) 100%
        );
        border-radius: 4px;
        overflow: hidden;

        .JCListBox_List {
          width: 100%;
          height: 28px;
          margin-top: 10px;
          display: flex;
          flex-direction: row;
          flex-wrap: nowrap;
          justify-content: space-evenly;
          align-items: center;

          .JCListBox_List_label {
            display: inline-block;
            font-family: Source Han Sans CN;
            font-weight: 400;
            font-size: 14px;
            color: #ffffff;
            height: 28px;
            line-height: 28px;
            text-align: right;
            width: 70px;
          }
          .JCListBox_List_value {
            display: inline-block;
            border: 1px solid #4aa4ff;
            width: 290px;
            height: 28px;
            line-height: 28px;
            font-family: Source Han Sans CN;
            font-weight: 400;
            font-size: 14px;
            color: #ffffff;
            text-align: center;
          }
        }
        .JCListBox_List_BTN {
          justify-content: center;
          align-items: center;
        }
      }
    }
    .RightBox1_2 {
      height: 288px;
      .FK_headerBox {
        width: 100%;
        height: 45px;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: center;
        align-items: center;
        cursor: pointer;
        .FK_headerBox_list {
          font-family: Source Han Sans CN;
          font-weight: bold;
          font-size: 14px;
          color: #ebfeff;
          width: 100px;
          text-align: center;

          .FK_headerBox_list_colorBox1 {
            display: inline-block;
            width: 10px;
            height: 10px;
            background: #ee5777;
          }
          .FK_headerBox_list_colorBox2 {
            display: inline-block;
            width: 10px;
            height: 10px;
            background: rgba(21, 141, 253);
          }
        }
      }
      .FK_bodyBox {
        width: 100%;
        height: 200px;
        overflow: auto;
        box-sizing: border-box;
        padding: 0 30px;

        .FK_bodyBox_list {
          width: 100%;
          height: 20px;
          margin-bottom: 20px;
          display: flex;

          .FK_bodyBox_list_label {
            display: block;
            font-family: Source Han Sans CN;
            font-weight: 500;
            font-size: 14px;
            color: #ffffff;
            width: 80px;
            cursor: pointer;
          }
          .FK_BigBox {
            display: block;
            width: calc(100% - 80px);
            height: 20px;

            .FK_CenBox1 {
              display: inline-block;
              height: 20px;
              background: linear-gradient(-90deg, #f35f7f 0%, #c21439 100%);
              font-family: Source Han Sans CN;
              font-weight: bold;
              font-size: 14px;
              color: #ffffff;
              text-align: right;
              line-height: 20px;
              box-sizing: border-box;
              padding: 0 10px;
            }
            .FK_CenBox2 {
              display: inline-block;
              height: 20px;
              background: linear-gradient(
                90deg,
                rgba(21, 141, 253, 0.8) 0%,
                #0882a0 100%
              );
              font-weight: bold;
              font-size: 14px;
              color: #ffffff;
              text-align: right;
              line-height: 20px;
              box-sizing: border-box;
              padding: 0 10px;
            }
          }
        }
      }
    }
  }
  .TopBox {
    width: calc(100% - 1040px);
    height: 122px;
    position: absolute;
    left: 520px;
    top: 110px;
    background: linear-gradient(
      0deg,
      rgba(0, 43, 67, 0.8) 0%,
      rgba(0, 69, 108, 0.8) 100%
    );
    border-radius: 6px;
    border: 1px solid #47eef3;
    box-sizing: border-box;
    box-shadow: inset 0 0 5px 5px #47eef38a;
    padding: 10px;
    .TopTableHeader {
      width: 100%;
      height: 34px;
      background: linear-gradient(0deg, #00fbffa3 0%, #00fbff00 100%);
      border: 1px solid #74dde1;
      display: flex;
    }

    .TopTableBody {
      width: 100%;
      height: calc(100% - 34px);
      overflow: auto;
      // display: flex;
      // flex-direction: column;
      // flex-wrap: nowrap;

      .TopTableBody_list {
        display: inline-block;
        width: 100%;
        height: 34px;
        /* 选择偶数行 */
        &:nth-child(even) {
          background: linear-gradient(0deg, #008599 0%, #08596d 100%);
        }
      }
    }

    .TopTableListSpan {
      font-family: Source Han Sans CN;
      font-weight: 400;
      font-size: 14px;
      color: #ffffff;
      height: 34px;
      line-height: 34px;
      display: inline-block;
      box-sizing: border-box;
      overflow: hidden;
      text-overflow: ellipsis; /* 超出宽度后显示省略号 */
      white-space: nowrap; /* 限制不允许换行 */
    }
    .TopTableListSpan1 {
      width: 20%;
      text-align: left;
      padding-left: 10px;
    }
    .TopTableListSpan2 {
      width: 25%;
      text-align: center;
    }
    .TopTableListSpan3 {
      width: 20%;
      text-align: center;
    }
    .TopTableListSpan4 {
      width: 10%;
      text-align: center;
    }
    .TopTableListSpan5 {
      width: 15%;
      text-align: center;
    }
    .TopTableListSpan6 {
      width: 10%;
      text-align: right;
      padding-right: 10px;

      .TopTableListSpanImg {
        width: 15px;
        height: 19px;
        margin: 7px;
        cursor: pointer;
      }
      .TopTableListSpanImg2 {
        width: 19px;
        height: 19px;
        margin: 7px;
        cursor: pointer;
      }
    }
  }
  .bottomBox {
    width: calc(100% - 1040px);
    height: 122px;
    position: absolute;
    left: 510px;
    bottom: 180px;
    background: linear-gradient(
      0deg,
      rgba(0, 43, 67, 0.8) 0%,
      rgba(0, 69, 108, 0.8) 100%
    );
    border-radius: 6px;
    border: 1px solid #47eef3;
    box-sizing: border-box;
    box-shadow: inset 0 0 5px 5px #47eef38a;
    padding: 10px;
    .TopTableHeader {
      width: 100%;
      height: 34px;
      background: linear-gradient(0deg, #00fbffa3 0%, #00fbff00 100%);
      border: 1px solid #74dde1;
      display: flex;
    }

    .TopTableBody {
      width: 100%;
      height: calc(100% - 34px);
      overflow: auto;
      // display: flex;
      // flex-direction: column;
      // flex-wrap: nowrap;

      .TopTableBody_list {
        display: inline-block;
        width: 100%;
        height: 34px;
        /* 选择偶数行 */
        &:nth-child(even) {
          background: linear-gradient(0deg, #008599 0%, #08596d 100%);
        }
      }
    }

    .TopTableListSpan {
      font-family: Source Han Sans CN;
      font-weight: 400;
      font-size: 14px;
      color: #ffffff;
      height: 34px;
      line-height: 34px;
      display: inline-block;
      box-sizing: border-box;
      overflow: hidden;
      text-overflow: ellipsis; /* 超出宽度后显示省略号 */
      white-space: nowrap; /* 限制不允许换行 */
    }

    .TopTableListSpan1 {
      width: 25%;
      text-align: left;
      padding-left: 10px;
    }
    .TopTableListSpan2 {
      width: 25%;
      text-align: center;
    }
    .TopTableListSpan3 {
      width: 25%;
      text-align: center;
    }
    .TopTableListSpan4 {
      width: 25%;
      text-align: right;
      padding-right: 10px;
    }
  }

  // 左右两侧展示板块公共样式
  .ComBox {
    width: 100%;
    box-sizing: border-box;
    .Box_header {
      width: 100%;
      height: 43px;
      background: url("@/assets/newImgs/partBg.png") no-repeat center;
      background-size: cover;
      font-family: PangMenZhengDao;
      font-weight: 400;
      font-size: 23px;
      color: #ebfeff;
      line-height: 43px;
      box-sizing: border-box;
      padding-left: 35px;
    }

    .Box_Body {
      width: 100%;
      height: calc(100% - 43px);
      box-sizing: border-box;
      position: relative;
      overflow: auto;
    }
  }
  .color_red {
    color: #ff3f3f !important;
  }
  .IssueWarning {
    width: 40px;
    height: 60px;
    position: absolute;
    top: 100px;
    left: 480px;
    font-family: Source Han Sans CN;
    font-weight: 400;
    font-size: 13px;
    color: #ffffff;
    text-align: center;
    background: #003756;
    border-radius: 28px;
    border: 1px solid rgba(28, 138, 255, 1);
    display: flex;
    align-items: center;
    cursor: pointer;
    box-shadow: inset 0 0 5px 2px rgba(28, 138, 255, 0.5);
  }
  .TuChengImgTrue {
    transform: translateX(-460px);
    transition: all 1s ease;
  }
  .TuChengImgFalse {
    transform: translateX(0px);
    transition: all 1s ease;
  }
}
</style>