From 6e6127068f03a7fe655f1fd504c488f20683039f Mon Sep 17 00:00:00 2001
From: web <candymxq888@outlook.com>
Date: 星期二, 15 七月 2025 18:28:02 +0800
Subject: [PATCH] fix:数据

---
 src/views/screen/index.vue |  340 +++++++++++++++++++++++++-------------------------------
 1 files changed, 152 insertions(+), 188 deletions(-)

diff --git a/src/views/screen/index.vue b/src/views/screen/index.vue
index 255484b..dd509e9 100644
--- a/src/views/screen/index.vue
+++ b/src/views/screen/index.vue
@@ -6,43 +6,60 @@
         <div class="home-t"></div>
         <div class="home-content">
             <div class="hc-position">
-                <div class="point" v-for="item in pointList" :key="item.id" 
-                    :style="{left: `${item.left}%`, top: `${item.top}%`, backgroundImage: `url(${warnTwo})`}"
+                <div class="point" v-for="(item, index) in pointData" :key="index" 
+                    :style="{left: `${item.left}%`, top: `${item.top}%`, backgroundImage: `url(${getPointImg(item.facilityState)})`}"
+                    @click.self="changeShow(index)"
                 >
-                    <div class="msg-l">
+                    <div class="msg-l" v-if="item.showMask && item.boxType === '0'">
+                        <div class="msg-item">
+                            <span class="name">设备名称:</span>
+                            <span class="val">{{ item.facilityName }}</span>
+                        </div>
                         <div class="msg-item">
                             <span class="name">设备状态:</span>
-                            <span class="val">{{ item.status }}</span>
+                            <span class="val">{{ item.facilityState }}</span>
                         </div>
                         <div class="msg-item">
                             <span class="name">甲烷浓度:</span>
-                            <span class="val">{{ item.jiawan }}</span>
+                            <span class="val">{{ item.methaneValue }}%</span>
+                        </div>
+                        <div class="msg-item">
+                            <span class="name">室内温度:</span>
+                            <span class="val">{{ item.temperature }}°</span>
                         </div>
                         <div class="msg-item">
                             <span class="name">风机状态:</span>
-                            <span class="val">{{ item.fengjiStatus }}</span>
+                            <span class="val">{{ item.facilityFanState }}</span>
                         </div>
                         <div class="msg-item">
                             <span class="name">硫化氢浓度:</span>
-                            <span class="val">{{ item.liuhuaqin }}</span>
+                            <span class="val">{{ item.hyrothionValue }}ppm</span>
                         </div>
                     </div>
-                    <div class="msg-r">
+                    <div class="msg-r" v-if="item.showMask && item.boxType === '1'">
+                        <div class="msg-item">
+                            <span class="name">设备名称:</span>
+                            <span class="val">{{ item.facilityName }}</span>
+                        </div>
                         <div class="msg-item">
                             <span class="name">设备状态:</span>
-                            <span class="val">{{ item.status }}</span>
+                            <span class="val">{{ item.facilityState }}</span>
                         </div>
                         <div class="msg-item">
                             <span class="name">甲烷浓度:</span>
-                            <span class="val">{{ item.jiawan }}</span>
+                            <span class="val">{{ item.methaneValue }}%</span>
+                        </div>
+                        <div class="msg-item">
+                            <span class="name">室内温度:</span>
+                            <span class="val">{{ item.temperature }}°</span>
                         </div>
                         <div class="msg-item">
                             <span class="name">风机状态:</span>
-                            <span class="val">{{ item.fengjiStatus }}</span>
+                            <span class="val">{{ item.facilityFanState }}</span>
                         </div>
                         <div class="msg-item">
                             <span class="name">硫化氢浓度:</span>
-                            <span class="val">{{ item.liuhuaqin }}</span>
+                            <span class="val">{{ item.hyrothionValue }}ppm</span>
                         </div>
                     </div>
                 </div>
@@ -51,68 +68,47 @@
                 <div class="shebei item">
                     <div class="item-t">辖区内设备数统计</div>
                     <div class="item-c">
-                        <div class="shebei-head">
-                            <div>辖区位置</div>
-                            <div>甲烷传感器</div>
-                            <div>硫化氢传感器</div>
-                            <div>中端控制器</div>
-                            <div>风机设备</div>
-                            <div>总设备数</div>
-                        </div>
-                        <div class="shebei-conetnt">
-                            <div class="list">
-                                <div class="listV">
-                                    <div>龙城大道</div>
-                                    <div>5台</div>
-                                    <div>5台</div>
-                                    <div>5台</div>
-                                    <div>5台</div>
-                                    <div>5台</div>
-                                </div>
-                                <div class="listV">
-                                    <div>龙城大道</div>
-                                    <div>5台</div>
-                                    <div>5台</div>
-                                    <div>5台</div>
-                                    <div>5台</div>
-                                    <div>5台</div>
-                                </div>
-                            </div>
-                        </div>
+                        <el-table 
+                            :data="facityData" 
+                            :header-cell-style="headerStyle"
+                            :cell-style="rowStyle"
+                            style="height: 100%;"
+                        >
+                            <el-table-column prop="pointName" label="辖区位置" align="center" />
+                            <el-table-column prop="methaneCount" label="甲烷传感器" align="center" />
+                            <el-table-column prop="hyrothionCount" label="硫化氢传感器" min-width="100" align="center" />
+                            <el-table-column prop="boxCount" label="终端控制器" align="center" />
+                            <el-table-column prop="facilityFanCount" label="风机设备" align="center" />
+                            <el-table-column prop="sumCount" label="总设备数" align="center" />
+                        </el-table>
                     </div>
                 </div>
                 <div class="gongdan item">
                     <div class="item-t">未处理工单统计</div>
                     <div class="item-c">
-                        <div class="gongdan-head">
-                            <div class="no">工单号</div>
-                            <div class="type">工单类型</div>
-                            <div class="time">上报时间</div>
-                            <div class="user">上报人</div>
-                            <div class="address">所属地址</div>
-                            <div class="status">工单状态</div>
-                        </div>
-                        <div class="gongdan-content">
-                            <div class="list">
-                                <div class="listV">
-                                    <div class="no">001</div>
-                                    <div class="type">设备维修</div>
-                                    <div class="time">2025/06/23</div>
-                                    <div class="user">监测设备终端</div>
-                                    <div class="address">
-                                        <el-tooltip
-                                            class="box-item"
-                                            effect="dark"
-                                            content="重庆市丰都县龙城大道288号"
-                                            placement="top"
-                                        >
-                                            重庆市丰都县龙城大道288号
-                                        </el-tooltip>
-                                    </div>
-                                    <div class="status"><el-button type="danger" size="small">未处理</el-button></div>
-                                </div>
-                            </div>
-                        </div>
+                        <el-table 
+                            :data="orderData" 
+                            :header-cell-style="headerStyle"
+                            :cell-style="rowStyle"
+                            style="height: 100%;"
+                        >
+                            <el-table-column prop="code" label="工单号" align="center" />
+                            <el-table-column label="工单类型" align="center">
+                                <template #default="scope">
+                                    <div v-if="scope.row.type === 1">设备维护</div>
+                                    <div v-else>设备维修</div>
+                                </template>
+                            </el-table-column>
+                            <el-table-column prop="createTimeView" label="上报时间" align="center" min-width="100" />
+                            <el-table-column prop="createUserName" label="上报人" align="center" />
+                            <el-table-column prop="address" label="所属地址" align="center" min-width="120" />
+                            <el-table-column label="工单状态" align="center">
+                                <template #default="scope">
+                                    <div v-if="scope.row.executeState === 100" style="color: #ccc;">未执行</div>
+                                    <div v-else style="color: #36fc0e;">已执行</div>
+                                </template>
+                            </el-table-column>
+                        </el-table>
                     </div>
                 </div>
             </div>
@@ -122,14 +118,75 @@
 
 
 <script setup>
-    import postImg from '@/assets/images/screen/position.png'
-    import warnOne from '@/assets/images/screen/warn-one.png'
-    import warnTwo from '@/assets/images/screen/warn-two.png'
+    import { onMounted, ref } from 'vue'
+    import { getPointFacityList, staticFacity, staticOrder } from '@/api/screen/home'
+    import postRun from '@/assets/images/screen/pos-run.png'
+    import warnStop from '@/assets/images/screen/pos-stop.png'
+    import warnWarn from '@/assets/images/screen/pos-warn.png'
 
-    const pointList = ref([
-        { left: 25, top: 30, status: '一级报警', jiawan: '2.4%LEL', fengjiStatus: 1, liuhuaqin: '1.9%LEL', id: 1 },
-        { left: 40, top: 60, status: '一级报警', jiawan: '2.4%LEL', fengjiStatus: 1, liuhuaqin: '1.9%LEL', id: 2 },
-    ])
+    const headerStyle = { 
+        "background-color": '#041025 !important'
+    }
+    const rowStyle = {
+        "background-color": '#081C3F !important'
+    }
+
+    const pointData = ref([])
+    const facityData = ref([])
+    const orderData = ref([])
+
+    // 显示隐藏弹窗
+    const changeShow = (index) => {
+        pointData.value[index].showMask = !pointData.value[index].showMask
+    }
+
+    /*
+        获取图标
+        0停止  1运行  2一级报警  3二级报警 
+     */
+    const getPointImg = (status) => {
+        if(status === '运行中') {
+            return postRun
+        }else if(status === '一级报警' || status === '二级报警'){
+            return warnWarn
+        }else{
+            return warnStop
+        }
+    }
+
+    const getPointData = () => {
+        getPointFacityList().then(res => {
+            pointData.value = res.data.map(item => {
+                return {
+                    ...item, 
+                    showMask: false
+                }
+            })
+        })
+    }
+
+    const getFacity = () => {
+        staticFacity().then(res => {
+            facityData.value = res.data
+        })
+    }
+
+    const getOrder = () => {
+        const searchdata = {
+            limit: 100, 
+            page: 1
+        }
+        staticOrder(searchdata).then(res => {
+            orderData.value = res.data.list
+        })
+    }
+
+
+    onMounted(() => {
+        getPointData()
+        getFacity()
+        getOrder()
+    })
 
 </script>
 
@@ -168,7 +225,7 @@
             position: relative;
             .point{
                 position: absolute;
-                width: 56px;
+                width: 32px;
                 height: 80px;
                 background-repeat: no-repeat;
                 background-size: 100% 100%;
@@ -176,7 +233,7 @@
                     width: 250px;
                     height: 160px;
                     position: absolute;
-                    left: -235px;
+                    left: -245px;
                     top: 0;
                     background-image: url('@/assets/images/screen/msg-box-l.png');
                     background-repeat: no-repeat;
@@ -190,7 +247,7 @@
                     width: 250px;
                     height: 160px;
                     position: absolute;
-                    left: 40px;
+                    left: 30px;
                     top: 0;
                     background-image: url('@/assets/images/screen/msg-box-r.png');
                     background-repeat: no-repeat;
@@ -233,116 +290,23 @@
                     padding: 1rem 0.5rem;
                 }
             }
-            .shebei{
-                .shebei-head{
-                    height: 2rem;
-                    line-height: 2rem;
-                    display: flex;
-                    justify-content: space-between;
-                    font-size: 0.7rem;
-                    >div{
-                        width: 16%;
-                        flex-shrink: 0;
-                        text-align: center;
-                    }
-                }
-                .shebei-conetnt{
-                    height: calc(100% - 2rem);
-                    .list{
-                        height: 100%;
-                        overflow-y: scroll;
-                        &::-webkit-scrollbar{
-                            display: none;
-                        }
-                        .listV{
-                            display: flex;
-                            justify-content: space-between;
-                            font-size: 0.7rem;
-                            padding: 0.5rem 0;
-                            background-color: #081C3F;
-                            >div{
-                                width: 16%;
-                                flex-shrink: 0;
-                                text-align: center;
-                            }
-                        }
-                    }
-                }
-            }
-            .gongdan{
-                .gongdan-head{
-                    height: 2rem;
-                    line-height: 2rem;
-                    display: flex;
-                    justify-content: space-between;
-                    font-size: 0.7rem;
-                    >div{
-                        flex-shrink: 0;
-                        text-align: center;
-                    }
-                    .no{
-                        width: 8%;
-                    }
-                    .type{
-                        width: 12%;
-                    }
-                    .time{
-                        width: 15%;
-                    }
-                    .user{
-                        width: 20%;
-                    }
-                    .address{
-                        width: 30%;
-                    }
-                    .status{
-                        width: 15%;
-                    }
-                }
-                .gongdan-content{
-                    .list{
-                        height: 100%;
-                        overflow-y: scroll;
-                        &::-webkit-scrollbar{
-                            display: none;
-                        }
-                        .listV{
-                            display: flex;
-                            justify-content: space-between;
-                            align-items: center;
-                            font-size: 0.7rem;
-                            padding: 0.5rem 0;
-                            background-color: #081C3F;
-                            >div{
-                                flex-shrink: 0;
-                                text-align: center;
-                            }
-                            .no{
-                                width: 8%;
-                            }
-                            .type{
-                                width: 12%;
-                            }
-                            .time{
-                                width: 15%;
-                            }
-                            .user{
-                                width: 20%;
-                            }
-                            .address{
-                                width: 30%;
-                                overflow: hidden;
-                                white-space: nowrap;
-                                text-overflow: ellipsis;
-                            }
-                            .status{
-                                width: 15%;
-                            }
-                        }
-                    }
-                }
-            }
         }
     }
 }
+
+:deep(.el-table){
+    --el-table-border-color: #000;
+    --el-table-bg-color: transparent;
+    th{
+        font-size: 12px;
+        color: #fff;
+    }
+    tr{
+        font-size: 12px;
+        color: #fff;
+    }
+    .el-table__cell{
+        border: none;
+    }
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3