src/assets/images/map-bg.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/images/messageInfo-box.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/images/point.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/images/screen/btnbg-active.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/images/screen/btnbg.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/images/screen/content_bg.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/images/screen/ct-default.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/images/screen/ct-large.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/images/screen/ct-small.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/images/screen/head.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/router/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/screen/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/screen/data.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/screen/device.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/screen/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/assets/images/map-bg.pngsrc/assets/images/messageInfo-box.pngBinary files differ
src/assets/images/point.pngBinary files differ
src/assets/images/screen/btnbg-active.pngsrc/assets/images/screen/btnbg.pngsrc/assets/images/screen/content_bg.pngsrc/assets/images/screen/ct-default.png
src/assets/images/screen/ct-large.png
src/assets/images/screen/ct-small.png
src/assets/images/screen/head.pngsrc/router/index.js
@@ -2,7 +2,7 @@ * @Author: Liuyi candymxq888@outlook.com * @Date: 2024-08-06 14:47:41 * @LastEditors: web candymxq888@outlook.com * @LastEditTime: 2025-06-19 15:01:44 * @LastEditTime: 2025-06-30 14:58:22 * @FilePath: \water-qinghe-web\src\router\index.js * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -79,6 +79,10 @@ { path: 'device', component: () => import('@/views/screen/device.vue') }, { path: 'data', component: () => import('@/views/screen/data.vue') } ] }, src/screen/index.vue
@@ -2,7 +2,7 @@ <div class="main"> <div class="header"> <div class="top"> <!-- <div class="title">丰都气体检测大屏</div> --> <div class="title">化粪池安全监控智能处置系统</div> <div class="time"> <span>{{ nowTime.date }}</span> <span>{{ nowTime.time }}</span> @@ -67,8 +67,8 @@ const btnList = ref([ {name:'首页总览',url:'/screen/home'}, {name:'设备管理',url:'/screen/device'}, {name:'报表管理',url:''}, {name:'系统监管',url:'/user'}, {name:'数据统计',url:'/screen/data'}, {name:'平台配置',url:'/user'}, ]) const navTo = (item) =>{ @@ -112,33 +112,34 @@ height: 100%; min-height: 1080px; position: relative; background-color: #000; .header{ width: 100%; height: 10%; .top{ position: relative; z-index: 100; width: 100%; height: 5.5rem; height: 8%; background-image: url("../assets/images/screen/head.png"); background-size: 100% 100%; background-repeat: no-repeat; position: relative; z-index: 100; .top{ width: 100%; height: 5.5rem; .title{ width: 57rem; height: 2rem; width: 45rem; height: 5rem; position: absolute; left:calc(50% - 28.5rem); left:calc(50% - 22.5rem); text-align: center; font-size: 1.6rem; font-weight: 800; color: #F9FBFF; line-height: 70px; line-height: 5rem; text-shadow:0 0 3px rgba(255,255,255,0.7); } .time{ position: absolute; width: 13rem; top: 0.5rem; top: 1rem; left: 2rem; display: flex; justify-content: space-between; @@ -173,7 +174,7 @@ position: absolute; width: 3rem; height: 2rem; top: 0.5rem; top: 1rem; right: 2rem; display: flex; justify-content: space-between; @@ -216,8 +217,8 @@ .nav{ position: relative; z-index: 110; width: 80%; margin: -4.5rem auto; width: 63%; margin: -3rem auto; display: flex; justify-content: space-between; align-items: center; @@ -242,8 +243,8 @@ } .plain{ width: 10rem; height: 3.5rem; line-height: 3.5rem; height: 3rem; line-height: 3rem; background-image: url("../assets/images/screen/btnbg.png"); background-size: 100% 100%; text-align: center; @@ -255,7 +256,10 @@ } .content{ width: 100%; height: 90%; height: 92%; background: url("../assets/images/screen/content_bg.png") no-repeat; background-size: 100% 100%; padding: 1rem 1.5rem 1.5rem; } } </style> src/views/screen/data.vue
对比新文件 @@ -0,0 +1,130 @@ <template> <div class="data"> <div class="data-l"> <div class="left"> <div class="left-item"> <div class="item-t">报警次数</div> <div class="item-c"></div> </div> <div class="left-item"> <div class="item-t">街道统计</div> <div class="item-c"></div> </div> </div> </div> <div class="data-c"> <div class="center"> <div class="center-item"> <div class="item-t">报警记录</div> <div class="item-c"></div> </div> <div class="center-item"> <div class="item-t">气体浓度监测曲线</div> <div class="item-c"></div> </div> </div> </div> <div class="data-r"> <div class="right"> <div class="right-item"> <div class="item-t">短信报警</div> <div class="item-c"></div> </div> <div class="right-item"> <div class="item-t">邮箱报警</div> <div class="item-c"></div> </div> </div> </div> </div> </template> <script setup> </script> <style scoped lang="scss"> .data{ height: 100%; color: #fff; display: flex; justify-content: space-between; &-l{ width: 25%; height: 100%; .left{ height: 100%; display: flex; flex-direction: column; justify-content: space-between; .left-item{ width: 100%; height: 49%; background-image: url('@/assets/images/screen/ct-default.png'); background-size: 100% 100%; background-repeat: no-repeat; .item-t{ width: 100%; height: 3rem; line-height: 3rem; padding-left: 3.5rem; } .item-c{ height: calc(100% - 3rem); padding: 0.5rem; } } } } &-c{ width: 49%; height: 100%; .center{ height: 100%; display: flex; flex-direction: column; justify-content: space-between; .center-item{ height: 49%; background-image: url('@/assets/images/screen/ct-large.png'); background-size: 100% 100%; background-repeat: no-repeat; .item-t{ height: 3rem; line-height: 3rem; padding-left: 4.5rem; } .item-c{ height: calc(100% - 3rem); padding: 0.5rem; } } } } &-r{ width: 25%; height: 100%; .right{ height: 100%; display: flex; flex-direction: column; justify-content: space-between; .right-item{ height: 49%; background-image: url('@/assets/images/screen/ct-default.png'); background-size: 100% 100%; background-repeat: no-repeat; .item-t{ height: 3rem; line-height: 3rem; padding-left: 3rem; } .item-c{ height: calc(100% - 3rem); padding: 0.5rem; } } } } } </style> src/views/screen/device.vue
@@ -1,6 +1,49 @@ <template> <div class="device"> 设备 <div class="device-l"> <div class="left"> <div class="left-item"> <div class="item-t">设备时长</div> <div class="item-c"></div> </div> <div class="left-item"> <div class="item-t">风机管理</div> <div class="item-c"></div> </div> <div class="left-item"> <div class="item-t">工单处理</div> <div class="item-c"></div> </div> <div class="left-item"> <div class="item-t">设备状态</div> <div class="item-c"></div> </div> </div> </div> <div class="device-c"> <div class="center"> <div class="center-item"> <div class="item-t">实时数据</div> <div class="item-c"></div> </div> <div class="center-item"> <div class="item-t">终端监控分类曲线</div> <div class="item-c"></div> </div> </div> </div> <div class="device-r"> <div class="right"> <div class="right-item"> <div class="item-t">风机状态</div> <div class="item-c"></div> </div> <div class="right-item"> <div class="item-t">设备报警</div> <div class="item-c"></div> </div> </div> </div> </div> </template> @@ -9,5 +52,87 @@ </script> <style scoped lang="scss"> .device{ height: 100%; color: #fff; display: flex; justify-content: space-between; &-l{ width: 25%; height: 100%; .left{ height: 100%; display: flex; flex-direction: column; justify-content: space-between; .left-item{ width: 100%; height: 24%; background-image: url('@/assets/images/screen/ct-small.png'); background-size: 100% 100%; background-repeat: no-repeat; .item-t{ width: 100%; height: 3rem; line-height: 3rem; padding-left: 3.5rem; } .item-c{ height: calc(100% - 3rem); padding: 0.5rem; } } } } &-c{ width: 49%; height: 100%; .center{ height: 100%; display: flex; flex-direction: column; justify-content: space-between; .center-item{ height: 49%; background-image: url('@/assets/images/screen/ct-large.png'); background-size: 100% 100%; background-repeat: no-repeat; .item-t{ height: 3rem; line-height: 3rem; padding-left: 4.5rem; } .item-c{ height: calc(100% - 3rem); padding: 0.5rem; } } } } &-r{ width: 25%; height: 100%; .right{ height: 100%; display: flex; flex-direction: column; justify-content: space-between; .right-item{ height: 49%; background-image: url('@/assets/images/screen/ct-default.png'); background-size: 100% 100%; background-repeat: no-repeat; .item-t{ height: 3rem; line-height: 3rem; padding-left: 3rem; } .item-c{ height: calc(100% - 3rem); padding: 0.5rem; } } } } } </style> src/views/screen/index.vue
@@ -1,14 +1,88 @@ <template> <div class="home"> <!-- 虚化盒子 --> <div class="blurBox"></div> <!-- 顶部菜单占位符 --> <div class="home-t"></div> <div class="home-content">11</div> <div class="home-content"> <div class="hc-info"> <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> </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> </div> </div> </div> </div> </div> </template> <script setup> import { ref } from 'vue' </script> @@ -16,18 +90,164 @@ .home{ position: absolute; left: 0; top: 0; top: 7%; width: 100%; height: 100%; height: 93%; background-image: url('@/assets/images/map-bg.png'); background-size: 100% 100%; background-repeat: no-repeat; z-index: 10; .blurBox{ //模糊背景盒子覆盖图片 position: absolute; top: -1rem; left: 0; width: 100%; height: 3%; background-color: #000; filter: blur(10px); } &-t{ height: 10%; height: 1%; } &-content{ height: 90%; height: 99%; padding: 1rem 1.5rem 0; position: relative; .hc-info{ position: absolute; right: 0; top: 1rem; width: 30rem; height: calc(100% - 1rem); .item{ width: 100%; height: 48%; background-image: url("@/assets/images/screen/ct-default.png"); background-repeat: no-repeat; background-size: 100% 100%; &-t{ color: #fff; height: 3rem; line-height: 3rem; padding-left: 2.5rem; } &-c{ color: #fff; height: calc(100% - 3rem); 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{ margin-top: 1rem; .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%; } } } } } } } } </style>