2025-09-20 14:14:38 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<el-card style="border-radius: 15px;">
|
|
|
|
|
|
<el-row gutter="35">
|
|
|
|
|
|
<el-col :span="8" class="status-card">
|
|
|
|
|
|
<div class="title">设备状态</div>
|
|
|
|
|
|
<!-- gutter设置为20,创建左右间隙 -->
|
|
|
|
|
|
<el-row gutter="20" style="width: 100%;">
|
|
|
|
|
|
<!-- 一行2个,每个占12格(24/2=12) -->
|
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
|
<div class="item">
|
|
|
|
|
|
<div class="status">在线</div>
|
2025-09-24 16:31:18 +08:00
|
|
|
|
<div class="count" style="color: rgba(0, 184, 122, 1);">{{ data?.sumOnLine || 0 }}</div>
|
2025-09-20 14:14:38 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
|
<div class="item">
|
|
|
|
|
|
<div class="status">离线</div>
|
2025-09-24 16:31:18 +08:00
|
|
|
|
<div class="count" style="color: rgba(102, 102, 102, 1);">{{ data?.sumOffLine || 0 }}</div>
|
2025-09-20 14:14:38 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
|
<div class="item">
|
|
|
|
|
|
<div class="status">网络延迟</div>
|
|
|
|
|
|
<div class="count" style="color: rgba(255, 208, 35, 1);">8</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
|
<div class="item">
|
|
|
|
|
|
<div class="status">故障</div>
|
|
|
|
|
|
<div class="count" style="color: rgba(227, 39, 39, 1);">1</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="16" class="alarm-card">
|
|
|
|
|
|
<div class="title">最近报警</div>
|
|
|
|
|
|
<el-row class="list">
|
|
|
|
|
|
<el-col>
|
|
|
|
|
|
<div class="item red">
|
|
|
|
|
|
<div class="sub-title">
|
|
|
|
|
|
异常移动检测
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="content">
|
|
|
|
|
|
A区b栋102 | 今天08:23
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col>
|
|
|
|
|
|
<div class="item yellow">
|
|
|
|
|
|
<div class="sub-title">
|
|
|
|
|
|
设备连接不稳定
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="content">
|
|
|
|
|
|
A区b栋102 | 今天08:23
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col>
|
|
|
|
|
|
<div class="item red">
|
|
|
|
|
|
<div class="sub-title">
|
|
|
|
|
|
异常移动检测
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="content">
|
|
|
|
|
|
A区b栋102 | 今天08:23
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
</el-card>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
|
.title {
|
|
|
|
|
|
font-family: "Alibaba-PuHuiTi-Bold";
|
|
|
|
|
|
font-size: 20px;
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
letter-spacing: 0px;
|
|
|
|
|
|
line-height: 24px;
|
|
|
|
|
|
color: rgb(0, 30, 59);
|
|
|
|
|
|
text-align: left;
|
|
|
|
|
|
vertical-align: top;
|
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.status-card {
|
|
|
|
|
|
|
|
|
|
|
|
.item {
|
|
|
|
|
|
background: rgba(245, 245, 245, 0.2);
|
|
|
|
|
|
border: 1px solid rgba(230, 233, 238, 1);
|
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
|
border-radius: 15px;
|
|
|
|
|
|
padding: 15px 30px;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
|
|
|
|
.status {
|
|
|
|
|
|
color: rgba(175, 175, 175, 1);
|
|
|
|
|
|
font-size: 20px;
|
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.count {
|
|
|
|
|
|
font-size: 18px;
|
|
|
|
|
|
font-weight: bold;
|
2025-09-20 20:38:57 +08:00
|
|
|
|
text-align: center;
|
2025-09-20 14:14:38 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.alarm-card {
|
|
|
|
|
|
.item {
|
|
|
|
|
|
border: 1px solid #E6E9EE;
|
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
|
padding: 10px;
|
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
padding-left: 20px;
|
2025-09-20 20:38:57 +08:00
|
|
|
|
text-align: left;
|
2025-09-20 14:14:38 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.red {
|
|
|
|
|
|
::v-deep::before {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
content: '';
|
|
|
|
|
|
background-color: rgba(227, 39, 39, 1);
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
width: 7px;
|
|
|
|
|
|
border-radius: 7px 0px 0px 7px;
|
|
|
|
|
|
top: 0;
|
|
|
|
|
|
left: 1px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.yellow {
|
|
|
|
|
|
::v-deep::before {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
content: '';
|
|
|
|
|
|
background-color: rgba(255, 208, 35, 1);
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
width: 7px;
|
|
|
|
|
|
border-radius: 7px 0px 0px 7px;
|
|
|
|
|
|
top: 0;
|
|
|
|
|
|
left: 1px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|
2025-09-24 16:31:18 +08:00
|
|
|
|
<script setup>
|
|
|
|
|
|
const props = defineProps({
|
|
|
|
|
|
data: {
|
|
|
|
|
|
type: Object,
|
|
|
|
|
|
default: () => ({})
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
</script>
|