<!-- Description: 事件大屏 - 数据展示- 设备在线监控 Author: 李亚光 Date: 2024-09-18 --> <script lang="ts" setup name="FullScreenDeviceOnlineMonitor"> import layout from './layout.vue' // 宽高 const height = ref((window.innerHeight - 100 - 50) / 3) const width = ref((window.innerWidth - (window.innerWidth * 0.6) - 30) / 2) window.addEventListener('resize', () => { height.value = (window.innerHeight - 100 - 50) / 3 width.value = (window.innerWidth - (window.innerWidth * 0.6) - 30) / 2 }) onBeforeUnmount(() => { window.addEventListener('resize', () => { }) }) const data = [ { name: '燃气智能监测终端', value: '90', color: '#2391FF', class: 'circle1' }, { name: '云台', value: '87', color: '#FF745A', class: 'circle2' }, { name: '防外力破坏', value: '64', color: '#FFC328', class: 'circle3' }, { name: '管线哨兵', value: '67', color: '#1AC9FF', class: 'circle4' }, { name: '智能监测桩', value: '88', color: '#2352d6', class: 'circle5' }, { name: '井盖状态监测仪', value: '56', color: '#19be6b', class: 'circle6' }, { name: '开挖监测仪', value: '40', color: '#8B71ED', class: 'circle7' }, { name: '液位监测仪', value: '38', color: '#E46CBB', class: 'circle8' }, ] </script> <template> <layout class="layout" :height="height" :width="width" title="设备在线监控" subtitle="Equipment Online Monitoring"> <template #content> <div class="container"> <div v-for="item in data" :key="item.name" class="item"> <el-progress type="circle" :percentage="item.value" :striped="true" striped-flow :width="(width - width * 0.22) / 4" :title="item.name" :color="item.color" :class="item.class" /> <span class="value" :title="item.name">{{ item.name }}</span> </div> </div> </template> </layout> </template> <style lang="scss" scoped> ::v-deep(.el-progress-circle__track) { // stroke: #093262 !important; stroke-width: 4 !important; } .circle1 { ::v-deep(.el-progress-circle__track) { stroke: rgba($color: #057CF7, $alpha: 0.5) !important; } } .circle2 { ::v-deep(.el-progress-circle__track) { stroke: rgba($color: #FF745A, $alpha: 0.5) !important; } } .circle3 { ::v-deep(.el-progress-circle__track) { stroke: rgba($color: #FFC328, $alpha: 0.5) !important; } } .circle4 { ::v-deep(.el-progress-circle__track) { stroke: rgba($color: #1AC9FF, $alpha: 0.5) !important; } } .circle5 { ::v-deep(.el-progress-circle__track) { stroke: rgba($color: #2352d6, $alpha: 0.5) !important; } } .circle6 { ::v-deep(.el-progress-circle__track) { stroke: rgba($color: #19be6b, $alpha: 0.5) !important; } } .circle7 { ::v-deep(.el-progress-circle__track) { stroke: rgba($color: #8B71ED, $alpha: 0.5) !important; } } .circle8 { ::v-deep(.el-progress-circle__track) { stroke: rgba($color: #E46CBB, $alpha: 0.5) !important; } } ::v-deep(.el-loading-mask) { background-color: rgba($color: #0b0b0f, $alpha: 95%); } // .layout { // ::v-deep(.title) { // padding-left: 8px !important; // color: #fff; // font-weight: 700; // // padding-left: 20px; // box-sizing: border-box; // } // overflow: hidden; // } ::v-deep(.el-progress__text) { color: #fff; font-size: 16px !important; font-weight: 700; } .container { display: flex; flex-wrap: wrap; justify-content: space-around; overflow: hidden; .item { width: 21%; padding: 8px 0; .value { color: #fff; display: inline-block; text-align: center; font-size: 12px; width: 100%; white-space: nowrap; /* 确保文本在一行内显示 */ overflow: hidden; /* 超出容器部分隐藏 */ text-overflow: ellipsis; /* 文字溢出显示省略号 */ } } } </style>