From 8e38cc8536cfda9b6bda8548d63778cbf5f4d634 Mon Sep 17 00:00:00 2001
From: web <candymxq888@outlook.com>
Date: 星期六, 26 四月 2025 17:27:57 +0800
Subject: [PATCH] fix:添加个人中心和重置密码

---
 src/views/screen/temperature/monitor/index.vue |  145 ++++++++++++++++++++++++++++++------------------
 1 files changed, 91 insertions(+), 54 deletions(-)

diff --git a/src/views/screen/temperature/monitor/index.vue b/src/views/screen/temperature/monitor/index.vue
index 0ffcbff..89bec41 100644
--- a/src/views/screen/temperature/monitor/index.vue
+++ b/src/views/screen/temperature/monitor/index.vue
@@ -1,7 +1,7 @@
 <script setup>
-import {ref, onMounted} from "vue";
+import {ref, onMounted, onUnmounted} from "vue";
 import {getUserType} from '@/utils/auth.js'
-import {setTempMonitor} from '@/api/screen/monitor/index.js'
+import {setTempMonitor, getTempMonitorConfig, editTempMonitorConfig} from '@/api/screen/monitor/index.js'
 import {getTemperaturePointList} from '@/api/screen/index.js'
 import pointApi from '@/api/facility/point.js'
 import {useRouter} from "vue-router";
@@ -11,15 +11,21 @@
 
 const menuList = ref([])
 const monitorList = ref([])
+const monitorConfig = ref({})
 const userType = ref(getUserType())
 const monitorRef = ref()
 const searchVal = ref('')
+let timer = null;
 
 // 选择菜单
 const handleSelectMenu = (id) => {
-    pointApi().get(id).then(res => {
-        monitorList.value = [res.data]
-    })
+    clearInterval(timer)
+    getMonitorList(id)
+}
+
+// 搜索
+const handleSearch = () => {
+    getMonitorList()
 }
 
 // 获取水温监控点菜单
@@ -30,13 +36,53 @@
 }
 
 // 获取监控点列表
-const getMonitorList = () => {
-    pointApi().search({type: 1, page: 1, limit: 100, keywords: searchVal.value}).then(res => {
-        monitorList.value = res.data.list.filter(el => el.parentId !== 0)
+const getMonitorList = (id) => {
+    clearInterval(timer)
+    const data = {
+        type: 1,
+        page: 1,
+        limit: 100,
+        keywords: searchVal.value,
+        pointId: id || ''
+    }
+    pointApi().search(data).then(res => {
+        //0-未报警, 1-下限报警, 2-上限报警
+        monitorList.value = res.data.list.filter(el => el.parentId !== 0).map(item => {
+            return {
+                ...item,
+                errorType: Number(item.waterTemperature) < Number(item.lowWaterLevel) ? 1 : Number(item.waterTemperature) > Number(item.tallWaterLevel) ? 2 : 0
+            }
+        })
+    })
+
+    // 挂载定时器获取数据
+    timer = setInterval(() => {
+        pointApi().search(data).then(res => {
+            monitorList.value = res.data.list.filter(el => el.parentId !== 0).map(item => {
+                return {
+                    ...item,
+                    errorType: Number(item.waterTemperature) < Number(item.lowWaterLevel) ? 1 : Number(item.waterTemperature) > Number(item.tallWaterLevel) ? 2 : 0
+                }
+            })
+        })
+    }, 5000)
+}
+
+// 获取监控点配置
+const getMonitorConfig = () => {
+    getTempMonitorConfig().then(res => {
+        monitorConfig.value = res.data
     })
 }
 
+// 设置监控点配置
+const setMonitorConfig = () => {
+    editTempMonitorConfig(monitorConfig.value).then(res => {
+        ElMessage.success('设置成功')
+    })
+}
 
+// 监控点参数设置
 const setMonitorData = (data) => {
     setTempMonitor(data).then(res => {
         if (res.code === 200) {
@@ -54,6 +100,13 @@
 onMounted(() => {
     getTempMonitor()
     getMonitorList()
+    getMonitorConfig()
+})
+
+onUnmounted(() => {
+    if(timer) {
+        clearInterval(timer)
+    }
 })
 
 </script>
@@ -84,7 +137,7 @@
             <div class="monitor-tool">
                 <div class="tool-l">
                     <el-input v-model="searchVal" style="width: 20rem" placeholder="请输入监测点名称" clearable/>
-                    <el-button @click="getMonitorList">
+                    <el-button @click="handleSearch">
                         <el-icon>
                             <Search/>
                         </el-icon>
@@ -96,6 +149,21 @@
                         </el-icon>
                         新增
                     </el-button>
+                    <div class="name">水位计采集间隔设置:</div>
+                    <el-select v-model="monitorConfig.newIntervalTime">
+                        <el-option :value="1" label="一分钟"/>
+                        <el-option :value="2" label="两分钟"/>
+                        <el-option :value="5" label="五分钟"/>
+                        <el-option :value="10" label="十分钟"/>
+                    </el-select>
+                    <div class="name">水位计采集及数据上报间隔设置:</div>
+                    <el-select v-model="monitorConfig.historyIntervalTime">
+                        <el-option :value="1" label="一分钟"/>
+                        <el-option :value="2" label="两分钟"/>
+                        <el-option :value="5" label="五分钟"/>
+                        <el-option :value="10" label="十分钟"/>
+                    </el-select>
+                    <el-button type="success" @click="setMonitorConfig">批量应用</el-button>
                 </div>
                 <div class="tool-r" @click="handleFullScreen">
                     <img src="@/assets/images/flow/fullscreen.png"/>
@@ -142,41 +210,14 @@
                                 <div class="name">水温下限设置:</div>
                                 <el-input v-model="item.lowWaterLevel"/>
                             </div>
-                            <div class="setbox">
-                                <div class="name">水位计采集间隔设置:</div>
-                                <el-select v-model="item.gatherIntervalTime">
-                                    <el-option :value="1" label="一分钟"/>
-                                    <el-option :value="2" label="两分钟"/>
-                                    <el-option :value="5" label="五分钟"/>
-                                    <el-option :value="10" label="十分钟"/>
-                                </el-select>
-                            </div>
-                            <div class="setbox">
-                                <div class="name">记录上报间隔设置:</div>
-                                <el-select v-model="item.historyIntervalTime">
-                                    <el-option :value="1" label="一分钟"/>
-                                    <el-option :value="2" label="两分钟"/>
-                                    <el-option :value="5" label="五分钟"/>
-                                    <el-option :value="10" label="十分钟"/>
-                                </el-select>
-                            </div>
-                            <div class="setbox">
-                                <div class="name">实时数据上报间隔设置:</div>
-                                <el-select v-model="item.newIntervalTime">
-                                    <el-option :value="1" label="一分钟"/>
-                                    <el-option :value="2" label="两分钟"/>
-                                    <el-option :value="5" label="五分钟"/>
-                                    <el-option :value="10" label="十分钟"/>
-                                </el-select>
-                            </div>
                         </div>
                         <div class="item-btn">
                             <el-button size="large" type="success" @click="setMonitorData(item)">应用</el-button>
                         </div>
-                        <div class="item-error" v-if="Number(item.waterTemperature) < Number(item.lowWaterLevel) || Number(item.waterTemperature) > Number(item.tallWaterLevel)">
+                        <div class="item-error" v-if="[1,2].includes(item.errorType)">
                             <img src="@/assets/images/warning.png" alt="" />
-                            <div v-if="Number(item.waterTemperature) < Number(item.lowWaterLevel)">水温达到下限值</div>
-                            <div v-else-if="Number(item.waterTemperature) > Number(item.tallWaterLevel)">水温达到上限值</div>
+                            <div v-if="item.errorType === 1">水温达到下限值</div>
+                            <div v-else-if="item.errorType === 2">水温达到上限值</div>
                         </div>
                     </div>
                 </div>
@@ -250,7 +291,16 @@
                 gap: 1rem;
 
                 .name {
+                    flex-shrink: 0;
                     font-size: 1.1rem;
+                    color: #fff;
+                }
+                :deep(.el-input){
+                    flex-shrink: 0;
+                }
+                :deep(.el-select){
+                    width: 8rem;
+                    flex-shrink: 0;
                 }
             }
 
@@ -364,10 +414,11 @@
 
                         .setbox {
                             width: 50%;
-                            margin-top: 40px;
+                            margin-top: 60px;
                             padding: 0 10px;
                             display: flex;
                             align-items: center;
+                            font-size: 1.5rem;
 
                             .name {
                                 flex-shrink: 0;
@@ -379,20 +430,6 @@
                                 border-bottom: 1px solid #fff;
                                 box-shadow: none;
                                 border-radius: 0;
-                            }
-
-                            :deep(.el-select__wrapper) {
-                                background-color: transparent;
-                                box-shadow: none;
-                                border-radius: 0;
-
-                                .el-select__placeholder.is-transparent {
-                                    color: #FFF;
-                                }
-
-                                .el-select__suffix .el-select__caret {
-                                    color: #fff;
-                                }
                             }
                         }
                     }

--
Gitblit v1.9.3