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