126 lines
2.8 KiB
Vue
126 lines
2.8 KiB
Vue
<template>
|
|
<div class="bottomRightBox">
|
|
<Card title="设备监控台">
|
|
<div class="boxData">
|
|
<el-scrollbar style="width: 94%; margin: 3% 0% 0% 3%; height: 90%" v-if="deviceData.length > 0">
|
|
<div style="display: flex; width: 100%; height: 170px">
|
|
<div class="equipmentMonitoring" v-for="item in deviceData" :key="item.id">
|
|
<div class="equipmentList" :class="item.isClosed == 1 ? 'offline' : 'online'">
|
|
<p class="stateText">{{ item.isClosed == 1 ? "离线" : "在线" }}</p>
|
|
<p class="bottomText">{{ item.devName }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-scrollbar>
|
|
<div class="notoDta" v-if="deviceData.length == 0">
|
|
<img src="@/assets/images/noData.png" alt="" />
|
|
<p>暂无数据</p>
|
|
</div>
|
|
</div>
|
|
</Card>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import Card from "@/components/card.vue";
|
|
|
|
import { onMounted, reactive, ref, onBeforeUnmount } from "vue";
|
|
// import * as echarts from "echarts";
|
|
import { getDevStatisticsApi } from "@/api/modules/distribution";
|
|
// import Card from "@/components/card.vue";
|
|
import { GlobalStore } from "@/stores";
|
|
const store = GlobalStore();
|
|
|
|
// 配电箱设备统计
|
|
let deviceData = ref([] as any);
|
|
|
|
const getDevStatisticsList = async () => {
|
|
const res: any = await getDevStatisticsApi({
|
|
projectSn: store.sn
|
|
});
|
|
if (res.result) {
|
|
deviceData.value = res.result.list;
|
|
} else {
|
|
deviceData.value = [];
|
|
}
|
|
console.log("配电箱实时数据", res);
|
|
};
|
|
|
|
onMounted(() => {
|
|
getDevStatisticsList();
|
|
});
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.bottomRightBox {
|
|
width: 100%;
|
|
height: 100%;
|
|
|
|
.boxData {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
}
|
|
.equipmentMonitoring {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex !important;
|
|
justify-content: center;
|
|
align-items: center;
|
|
margin-top: 2%;
|
|
.equipmentList {
|
|
width: 160px;
|
|
height: 80%;
|
|
text-align: center;
|
|
position: relative;
|
|
.stateText {
|
|
font-size: calc(100vw * 20 / 1920);
|
|
color: #65d7f9;
|
|
margin-top: 45%;
|
|
}
|
|
.bottomText {
|
|
font-size: calc(100vw * 16 / 1920);
|
|
color: #fff;
|
|
position: absolute;
|
|
bottom: -30%;
|
|
width: 100%;
|
|
text-align: center;
|
|
}
|
|
}
|
|
|
|
.online {
|
|
height: 100%;
|
|
background: url("@/assets/images/distributionMonitoring/sbjkOpen.webp") no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
.offline {
|
|
height: 100%;
|
|
background: url("@/assets/images/distributionMonitoring/sbjkClose.webp") no-repeat;
|
|
background-size: 100% 100%;
|
|
.stateText {
|
|
color: #ffd15e !important;
|
|
}
|
|
.bottomText {
|
|
color: #fff !important;
|
|
}
|
|
}
|
|
}
|
|
.notoDta {
|
|
width: 20%;
|
|
height: 20%;
|
|
margin-left: 40%;
|
|
margin-top: 8%;
|
|
img {
|
|
width: 38%;
|
|
margin: 6% 36%;
|
|
}
|
|
p {
|
|
width: 100%;
|
|
color: #fff;
|
|
font-size: calc(100vw * 14 / 1920);
|
|
margin: -5% 38%;
|
|
}
|
|
}
|
|
}
|
|
</style>
|