From 8f50c8203c8df64dd0a566b228bae7f69156e109 Mon Sep 17 00:00:00 2001
From: web <candymxq888@outlook.com>
Date: 星期二, 15 四月 2025 17:34:08 +0800
Subject: [PATCH] fix:添加季度选择器

---
 src/views/screen/flow/home/index.vue |  129 ++++++++++++++++++++++++++----------------
 1 files changed, 80 insertions(+), 49 deletions(-)

diff --git a/src/views/screen/flow/home/index.vue b/src/views/screen/flow/home/index.vue
index 5d8d975..dfbc0b7 100644
--- a/src/views/screen/flow/home/index.vue
+++ b/src/views/screen/flow/home/index.vue
@@ -2,34 +2,36 @@
     <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="video-box">
-                        <el-icon><VideoPlay /></el-icon>
-                    </div>
-                    <div class="info-box">
-                        <div class="info-t">水电站流量监测点</div>
-                        <div class="info-sw">水位:<span>500</span>m</div>
-                        <div class="info-ls">流速:<span>15</span>m/s</div>
-                        <div class="info-ssls">瞬时流速:<span>150</span>m/s</div>
-                        <div class="info-ljll">
-                            累计流量:
-                            <el-select
-                                v-model="selectll"
-                                class="m-2"
-                                placeholder="Select"
-                                size="small"
-                                style="width: 240px"
-                            >
-                                <el-option
-                                    v-for="(item, idx) in liuliangOptions"
-                                    :key="idx"
-                                    :label="item.label"
-                                    :value="idx"
-                                />
-                            </el-select>
-                            <span>{{ liuliangOptions[selectll].value }}</span>m/s
+            <div class="point" v-for="(item, index) in pointList" :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="video-box" :style="{backgroundImage: `url(${item.imageRul})`}">
+                            <el-icon><VideoPlay /></el-icon>
+                        </div>
+                        <div class="info-box">
+                            <div class="info-t">{{ item.pointName }}</div>
+                            <div class="info-sw">水位:<span>{{ item.waterLevel }}</span>m</div>
+                            <div class="info-ls">流速:<span>{{item.newFlow}}</span>m/s</div>
+                            <div class="info-ssls">瞬时流速:<span>{{ item.flowVelocity }}</span>m/s</div>
+                            <div class="info-ljll">
+                                累计流量:
+                                <el-select
+                                    v-model="selectll[index]"
+                                    class="m-2"
+                                    placeholder="Select"
+                                    size="small"
+                                    style="width: 240px"
+                                >
+                                    <el-option
+                                        v-for="(item, idx) in liuliangOptions"
+                                        :key="idx"
+                                        :label="item.label"
+                                        :value="item.value"
+                                    />
+                                </el-select>
+                                <span>{{ item[selectll[index]] }}</span>m/s
+                            </div>
                         </div>
                     </div>
                 </div>
@@ -40,18 +42,46 @@
 
 
 <script setup>
+import {ref, onMounted} from "vue";
+import {getHomePonit} from '@/api/screen/home/index.js'
 
-import {ref} from "vue";
-
-const selectll = ref(0)
-
-const liuliangOptions = [
-    { label: '总计流量', value: 500 },
-    { label: '日累计流量', value: 1000 },
-    { label: '周累计流量', value: 10000 },
-    { label: '月累计流量', value: 300000 },
-    { label: '年累计流量', value: 3600000 },
+// 标点配置
+const config = [
+    { left: '18%', top: '67%', showMsg: false },
+    { left: '60%', top: '12.5%', showMsg: false },
 ]
+const liuliangOptions = [
+    { label: '总计流量', value: 'totalFlow' },
+    { label: '日累计流量', value: 'dayFlow' },
+    { label: '周累计流量', value: 'weekFlow' },
+    { label: '月累计流量', value: 'monthFlow' },
+    { label: '年累计流量', value: 'yearFlow' },
+]
+
+const selectll = ref(['totalFlow', 'totalFlow'])
+const pointList = ref([])
+
+
+const getPoint = () => {
+    getHomePonit().then(res => {
+        let data = res.data
+        if(data.length > 2) data = data.splice(0, 1)
+        pointList.value = data.map((item, index) => {
+            return {
+                ...item,
+                ...config[index]
+            }
+        })
+    })
+}
+
+const handleShow = (index) => {
+    pointList.value[index].showMsg = !pointList.value[index].showMsg;
+}
+
+onMounted(() => {
+    getPoint()
+})
 
 </script>
 
@@ -65,7 +95,7 @@
         top: 0;
         width: 100%;
         height: 100%;
-        background: url("@/assets/images/map-bg.png") no-repeat;
+        background: url("@/assets/images/flow-bg.png") no-repeat;
         background-size: 100% 100%;
         z-index: 11;
     }
@@ -76,8 +106,6 @@
         z-index: 20;
         .point{
             position: absolute;
-            left: 58%;
-            top: 30%;
             .point-address{
                 width: 35px;
                 height: 40px;
@@ -87,16 +115,20 @@
             .point-message{
                 width: 600px;
                 height: 200px;
-                background: url("@/assets/images/messageInfo-box.png") no-repeat;
+                background: url("@/assets/images/messageInfo-right.png") no-repeat;
                 background-size: 100% 100%;
                 position: absolute;
-                left: -600px;
-                top: -100px;
-                padding: 30px 50px 30px 30px;
+                left: 30px;
+                top: -70px;
+                padding: 30px 30px 30px 60px;
                 color: #fff;
-                display: flex;
-                align-items: center;
-                gap: 20px;
+                .msg-box{
+                    width: 100%;
+                    height: 100%;
+                    display: flex;
+                    align-items: center;
+                    gap: 20px;
+                }
                 .video-box{
                     flex-shrink: 0;
                     width: 200px;
@@ -104,7 +136,6 @@
                     line-height: 138px;
                     text-align: center;
                     font-size: 38px;
-                    background: #cccb40;
                 }
                 .info-box{
                     height: 100%;

--
Gitblit v1.9.3