From 2f0fa3545b539e8b6f952ea82a1ca2350c64a0e8 Mon Sep 17 00:00:00 2001
From: web <candymxq888@outlook.com>
Date: 星期二, 22 四月 2025 17:28:48 +0800
Subject: [PATCH] fix:修改报警,添加参数

---
 src/screen/flow.vue |  133 +++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 123 insertions(+), 10 deletions(-)

diff --git a/src/screen/flow.vue b/src/screen/flow.vue
index e543a76..e37bbb9 100644
--- a/src/screen/flow.vue
+++ b/src/screen/flow.vue
@@ -1,33 +1,98 @@
 <template>
     <div class="main">
         <div class="header">
-            <div class="top">金川水电站生态流量监测系统 </div>
+            <div class="top">
+                <div class="top-exit" v-if="userType === '1'" @click="() => { router.push('/screen') }">
+                    <img src="@/assets/images/exit.png" alt="" />
+                    <span>选择系统</span>
+                </div>
+                <div class="top-name">金川水电站生态流量监测系统</div>
+                <div class="top-modal">
+                    公告弹窗提示
+                    <el-switch v-model="openWarn" />
+                </div>
+            </div>
             <div class="nav">
-                <div v-for="(item,index) in btnList" :key="index" @click="navTo(item)" class="plain" :class="item.url === route.path ? 'active' : ''">{{ item.name }}</div>
+                <div v-for="(item,index) in btnList" :key="index" @click="navTo(item)" class="plain" :class="item.url === route.path ? 'active' : ''">
+                    <span>{{ item.name }}</span>
+                </div>
             </div>
         </div>
         <div class="content">
             <router-view></router-view>
+            <div class="warningBox" v-if="openWarn">
+                <img src="@/assets/images/flow/warn-icon.png" alt="">
+                <div class="text">{{text}}</div>
+            </div>
         </div>
     </div>
 </template>
 <script setup>
 import{ useRouter,useRoute } from 'vue-router'
+import {onMounted, ref, watch, onUnmounted} from "vue";
+import { getUserType } from '@/utils/auth'
+import { warnHistory } from '@/api/screen/warning/index.js'
+
 
 const router = useRouter()
 const route = ref(useRoute())
 const btnList = ref([
-    {name:'总览',url:'/flow/home'},
-    {name:'生态流量',url:''},
-    {name:'图像监测', url:''},
-    {name:'设备管理',url:''},
-    {name:'报警管理',url:''},
-    {name:'报表管理',url:''},
-    {name:'系统管理',url:'/user'},
+    {name:'首页总览',url:'/flow/home'},
+    {name:'生态流量',url:'/flow/ecology'},
+    {name:'图像监测', url:'/flow/graphic'},
+    {name:'设备管理',url:'/flow/shebei'},
+    {name:'报警管理',url:'/flow/warning'},
+    {name:'报表管理',url:'/flow/report'},
 ])
+const userType = ref(getUserType())
+
+const openWarn = ref(false)
+const text = ref('')
+let timer = null;
+
+watch(openWarn, (newVal) => {
+    if(newVal){
+        splitText()
+    } else {
+        clearInterval(timer)
+    }
+})
+
+// 设置警告滚动
+const splitText = () => {
+    timer = setInterval(function () {
+        const val = text.value.substring(1) + text.value.substring(0,1)
+        text.value = val
+    }, 300)
+}
+
 const navTo = (item) =>{
     router.push(item.url)
 }
+
+// 获取报警内容
+const getWarnList = () => {
+    let str = ''
+    warnHistory({limit: 10, page: 1, monitorType: 2}).then(res => {
+        res.data.list?.forEach((item)=>{
+            str += item.description + ','
+        })
+        text.value = str
+    })
+}
+
+onMounted(() => {
+    getWarnList()
+    if(userType.value == 1) {
+        btnList.value.push({name:'系统管理',url:'/user'})
+    }
+})
+
+onUnmounted(() => {
+    if(timer){
+        clearInterval(timer)
+    }
+})
 
 </script>
 
@@ -38,18 +103,42 @@
     .header{
         width: 100%;
         height: 14%;
+        background-color: rgb(82, 120, 128);
+        position: relative;
         .top{
             height: 60%;
             display: flex;
             align-items: center;
             justify-content: center;
-            font-size: 38px;
             font-weight: 700;
             color: #fff;
+            position: relative;
+            z-index: 100;
+            .top-exit{
+                position: absolute;
+                left: 100px;
+                cursor: pointer;
+                font-size: 20px;
+                img{
+                    width: 30px;
+                    vertical-align: top;
+                    margin-right: 10px;
+                }
+            }
+            .top-name{
+                font-size: 48px;
+            }
+            .top-modal{
+                position: absolute;
+                right: 100px;
+                cursor: pointer;
+            }
         }
         .nav{
             display: flex;
             height: 40%;
+            position: relative;
+            z-index: 100;
             .plain{
                 flex-grow: 1;
                 height: 100%;
@@ -70,6 +159,30 @@
     .content{
         width: 100%;
         height: 86%;
+        .warningBox{
+            position: absolute;
+            left: 0;
+            top: 15.5%;
+            z-index: 100;
+            width: 100%;
+            padding: 0 150px;
+            height: 100px;
+            display: flex;
+            align-items: center;
+            background: linear-gradient( 270deg,
+                rgba(255,74,74,0) 0%,
+                rgba(255,74,74,0.5) 8%,
+                rgba(255,74,74,0.5) 50%,
+                rgba(255,74,74,0.5) 92%,
+                rgba(255,74,74,0) 100%);
+            .text{
+                margin: 0 30px;
+                color: #fff;
+                font-size: 36px;
+                overflow: hidden;
+                white-space: nowrap;
+            }
+        }
     }
 }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3