From 010ce04ba6e27f2bd603cec692d2695d7a8a3c1f Mon Sep 17 00:00:00 2001
From: web <candymxq888@outlook.com>
Date: 星期三, 07 五月 2025 08:38:18 +0800
Subject: [PATCH] fix:修改水温深度监测

---
 src/views/screen/temperature/home/index.vue |  159 +++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 117 insertions(+), 42 deletions(-)

diff --git a/src/views/screen/temperature/home/index.vue b/src/views/screen/temperature/home/index.vue
index 8ba481c..8bfe5d4 100644
--- a/src/views/screen/temperature/home/index.vue
+++ b/src/views/screen/temperature/home/index.vue
@@ -2,22 +2,42 @@
     <div class="home">
         <div class="home-bg"></div>
         <div class="home-c">
-            <div class="point">
-                <div class="point-address"></div>
-                <div class="point-message">
-                    <div class="msg-t">电站尾水出口水温监测点</div>
-                    <div class="num">
-                        <div class="item">
-                            <div class="item-t">水温:</div>
-                            <div class="item-num"><span>10</span>°C</div>
+            <div class="point" v-for="(item, index) in monitorList" :key="index"
+                 :style="{left: item.left, top: item.top}">
+                <div class="point-address" @click="handleShow(index)"></div>
+                <div class="point-message" v-show="item.showMsg">
+                    <div class="msg-box">
+                        <div class="msg-t">{{ item.pointName }}</div>
+                        <div class="num">
+                            <div class="item">
+                                <div class="item-t">水温:</div>
+                                <div class="item-num"><span>{{ item?.dataList?.find(f => f.code === selectDeep[index]).value }}</span>°C</div>
+                            </div>
+                            <div class="item">
+                                <div class="item-t">水位:</div>
+                                <div class="item-num">
+                                    <el-select
+                                        v-model="selectDeep[index]"
+                                        class="val-select"
+                                        placeholder="Select"
+                                        style="width: 10rem"
+                                    >
+                                        <el-option
+                                            v-for="item in item?.dataList"
+                                            :key="item.code"
+                                            :label='item.code'
+                                            :value="item.code"
+                                        />
+                                    </el-select>
+                                    m
+                                </div>
+                            </div>
                         </div>
-                        <div class="item">
-                            <div class="item-t">水位:</div>
-                            <div class="item-num"><span>1000</span>m</div>
+                        <div class="shebei">
+                            监测设备:
+                            <span v-if="item.isOnline === 1">设备运作正常</span>
+                            <span v-else style="color: red">设备运作异常</span>
                         </div>
-                    </div>
-                    <div class="shebei">
-                        监测设备: <span>监测设备运行正常(点击跳转)</span>
                     </div>
                 </div>
             </div>
@@ -27,72 +47,127 @@
 
 
 <script setup>
+import pointApi from '@/api/facility/point.js'
+import {ref, onMounted} from "vue";
 
+const monitorList = ref([])
+const selectDeep = ref([])
+
+// 标点配置
+const config = [
+    {left: '15%', top: '53%', showMsg: false},
+    {left: '12%', top: '68%', showMsg: false},
+]
+
+// 获取监控点列表
+const getMonitorList = () => {
+    pointApi().search({type: 1, page: 1, limit: 3}).then(res => {
+        let data = res.data.list.filter(el => el.parentId !== 0)
+        if (data.length > 2) data = data.splice(0, 1)
+        monitorList.value = data.map((item, index) => {
+            selectDeep.value[index] = item?.dataList[0].code
+            return {
+                ...item,
+                ...config[index]
+            }
+        })
+    })
+}
+
+const handleShow = (index) => {
+    monitorList.value[index].showMsg = !monitorList.value[index].showMsg;
+}
+
+onMounted(() => {
+    getMonitorList()
+})
 </script>
 
 
 <style scoped lang="scss">
-.home{
+.home {
     height: 100%;
-    .home-bg{
+
+    .home-bg {
         position: absolute;
         left: 0;
         top: 0;
         width: 100%;
         height: 100%;
-        background: url("@/assets/images/map-bg.png") no-repeat;
+        background: url("@/assets/images/tempture-bg.png") no-repeat;
         background-size: 100% 100%;
-        z-index: -1;
+        z-index: 11;
     }
-    .home-c{
+
+    .home-c {
         width: 100%;
         height: 100%;
         position: relative;
-        .point{
+        z-index: 20;
+
+        .point {
             position: absolute;
-            left: 58%;
-            bottom: 10%;
-            .point-address{
+
+            .point-address {
                 width: 35px;
                 height: 40px;
                 background: url("@/assets/images/point.png") no-repeat;
                 background-size: 100% 100%;
             }
-            .point-message{
+
+            .point-message {
                 width: 500px;
-                height: 200px;
-                background: url("@/assets/images/messageInfo-box.png") no-repeat;
+                height: 180px;
+                background: url("@/assets/images/messageInfo-right.png") no-repeat;
                 background-size: 100% 100%;
                 position: absolute;
-                left: -500px;
-                top: -100px;
+                left: 30px;
+                top: -60px;
                 padding: 30px 50px;
                 color: #fff;
-                display: flex;
-                flex-direction: column;
-                justify-content: space-between;
-                .msg-t{
+
+                .msg-box {
+                    width: 100%;
+                    height: 100%;
+                    display: flex;
+                    flex-direction: column;
+                    justify-content: space-between;
+                }
+
+                .msg-t {
                     font-size: 26px;
                     font-weight: bold;
                 }
-                .num{
+
+                .num {
                     display: flex;
                     align-items: center;
-                    gap: 50px;
-                    .item{
+                    gap: 30px;
+
+                    .item {
                         display: flex;
                         align-items: center;
-                        span{
+
+                        span {
                             display: inline-block;
-                            padding: 0 30px;
+                            padding: 0 20px;
                             font-size: 22px;
                             font-weight: bold;
                         }
-                    }
-                }
-                .shebei{
-                    span{
-                        color: #1ab394;
+                        .val-select{
+                            padding: 0 20px;
+                            :deep(.el-select__wrapper){
+                                background-color: transparent;
+                                box-shadow: 0 0 0 1px #fff inset;
+                                font-size: 20px;
+                                .el-select__caret{
+                                    color: #fff;
+                                }
+                                .el-select__placeholder{
+                                    color: #fff;
+                                }
+                            }
+                        }
                     }
                 }
             }

--
Gitblit v1.9.3