From 9ce4e119fdc14459f5a9e2f40403d1755e17da8b Mon Sep 17 00:00:00 2001 From: web <candymxq888@outlook.com> Date: 星期一, 07 七月 2025 17:29:38 +0800 Subject: [PATCH] 111 --- src/views/screen/device.vue | 186 ++++++++++++++++++++++++++++++++++-- src/assets/images/screen/bg-air.png | 0 src/assets/images/screen/CH4.png | 0 src/assets/images/screen/H2S.png | 0 src/views/screen/index.vue | 7 + src/views/screen/components/dataItem.vue | 103 ++++++++++++++++++++ 6 files changed, 283 insertions(+), 13 deletions(-) diff --git a/src/assets/images/screen/CH4.png b/src/assets/images/screen/CH4.png new file mode 100644 index 0000000..d5ef106 --- /dev/null +++ b/src/assets/images/screen/CH4.png Binary files differ diff --git a/src/assets/images/screen/H2S.png b/src/assets/images/screen/H2S.png new file mode 100644 index 0000000..515738d --- /dev/null +++ b/src/assets/images/screen/H2S.png Binary files differ diff --git a/src/assets/images/screen/bg-air.png b/src/assets/images/screen/bg-air.png new file mode 100644 index 0000000..bc56b57 --- /dev/null +++ b/src/assets/images/screen/bg-air.png Binary files differ diff --git a/src/views/screen/components/dataItem.vue b/src/views/screen/components/dataItem.vue new file mode 100644 index 0000000..20a0085 --- /dev/null +++ b/src/views/screen/components/dataItem.vue @@ -0,0 +1,103 @@ +<template> + <div class="item"> + <div class="item-air"> + <div class="gas"> + <div class="gas-t">CH₄</div> + <div class="gas-CH"> + <img src="@/assets/images/screen/CH4.png" alt="" /> + </div> + <div class="gas-data"><span>1.1</span>%LEL</div> + </div> + <div class="gas"> + <div class="gas-t">H₂S</div> + <div class="gas-H2"> + <img src="@/assets/images/screen/H2S.png" alt="" /> + </div> + <div class="gas-data"><span>1.2</span>%LEL</div> + </div> + </div> + <div class="item-address"> + 安装位置:重庆市丰都县龙城大道435号安装位置:重庆市丰都县龙城大道435号 + </div> + <div class="status"> + <span>运行状态:</span> + <span class="val">正常运行</span> + </div> + </div> +</template> + +<script setup> + +</script> + +<style lang="scss" scoped> +.item{ + width: 144px; + height: 164px; + border-radius: 10px; + background: radial-gradient( rgba(50,154,196,0.5) 0%, rgba(21,74,131,0.5) 100%); + box-shadow: inset 0px 0px 10px 0px rgba(50,154,196,0.8); + padding: 8px; + box-sizing: border-box; + .item-air{ + display: flex; + justify-content: center; + gap: 0.3rem; + .gas{ + width: 60px; + height: 67px; + background-image: url('@/assets/images/screen/bg-air.png'); + background-repeat: no-repeat; + background-size: cover; + padding: 0.2rem; + box-sizing: border-box; + font-size: 0.6rem; + display: flex; + flex-direction: column; + justify-content: space-between; + .gas-CH{ + height: 30px; + line-height: 30px; + text-align: center; + img{ + width: 28px; + height: 30px; + } + } + .gas-H2{ + height: 30px; + line-height: 40px; + text-align: center; + img{ + width: 25px; + height: 16px; + } + } + .gas-data{ + text-align: center; + span{ + font-size: 0.7rem; + } + } + } + } + .item-address{ + font-size: 0.8rem; + margin-top: 0.6rem; + width: 100%; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + text-overflow: ellipsis; + } + .status{ + font-size: 0.8rem; + margin-top: 0.6rem; + .val{ + color: rgb(40, 250, 40); + font-size: 0.8rem; + } + } +} +</style> \ No newline at end of file diff --git a/src/views/screen/device.vue b/src/views/screen/device.vue index 6e39e63..04ae68b 100644 --- a/src/views/screen/device.vue +++ b/src/views/screen/device.vue @@ -4,15 +4,60 @@ <div class="left"> <div class="left-item"> <div class="item-t">设备时长</div> - <div class="item-c"></div> + <div class="item-c"> + <el-table + :data="timeData" + :header-cell-style="headerStyle" + :cell-style="rowStyle" + style="height: 100%;" + > + <el-table-column prop="type" label="异常类型" /> + <el-table-column prop="device" label="异常设备" /> + <el-table-column prop="address" label="异常位置" /> + <el-table-column prop="time" label="累计时长" /> + </el-table> + </div> </div> <div class="left-item"> - <div class="item-t">风机管理</div> + <div class="item-t"> + <div class="title-left">风机管理</div> + <div class="title-right"> + <el-select + v-model="value" + size="small" + style="width: 120px" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + <el-button type="success" size="small">一键启动</el-button> + </div> + </div> <div class="item-c"></div> </div> <div class="left-item"> <div class="item-t">工单处理</div> - <div class="item-c"></div> + <div class="item-c"> + <el-table + :data="timeData" + :header-cell-style="headerStyle" + :cell-style="rowStyle" + style="height: 100%;" + > + <el-table-column prop="type" label="工单号" /> + <el-table-column prop="device" label="工单类型" /> + <el-table-column prop="device" label="上报时间" /> + <el-table-column prop="time" label="上报人" /> + <el-table-column prop="address" label="所属地址" /> + <el-table-column prop="options" label="工单状态"> + <el-button type="primary">已处理</el-button> + </el-table-column> + </el-table> + </div> </div> <div class="left-item"> <div class="item-t">设备状态</div> @@ -23,8 +68,40 @@ <div class="device-c"> <div class="center"> <div class="center-item"> - <div class="item-t">实时数据</div> - <div class="item-c"></div> + <div class="item-t"> + <div class="title-left">实时数据</div> + <div class="title-right"> + <el-select + v-model="value" + size="small" + style="width: 120px" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + <el-select + v-model="value" + size="small" + style="width: 120px" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </div> + </div> + <div class="item-c"> + <div class="data-list"> + <dataItem /> + </div> + </div> </div> <div class="center-item"> <div class="item-t">终端监控分类曲线</div> @@ -36,11 +113,35 @@ <div class="right"> <div class="right-item"> <div class="item-t">风机状态</div> - <div class="item-c"></div> + <div class="item-c"> + <el-table + :data="timeData" + :header-cell-style="headerStyle" + :cell-style="rowStyle" + style="height: 100%;" + > + <el-table-column prop="type" label="风机编号" /> + <el-table-column prop="device" label="单次运行时长" /> + <el-table-column prop="address" label="运行地址" /> + <el-table-column prop="time" label="总运行时长" /> + </el-table> + </div> </div> <div class="right-item"> <div class="item-t">设备报警</div> - <div class="item-c"></div> + <div class="item-c"> + <el-table + :data="timeData" + :header-cell-style="headerStyle" + :cell-style="rowStyle" + style="height: 100%;" + > + <el-table-column prop="type" label="设备编号" /> + <el-table-column prop="device" label="报警类型" /> + <el-table-column prop="address" label="报警地址" /> + <el-table-column prop="time" label="报警时间" /> + </el-table> + </div> </div> </div> </div> @@ -48,7 +149,33 @@ </template> <script setup> + import dataItem from './components/dataItem.vue' + const timeData = ref([ + { type: '甲烷浓度异常', device: '风机', address: '重庆市丰都县龙城大道435号', time: '2.9小时' }, + { type: '甲烷浓度异常', device: '风机', address: '重庆市丰都县龙城大道435号', time: '2.9小时' }, + { type: '甲烷浓度异常', device: '风机', address: '重庆市丰都县龙城大道435号', time: '2.9小时' }, + ]) + + const headerStyle = { + "background-color": '#041025 !important' + } + const rowStyle = { + "background-color": '#081C3F !important' + } + + const value = ref('') + + const options = [ + { + value: 1, + label: 'Option1', + }, + { + value: 2, + label: 'Option2', + } + ] </script> <style scoped lang="scss"> @@ -57,8 +184,24 @@ color: #fff; display: flex; justify-content: space-between; + :deep(.el-table){ + th{ + font-size: 12px; + color: #fff; + } + tr{ + font-size: 12px; + color: #fff; + } + .el-table__cell{ + border: none; + } + } + :deep(.el-scrollbar__wrap--hidden-default){ + background-color: #000 !important; + } &-l{ - width: 25%; + width: 29%; height: 100%; .left{ height: 100%; @@ -66,6 +209,7 @@ flex-direction: column; justify-content: space-between; .left-item{ + flex-shrink: 0; width: 100%; height: 24%; background-image: url('@/assets/images/screen/ct-small.png'); @@ -75,17 +219,28 @@ width: 100%; height: 3rem; line-height: 3rem; - padding-left: 3.5rem; + padding: 0 5rem 0 3.5rem; + display: flex; + justify-content: space-between; + align-items: center; + .title-right{ + display: flex; + gap: 1rem; + } } .item-c{ height: calc(100% - 3rem); padding: 0.5rem; + // overflow-y: scroll; + // &::-webkit-scrollbar{ + // display: none; + // } } } } } &-c{ - width: 49%; + width: 40%; height: 100%; .center{ height: 100%; @@ -100,7 +255,14 @@ .item-t{ height: 3rem; line-height: 3rem; - padding-left: 4.5rem; + padding: 0 6rem 0 4.2rem; + display: flex; + justify-content: space-between; + align-items: center; + .title-right{ + display: flex; + gap: 1rem; + } } .item-c{ height: calc(100% - 3rem); @@ -110,7 +272,7 @@ } } &-r{ - width: 25%; + width: 29%; height: 100%; .right{ height: 100%; diff --git a/src/views/screen/index.vue b/src/views/screen/index.vue index 7916c9d..255484b 100644 --- a/src/views/screen/index.vue +++ b/src/views/screen/index.vue @@ -182,6 +182,9 @@ background-repeat: no-repeat; background-size: 100% 100%; padding: 0.5rem 1.5rem 0.5rem 0.5rem; + display: flex; + flex-direction: column; + justify-content: space-between; } .msg-r{ width: 250px; @@ -193,11 +196,13 @@ background-repeat: no-repeat; background-size: 100% 100%; padding: 0.5rem 0.5rem 0.5rem 1.5rem; + display: flex; + flex-direction: column; + justify-content: space-between; } .msg-item{ width: 100%; color: #fff; - padding: 0.3rem 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; -- Gitblit v1.9.3