<template> <!-- 管网运行监测 --> <div class="PipelineOpera"> <div class="ListBoxHeader"> <div class="ListBoxHeader_font">管网运行监测</div> </div> <div class="Assessmentop"> <div class="tabContent"> <ul> <li class="listOne curCick" v-for="(i, index) in listData" :key="index" @click="showMapDalog(i)" > <div class="line flex flex-align-center"> <div class="lable">站点名称:</div> <div class="box flex flex-align-center flex-justcontent-center"> {{ i.siteName }} </div> <span class="box_Status" :class="i.onlineStatus == 'online' ? 'green' : 'rad'" >{{ i.onlineStatus == "online" ? "在线" : "离线" }}</span > </div> <div class="line flex flex-align-center"> <div class="lable">水<i></i>深:</div> <div class="box flex flex-align-center flex-justcontent-center"> {{ i.z || 0 }}米 </div> </div> <div class="line flex flex-align-center"> <div class="lable">风险分析:</div> <div class="box flex flex-align-center flex-justcontent-center" :class="i.riskAnalysis != '无风险' ? 'cRad' : 'cGreen'" > {{ i.riskAnalysis }} </div> </div> </li> </ul> </div> </div> </div> <!-- 泵站运行监控 --> <div class="PumpStation"> <div class="ListBoxHeader"> <div class="ListBoxHeader_font">泵站运行监控</div> <div class="select_box flex flex-r" style="margin-bottom: 0"> <el-select class="picker" popper-class="fxddPopperClass" v-model="search.stCode" placeholder="请选择节点" style="width: 200px" > <el-option v-for="item in siteData" :key="item.stCode" :label="item.stName" :value="item.stCode" /> </el-select> </div> </div> <div class="bzxq flex"> <div style="width: 65%" class="flex"> <div style="margin-left: 15px" v-if="bzname == '工况'">联系人:周晓峰</div> <div style="margin-left: 25px" v-if="bzname == '工况'">电话:1306035468</div> </div> <div class="switch flex"> <div class="head-item" v-for="(item, index) in bzList" :key="item" :class="bzname == item.name ? 'activedright' : ''" @click="bzclick(item, index)" > {{ item.name }} </div> </div> </div> <div class="PumpListBox" v-if="bzname == '工况'"> <div class="StationMc"> <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 flex"> 前水池水深 <div style="margin-top: 4px; color: #00ff00">8.9</div> <div style="margin-top: 4px">m</div> </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 class="bzsp" v-if="bzname == '视频'"> <video controls="controls" src="https://47.97.35.33:6089/video/2021/20210621.mp4" id="videoEvent" loop ></video> </div> </div> <!-- 入河排口运行监控 --> <div class="DischargeMonitor"> <div class="ListBoxHeader"> <div class="ListBoxHeader_font">调度统计</div> </div> <div class="JkMonitor"> <!-- <div class="tableHeader"> <span class="tableHeaderList tableList1">排口监测点</span> <span class="tableHeaderList tableList2">当前出流状态</span> <span class="tableHeaderList tableList3">流量(m³/h)</span> </div> <Vue3SeamlessScroll :list="FXJCData" :singleHeight="33" :singleWaitTime="1500" :hover="true" class="tableBody"> <div class="tableBodyList" v-for="item in FXJCData"> <span class="tableBodyList_span1">{{ item.pk }}</span> <span class="tableBodyList_span2" :class="item.zk == '是' ? 'green' : 'rad'">{{ item.zk }} </span> <span class="tableBodyList_span3">{{ item.ls }}</span> <span class="tableBodyList_span4" @click="spshowMapDalog(item)"> <img :src="monitor_icon" alt="" /> </span> </div> </Vue3SeamlessScroll> --> <dispatchEch /> </div> </div> </template> <script setup> import { Vue3SeamlessScroll } from "vue3-seamless-scroll"; import { ref, reactive, toRefs, onMounted, onBeforeUnmount } from "vue"; import bus from "@/bus"; import dispatchEch from "./dispatchEch.vue"; import bengzhantingzhi from "@/assets/images/fhpl/bengzhantingzhi.png"; import bengzhanyunxing from "@/assets/images/fhpl/bengzhanyunxing.png"; import { selectBoxBySiteNo } from "@/api/system/tanchuang"; import dialogTabsStore from "@/store/modules/dialogTabs"; const useDialogTabs = dialogTabsStore(); const bzList = ref([ { name: "工况", value: 1 }, { name: "视频", value: 2 }, ]); const bzname = ref("工况"); function bzclick(val) { bzname.value = val.name; } const listData = ref([ // { // siteName: "东关大街与长青路交叉口", // siteStatus: "在线", // warnInfo: "无风险", // siteNo: "2024101618", // }, // { // siteName: "大桥街与延河西路交叉口", // siteStatus: "离线", // warnInfo: "无风险", // siteNo: "2024101619", // }, // { siteName: "文化沟路与延河西路交叉口", siteStatus: "在线", warnInfo: "无风险" }, { siteName: "东关大街与长青路交叉口", onlineStatus: "online", riskAnalysis: "无风险", siteNo: "2024101612", position: "109.504561,36.60637", }, { siteName: "大桥街与延河西路交叉口", onlineStatus: "online", riskAnalysis: "无风险", siteNo: "2024101613", position: "109.497323,36.60318", }, { siteName: "文化沟路与延河西路交叉口", siteStatus: "在线", riskAnalysis: "无风险", siteNo: "2024101634", position: "109.480944,36.613436", }, ]); const search = ref({ stCode: 1, }); const siteData = [ { stName: "罗家坪排涝泵站", stCode: 1, }, ]; const FXJCData = ref([ { pk: "广通排口", zk: "是", ls: "0.1", }, { pk: "东三巷排口", zk: "否", ls: "0.0", }, { pk: "延河西路排口", zk: "否", ls: "0.0", }, { pk: "西沟大桥西排口1", zk: "否", ls: "0.0", }, { pk: "西沟大桥西排口2", zk: "否", ls: "0.0", }, ]); const list = [ { name: "1#泵", status: 1, }, { name: "2#泵", status: 0, }, { name: "3#泵", status: 0, }, { name: "4#泵", status: 1, }, ]; // const showPipe = ref(false); // 弹框 function showMapDalog(val) { console.log(val.siteName, "val.siteName"); useDialogTabs.addPosition(val.position.split(",").map((item) => parseFloat(item))); let data = { title: val.siteName, // comIDs: ['gwpm', 'jcsj'], comIDs: [], //满溢监测 SiteNo: val.siteNo, }; getTabsList(val.siteNo).then((res) => { // console.log('🚀 ~ getTabsList ~ res:', res); data.comIDs = res; bus.emit("publicDialog", data); }); // showPipe.value = true; } // 积水弹框 function spshowMapDalog(val) { let data = { title: val.pk, comIDs: ["spjk"], }; bus.emit("publicDialog", data); // showPipe.value = true; } // 获取站点弹窗 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); } }; </script> <style lang="scss" scoped> .PipelineOpera { width: 450px; height: 33%; // background: yellow; .Assessmentop { position: relative; margin: 0 auto; width: 440px; height: calc(100% - 60px); // background: #0fcd22; .tabContent { height: calc(100% - 1px); ul { height: 100%; // overflow: hidden; overflow-y: auto; padding: 0 16px; list-style: none; cursor: pointer; .listOne { margin-top: 5px; background: linear-gradient(0deg, #003c99 0%, #1d448d 100%); border-radius: 4px; padding: 2px 20px; .line { position: relative; padding: 6px 0; overflow: hidden; .lable { width: 80px; font-size: 14px; font-weight: 400; color: #39f7ff; padding-right: 4px; i { display: inline-block; width: 28px; } span { display: inline-block; width: 7px; } } .lable2 { width: 190px; } .box { // height: 26px; width: 240px; padding: 3px 0; line-height: 20px; border-radius: 2px 2px 2px 2px; border: 1px solid #1cf5fc; text-align: center; font-size: 14px; font-weight: 400; color: #ffffff; } .box_Status { font-size: 16px; } .box2 { width: 120px; } span { display: block; padding: 0 6px; line-height: 18px; margin-left: 10px; font-size: 12px; border: 1px solid #b7b7b7; border-radius: 14px; color: #b7b7b7; background: rgba(183, 183, 183, 0.15); white-space: nowrap; &.rad { border-color: #ff3737; color: #ff3737; background: rgba(255, 55, 55, 0.15); } &.green { border-color: lime; color: lime; background: rgba(12, 134, 24, 0.15); } } } } } } } } .PumpStation { width: 450px; height: 28%; margin-top: 3px; .bzxq { margin-top: 5px; color: #c6c6c6; height: 25px; font-family: Source Han Sans CN; align-items: center; .switch { position: relative; left: 0; top: 5px; width: 35%; height: 25px; .head-item { width: 70px; margin-left: 5px; padding: 2px 3px; background: #0d4c7d; height: 23px; text-align: center; cursor: pointer; position: relative; top: -3px; } .activedright { border: 1px solid #1c8aff; color: #e4f5ff; background: #004285; } } } .PumpListBox { height: calc(100% - 80px); width: 435px; margin: 3px auto; .StationMc { width: 435px; height: 50px; .drcpl { width: 280px; 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: 16px; font-weight: 400; color: #ffffff; margin-left: 25px; } } .StationList { width: 435px; height: calc(100% - 50px); align-items: center; .item { padding-left: 5px; margin-top: 13px; 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; } } } } .bzsp { height: calc(100% - 80px); width: 435px; margin: 3px auto; #videoEvent { width: 100%; height: 100%; } } } .DischargeMonitor { width: 450px; height: 34%; margin-top: 15px; .JkMonitor { margin: 5px auto; width: 430px; height: calc(100% - 50px); } } .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; } // 搜索 .select_box { width: 48%; margin-bottom: 8px; } } ::-webkit-scrollbar { width: 5px; /* 设置滚动条的宽度 */ } </style>