Newer
Older
urbanLifeline_YanAn / src / views / oneMap / FloodStuationReview / xqRightBox.vue
@zhangqy zhangqy on 12 Nov 23 KB 样式调整
<template>
  <!-- 预警回顾 -->
  <div class="WarningReview">
    <div class="ListBoxHeader">
      <div class="ListBoxHeader_font">预警回顾</div>
      <div class="ListBoxHeader_Sel">
        <div class="tabs flex">
          <div
            class="tabItem"
            v-for="(item, index) in ListBox"
            :key="item"
            :class="{ active: activedname === item.name }"
            @click="Listclick(item, index)"
          >
            {{ item.name }}
          </div>
        </div>
      </div>
    </div>
    <div class="Warning_Box" v-if="activedname == '水雨情'">
      <div class="flex flex-r button_box_list">
        <div
          class="button_box flex flex-1 flex-justcontent-center flex-align-center"
          v-for="(item, index) in munuList"
          :key="index"
          :class="[activeIndex == index ? 'activeClass' : '']"
          @click="activeIndex = index"
        >
          {{ item.name }}
        </div>
      </div>
      <div class="Warning_Echarts">
        <WarningEcharts :data="chartData1" :refresh="chartData1.refresh1" />
      </div>
    </div>
    <div class="Warning_Box_tp" v-if="activedname == '险情'">
      <yhhsqEch :data="YhList" :refresh="ryRefresh3" />
    </div>

    <div class="Warning_Box_gq" v-if="activedname == '工情'">
      <div class="flex flex-justcontent-spacebetween">
        <div class="drcpl">
          <div class="percent" style="width: 70%">
            <div class="round"></div>
            <div class="text">当日抽排量</div>
            <div class="value">878.9m³</div>
          </div>
        </div>
        <div class="percentVal flex-1">70%</div>
      </div>
      <div class="info flex flex-justcontent-spacebetween">
        <div class="flex">
          <div class="circle"></div>
          <div>累计抽排量</div>
          <div class="value">108.9</div>
          <div>万m³</div>
        </div>
        <div class="flex">
          <div class="circle"></div>
          <div>前水池水位</div>
          <div class="value">8.9</div>
          <div>m</div>
        </div>
      </div>
      <div class="StationList flex flex-justcontent-start">
        <div class="item" v-for="item in list" :key="item.name">
          <div class="img">
            <img :src="bengzhanyunxing" alt="" v-if="item.status == 1" />
            <img :src="bengzhantingzhi" alt="" v-else />
          </div>
          <div class="name">{{ item.name }}</div>
        </div>
      </div>
    </div>
  </div>
  <!-- 监测告警 -->
  <div class="MonitoringAlarms">
    <div class="ListBoxHeader">
      <div class="ListBoxHeader_font">监测告警</div>
    </div>
    <div class="csyld">
      <div class="tabs flex flex-justcontent-spacebetween">
        <div class="tabItem">管网报警(8个)</div>
        <div class="tabItem">积水报警(2个)</div>
        <div class="tabItem">排口告警(1个)</div>
      </div>
      <div class="table_content">
        <div class="tableHeader">
          <span class="tableHeaderList tableList1">告警位置</span>
          <span class="tableHeaderList tableList2">监测数值</span>
          <span class="tableHeaderList tableList3">设防阈值</span>
          <span class="tableHeaderList tableList4">告警时间</span>
        </div>

        <Vue3SeamlessScroll
          :list="FXJCData"
          :singleHeight="34"
          :singleWaitTime="1500"
          :hover="true"
          class="tableBody"
        >
          <div class="tableBodyList" v-for="item in FXJCData">
            <span class="tableBodyList_span1">{{ item.zb }}</span>
            <span class="tableBodyList_span2"> {{ item.zt }}</span>
            <span class="tableBodyList_span3">{{ item.szzt }}</span>
            <span class="tableBodyList_span4">
              {{ item.sz }}
            </span>
          </div>
        </Vue3SeamlessScroll>
      </div>
    </div>
  </div>
  <!-- 警情动态 -->
  <div class="PoliceSituation">
    <div class="ListBoxHeader">
      <div class="ListBoxHeader_font">警情动态</div>
      <!-- <div class="ListBoxHeader_Sel">
        <div class="tabs flex">
          <div
            class="tabItem"
            v-for="(item, index) in ListBoxJq"
            :key="item"
            :class="{ active: activedJq === item.name }"
            @click="ListclickJq(item, index)"
          >
            {{ item.name }}
          </div>
        </div>
      </div> -->
    </div>
    <div class="PoliceLisy">
      <div class="jqtabs flex flex-justcontent-spacebetween">
        <div
          class="tabItem flex"
          v-for="(item, index) in jqdtList"
          :key="index"
          :class="{ active: jqdtname === item.name }"
          @click="jqdtclick(item, index)"
        >
          <div class="tabItem_one">
            <span class="ycl">
              <img :src="item.Imgurl" class="upImg" />
            </span>
            <span style="margin-left: 5px">{{ item.name }}</span>
          </div>
          <div
            class="tabItem_two"
            :style="{
              color:
                item.value == 30
                  ? '#00F294FF'
                  : item.value == 9
                  ? '#00E7FCFF'
                  : '#FFC30EFF',
            }"
          >
            {{ item.value }}
          </div>
        </div>
      </div>
      <div class="problem">
        <div class="problemItem" v-for="item in problemList">
          <div class="problemOne flex flex-align-center flex-justcontent-center">
            <div>{{ item.num }}</div>
          </div>
          <div class="problemText">
            <div class="problemTextTop">
              <div class="problemContent">{{ item.remark }}</div>
              <div class="problemContent">{{ item.address }}</div>
              <div class="problemContent">{{ item.person }} {{ item.phone }}</div>
            </div>
            <div class="problemTextBottom">
              <div class="problemContent">上报:{{ item.startTime }}</div>
              <div class="problemContent">截止:{{ item.endTime }}</div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script setup>
import { ref, reactive, toRefs, onMounted, onBeforeUnmount } from "vue";
import yhhsqEch from "@/views/oneMap/floodPrevention/yhhsqEch.vue";
import WarningEcharts from "@/views/oneMap/Echarts/WarningEcharts.vue";
import { Vue3SeamlessScroll } from "vue3-seamless-scroll";
import bengzhantingzhi from "@/assets/images/fhpl/bengzhantingzhi.png";
import bengzhanyunxing from "@/assets/images/fhpl/bengzhanyunxing.png";

import clz from "@/assets/images/fhpl/clz.png"; //
import wcl from "@/assets/images/fhpl/wcl.png"; //
import ycl from "@/assets/images/fhpl/ycl.png"; //
const YhList = ref({});
const ryRefresh3 = ref("");
const list = [
  {
    name: "1#泵",
    status: 1,
  },
  {
    name: "2#泵",
    status: 0,
  },
  {
    name: "3#泵",
    status: 0,
  },

  {
    name: "4#泵",
    status: 1,
  },
];
const problemList = ref([
  {
    remark: "雨水箅子堵塞",
    address: "王家坪路",
    person: "陈先生",
    phone: "13700210026",
    startTime: "2024-10-17 10:13:43",
    endTime: "2024-10-19 10:13:43",
    num: "01",
  },
  {
    remark: "道路积水",
    address: "百米大道",
    person: "刘先生",
    phone: "15991561185",
    startTime: "2024-10-17 10:13:43",
    endTime: "2024-10-19 10:13:43",
    num: "02",
  },
  {
    remark: "雨水箅子堵塞",
    address: "凤凰广场",
    person: "张小姐",
    phone: "15191105280",
    startTime: "2024-10-17 10:13:43",
    endTime: "2024-10-19 10:13:43",
    num: "03",
  },
  {
    remark: "雨水井盖丢失",
    address: "百合花园",
    person: "黄先生",
    phone: "13638648812",
    startTime: "2024-10-17 13:24:41",
    endTime: "2024-10-17 13:24:41",
    num: "04",
  },
]);
const ListBox = ref([
  { name: "水雨情", value: 1 },
  { name: "险情", value: 2 },
  { name: "工情", value: 3 },
]);
const ListBoxJq = ref([
  { name: "值守上报", value: 1 },
  { name: "公众电话", value: 2 },
]);
const activedname = ref("水雨情");
const activedJq = ref("值守上报");
const jqdtname = ref("已处理");

const jqdtList = ref([
  { name: "已处理", value: 4, Imgurl: ycl },
  { name: "未处理", value: 1, Imgurl: wcl },
  { name: "处理中", value: 3, Imgurl: clz },
]);

// 点击事件
function Listclick(val) {
  console.log(val, "val");
  activedname.value = val.name;
  console.log(activedname.value, "  activedname.value");
}

function jqdtclick(val) {
  jqdtname.value = val.name;
  if (jqdtname.value == "已处理") {
    problemList.value = [
      {
        remark: "雨水箅子堵塞",
        address: "王家坪路",
        person: "陈先生",
        phone: "13700210026",
        startTime: "2024-10-17 10:13:43",
        endTime: "2024-10-19 10:13:43",
        num: "01",
      },
      {
        remark: "道路积水",
        address: "百米大道",
        person: "刘先生",
        phone: "15991561185",
        startTime: "2024-10-17 10:13:43",
        endTime: "2024-10-19 10:13:43",
        num: "02",
      },
      {
        remark: "雨水箅子堵塞",
        address: "凤凰广场",
        person: "张小姐",
        phone: "15191105280",
        startTime: "2024-10-17 10:13:43",
        endTime: "2024-10-19 10:13:43",
        num: "03",
      },
      {
        remark: "雨水井盖丢失",
        address: "百合花园",
        person: "黄先生",
        phone: "13638648812",
        startTime: "2024-10-17 13:24:41",
        endTime: "2024-10-17 13:24:41",
        num: "04",
      },
    ];
  } else if (jqdtname.value == "未处理") {
    problemList.value = [
      {
        remark: "水域不洁",
        address: "延河彩虹桥处",
        person: "鲁先生",
        phone: "15592914583",
        startTime: "2024-10-17 14:24:41",
        endTime: "2024-10-19 14:24:41",
        num: "01",
      },
    ];
  } else {
    problemList.value = [
      {
        remark: "排水管道堵塞",
        address: "大砭沟与北大街",
        person: "张先生",
        phone: "18391128539",
        startTime: "2024-10-17 14:24:48",
        endTime: "2024-10-17 14:24:48",
        num: "01",
      },
      {
        remark: "雨水箅子堵塞",
        address: "大砭沟与北大街",
        person: "张先生",
        phone: "18391128539",
        startTime: "2024-10-17 14:24:48",
        endTime: "2024-10-17 14:24:48",
        num: "02",
      },
      {
        remark: "排水管道堵塞",
        address: "百米大道",
        person: "陈女生",
        phone: "13700210026",
        startTime: "2024-10-19 14:43:15",
        endTime: "2024-10-19 14:43:15",
        num: "03",
      },
    ];
  }
}

function ListclickJq(val) {
  activedJq.value = val.name;
}

const activeIndex = ref(0);
const munuList = [
  {
    name: "管网(29)",
  },
  {
    name: "积水点(16)",
  },
  {
    name: "排口(24)",
  },
];
const chartData1 = ref({
  xAxis: [
    "1号点",
    "2号点",
    "3号点",
    "4号点",
    "5号点",
    "6号点",
    "7号点",
    "8号点",
    "9号点",
  ],
  yAxis: [1.1, 1.3, 2, 1.25, 1.1, 3, 3.5, 1.3, 3.8, 1.2, 2, 1], //最高流量
  yAxis2: [0.1, 0.2, 0.3, 0.2, 0.1, 0.4, 0.5, 0.23, 0.6, 0.1, 0.2, 0.1], //最高水位
  refresh: 1,
});
const FXJCData = ref([
  {
    zb: "延河西路管网",
    sz: "11-12  14:23:12",
    szzt: "300mm",
    zt: "水深:450mm",
  },
  {
    zb: "二道街管网",
    sz: "11-12  14:23:13",
    szzt: "300mm",
    zt: "水深:345mm",
  },
  {
    zb: "王家坪旧址门口",
    sz: "11-12  14:23:14",
    szzt: "30mm",
    zt: "水深:55mm",
  },
  {
    zb: "东三巷排口",
    sz: "11-12  14:23:15",
    szzt: "10m³/h",
    zt: "流量:43m³/h",
  },
]);
// 延河
function getDataYh() {
  let obj = {
    listName: ["安塞水文站", "延安水文站", "甘谷驿水文站"],
    diduan: ["1200", "1600", "2000"],
    zhengzhi: ["100", "120", "130"],
  };
  YhList.value = obj;
  ryRefresh3.value = Math.random();
}
onMounted(() => {
  getDataYh();
});
</script>

<style lang="scss" scoped>
.WarningReview {
  width: 450px;
  height: 33%;
  // background: rgb(204, 184, 184);
  .Warning_Box {
    margin: 5px auto;
    width: 435px;
    height: calc(100% - 60px);
    .button_box_list {
      width: 100%;
      height: 40px;
      background: url("@/assets/images/fhpl/bj_img.png") no-repeat;
      background-size: 100% 100%;
      margin-top: 10px;
      padding: 0 10px;
      .button_box {
        position: relative;
        left: 5px;
        top: 2px;
        height: 36px;
        width: 120px;
        // background: #00344f;
        border-radius: 6px;
        font-family: Source Han Sans CN;
        font-weight: 500;
        font-size: 16px;
        color: #ffffff;
        margin-right: 9px;
        cursor: pointer;
      }
      .activeClass {
        background: url("@/assets/images/fhpl/Select_img.png") no-repeat;
        background-size: 100% 100%;
        // background: red;
        color: #fdffff;
      }
    }
    .Warning_Echarts {
      margin-top: 8px;
      height: calc(100% - 50px);
      // background: rgb(228, 223, 223);
    }
  }
  .Warning_Box_tp {
    margin: 10px auto;
    width: 420px;
    height: calc(100% - 65px);
    // background: url("@/assets/images/fhpl/sqjca.png") no-repeat;
    // background-size: 100% 100%;
  }
  .Warning_Box_gq {
    margin: 5px auto;
    width: 435px;
    height: calc(100% - 65px);
    // background: yellow;
    .drcpl {
      width: 360px;
      height: 22px;
      background: #155a89;
      border-radius: 11px;
      color: #fff;
      margin-top: 15px;
      .percent {
        position: relative;
        height: 100%;
        background: linear-gradient(90deg, #0066e5, #00b6ff);
        border-radius: 11px;
        .round {
          position: absolute;
          left: 4px;
          top: 3px;
          width: 16px;
          height: 16px;
          background: #02fff0;
          border-radius: 50%;
        }
        .text {
          position: absolute;
          left: 36px;
          top: 3px;
        }
        .value {
          position: absolute;
          right: 10px;
          top: 4px;
        }
      }
    }
    .percentVal {
      margin-top: 15px;
      color: #fff;
      font-size: 18px;
      font-weight: 400;
      color: #ffffff;
      margin-left: 30px;
    }
    .info {
      color: #fff;
      height: 32px;
      background: linear-gradient(
        0deg,
        rgba(26, 109, 255, 0.2) 0%,
        rgba(40, 193, 250, 0.2) 100%
      );
      border-radius: 3px;
      padding: 0 20px;
      margin-top: 15px;
      line-height: 30px;

      > div {
        .circle {
          width: 7px;
          height: 7px;
          border-radius: 50%;
          margin-right: 5px;
        }
        .value {
          font-size: 18px;
          margin-left: 5px;
          margin-right: 3px;
        }
        &:nth-of-type(1) {
          .circle {
            background-color: rgba(58, 255, 248, 1);
            position: relative;
            top: 11px;
          }
          .value {
            color: rgba(58, 255, 248, 1);
          }
        }
        &:nth-of-type(2) {
          .circle {
            background-color: rgba(24, 232, 122, 1);
            position: relative;
            top: 11px;
          }
          .value {
            color: rgba(24, 232, 122, 1);
          }
        }
      }
    }
    .StationList {
      height: calc(100% - 100px);
      margin-top: 15px;
      // background: red;
      .item {
        padding-left: 5px;
        margin-top: 15px;
        margin-left: 48px;
        &:first-of-type {
          margin-left: 0;
        }
        .img {
          width: 66px;
          height: 66px;
          cursor: pointer;
          img {
            display: block;
            width: 100%;
            height: 100%;
          }
        }
        .name {
          text-align: center;
          color: #fff;
          font-size: 16px;
        }
      }
    }
  }
}
.MonitoringAlarms {
  width: 450px;
  height: 32%;
  // background: rgb(199, 28, 28);
  .csyld {
    margin: 5px auto;
    width: 430px;
    height: calc(100% - 55px);
    // background: rgb(204, 184, 184);
    .tabs {
      height: 36px;
      color: #fff;
      margin-bottom: 5px;
      // background: red;
      font-family: Source Han Sans CN;
      font-weight: 500;
      font-size: 14px;
      .tabItem {
        width: 135px;
        line-height: 36px;
        height: 100%;
        border-radius: 6px;
        text-align: center;
        cursor: pointer;
        font-size: 16px;
        // border: 1px solid;
        &:nth-of-type(1) {
          background: linear-gradient(0deg, #8e1e1e 0%, #ca5656 100%);
          border-image: linear-gradient(0deg, #fd4d62, #ac241a) 10 10;
        }
        &:nth-of-type(2) {
          background: linear-gradient(0deg, #f1b500 0%, #d6a564 100%);

          border-image: linear-gradient(0deg, #ffb61a, #f5a100) 10 10;
        }
        &:nth-of-type(3) {
          background: linear-gradient(0deg, #0e91d5 0%, #4b7bc9 100%);
          border-image: linear-gradient(0deg, #00fcff, #0f6dc1) 10 10;
        }
      }
    }
    .table_content {
      width: 430px;
      height: calc(100% - 43px);
      .tableHeader {
        width: 100%;
        height: 34px;
        background: linear-gradient(
          0deg,
          rgba(74, 164, 255, 0.6392156863) 0%,
          rgba(0, 251, 255, 0) 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;
          // padding-left: 5px;
          // text-align: center;
        }
        .tableList1 {
          width: 30%;
          // text-align: center;
          padding-left: 10px;
        }
        .tableList2 {
          width: 20%;
          text-align: center;
        }
        .tableList3 {
          width: 20%;
          text-align: center;
        }
        .tableList4 {
          width: 30%;
          text-align: center;
        }
      }
      .tableBody {
        width: 100%;
        height: calc(100% - 35px);
        overflow: hidden;
        .tableBodyList {
          height: 34px;
          line-height: 34px;
          width: 100%;
          display: flex;
          /* 选择偶数行 */
          &:nth-child(even) {
            background: linear-gradient(
              0deg,
              rgba(21, 141, 253, 0.2) 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;
            width: 30%;
            padding-left: 10px;
          }
          .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: 20%;
          }
          .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: 20%;
          }
          .YJClass {
            color: #ffe243;
          }
          .tableBodyList_span4 {
            font-family: Source Han Sans CN;
            font-weight: 400;
            font-size: 14px;
            color: #ffffff;
            height: 34px;
            line-height: 43px;
            text-align: center;
            width: 30%;
            // background: red;
            // cursor: pointer;
          }
        }
      }
    }
  }
}
.PoliceSituation {
  width: 450px;
  height: 32%;
  .PoliceLisy {
    margin: 5px auto;
    width: 430px;
    height: calc(100% - 55px);
    // background: url('@/assets/images/fhpl/normsadal.png') no-repeat;
    // background-size: 100% 100%;
    .jqtabs {
      height: 36px;
      color: #fff;
      margin-bottom: 5px;
      .tabItem {
        width: 135px;
        line-height: 32px;
        height: 32px;
        border-radius: 6px;
        text-align: center;
        cursor: pointer;
        // border: 1px solid;
        background: #00344f;
        border-radius: 2px;
        border: 1px solid #004285;
        font-family: Source Han Sans CN;
        font-weight: 400;
        font-size: 16px;
        color: #d3f6ff;
        .tabItem_one {
          // background: red;
          width: 65%;
          display: flex;
          .ycl {
            margin-left: 5px;

            width: 20px;
            height: 20px;
          }
        }
        .tabItem_two {
          // background: rgb(202, 185, 185);
          width: 35%;
        }
        &.active {
          border: 1px solid #1c8aff;
          color: #e4f5ff;
          background: #004285;
        }
      }
    }
    .problem {
      width: 430px;
      height: calc(100% - 55px);
      overflow: auto;
      .problemItem {
        display: flex;
        height: 45px;
        background: linear-gradient(
          0deg,
          rgba(21, 141, 253, 0.2) 0%,
          rgba(21, 141, 253, 0.05) 100%
        );
        border-radius: 3px;
        margin-top: 5px;
        // opacity: 0.6;
        .problemOne {
          width: 10%;
          font-family: DIN;
          font-weight: 500;
          font-size: 16px;
          color: #ffffff;
          text-align: center;
          background: rgba(0, 36, 114, 0.8);
        }
        .problemText {
          width: 90%;
          display: flex;
          flex-direction: column;
          // background: yellow;
          .problemTextTop {
            display: flex;
            align-items: center;
            height: 50%;
            width: 98%;
            margin: 0 auto;
            // background: yellow;
            // text-align: center;
            .problemContent {
              width: 130px;
              flex-direction: row;
              flex-wrap: nowrap;
              font-weight: 300;
              font-family: Source Han Sans CN;
              font-size: 13px;
              color: #ffffff;
            }
          }
          .problemTextBottom {
            display: flex;
            justify-content: space-around;
            align-items: center;
            font-family: Source Han Sans CN;
            font-weight: 320;
            font-size: 12px;
            color: #ffffff;
            height: 50%;
            .problemContent {
              .problemContent {
                width: 130px;
                flex-direction: row;
                flex-wrap: nowrap;
                text-align: center;
              }
            }
          }
        }
      }
      // background: yellow;
      // background: url('@/assets/images/fhpl/normsadal.png') no-repeat;
      // background-size: 100% 100%;
    }
  }
}
.ListBoxHeader {
  height: 44px;
  line-height: 50px;
  width: 98%;
  background: url("@/assets/newImgs/partBg.png") no-repeat;
  background-size: 100% 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 7px 0px 0px 8px;
  .ListBoxHeader_font {
    font-family: PangMenZhengDao;
    font-weight: 400;
    font-size: 23px;
    color: #ebfeff;
    padding-left: 34px;
  }
  .ListBoxHeader_Sel {
    height: 30px;
  }
  .tabs {
    .tabItem {
      position: relative;
      right: 20px;
      line-height: 30px;
      width: 60px;
      height: 30px;
      background: #00344f;
      margin-left: 10px;
      font-size: 14px;
      color: #ffffff;
      text-align: center;
      cursor: pointer;

      &.active {
        border: 1px solid #1c8aff;
        color: #e4f5ff;
        background: #004285;
      }
    }
  }
}
::-webkit-scrollbar {
  width: 5px; /* 设置滚动条的宽度 */
}
</style>