178 lines
4.3 KiB
Vue
178 lines
4.3 KiB
Vue
<template>
|
|
<Card title="安全隐患统计">
|
|
<div class="centerTopBox">
|
|
<div class="line"></div>
|
|
<div class="lineDate1 data">
|
|
<div class="img">
|
|
<img src="@/assets/images/securityManagement/safeImg9.png" alt="" />
|
|
</div>
|
|
<div class="num">
|
|
<div class="text"><i>已整改数</i></div>
|
|
<div class="numStyle">
|
|
<i>{{ safeHazardTotal.alreadyRectificationNum || 0 }}</i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="lineDate2 data">
|
|
<div class="img">
|
|
<img src="@/assets/images/securityManagement/safeImg6.png" alt="" />
|
|
</div>
|
|
<div class="num">
|
|
<div class="text"><i>累积通过</i></div>
|
|
<div class="numStyle">
|
|
<i>{{ safeHazardTotal.closeNum || 0 }}</i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="lineDate3 data">
|
|
<div class="img">
|
|
<img src="@/assets/images/securityManagement/safeImg7.png" alt="" />
|
|
</div>
|
|
<div class="num">
|
|
<div class="text"><i>未整改数</i></div>
|
|
<div class="numStyle">
|
|
<i>{{ safeHazardTotal.rectificationNum || 0 }}</i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="lineDate4 data">
|
|
<div class="img">
|
|
<img src="@/assets/images/securityManagement/safeImg10.png" alt="" />
|
|
</div>
|
|
<div class="num">
|
|
<div class="text"><i>隐患总数</i></div>
|
|
<div class="numStyle">
|
|
<i>{{ safeHazardTotal.totalNum || 0 }}</i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="lineDate5 data">
|
|
<div class="img">
|
|
<img src="@/assets/images/securityManagement/safeImg8.png" alt="" />
|
|
</div>
|
|
<div class="num">
|
|
<div class="text"><i>超期未关闭</i></div>
|
|
<div class="numStyle2">
|
|
<i>{{ safeHazardTotal.overdueNotCloseNum || 0 }}</i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="lineDate6 data">
|
|
<div class="img">
|
|
<img src="@/assets/images/securityManagement/safeImg5.png" alt="" />
|
|
</div>
|
|
<div class="num">
|
|
<div class="text"><i>待复查数</i></div>
|
|
<div class="numStyle">
|
|
<i>{{ safeHazardTotal.reviewNum || 0 }}</i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</Card>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import Card from "@/components/card.vue";
|
|
import { onMounted, ref } from "vue";
|
|
import { getQualityStatistics } from "@/api/modules/newSecurityManagement";
|
|
import { GlobalStore } from "@/stores";
|
|
const store = GlobalStore();
|
|
// 安全隐患统计
|
|
const safeHazardTotal = ref({} as any);
|
|
const getHazardTotal = async () => {
|
|
const res: any = await getQualityStatistics({ projectSn: store.sn });
|
|
console.log("安全隐患统计", res);
|
|
safeHazardTotal.value = res.result.total;
|
|
};
|
|
defineExpose({
|
|
getHazardTotal
|
|
});
|
|
onMounted(async () => {
|
|
await getHazardTotal();
|
|
});
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.centerTopBox {
|
|
width: 100%;
|
|
height: 100%;
|
|
background: url("@/assets/images/securityManagement/safeImg1.png") no-repeat;
|
|
background-size: 100% 100%;
|
|
position: relative;
|
|
.line {
|
|
width: 100%;
|
|
height: 100%;
|
|
width: 80%;
|
|
height: 85%;
|
|
left: 10%;
|
|
background: url("@/assets/images/securityManagement/safeImg2.png") no-repeat;
|
|
background-size: 100% 100%;
|
|
position: absolute;
|
|
}
|
|
.data {
|
|
color: #fff;
|
|
display: flex;
|
|
width: 25%;
|
|
height: 20%;
|
|
position: absolute;
|
|
}
|
|
img {
|
|
width: 50%;
|
|
}
|
|
.num {
|
|
width: 50%;
|
|
margin-left: -25%;
|
|
.text {
|
|
font-size: 14px;
|
|
background: url("@/assets/images/securityManagement/safeImg3.png") no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
.numStyle {
|
|
font-size: 20px;
|
|
font-weight: bold;
|
|
margin-top: 15%;
|
|
background: url("@/assets/images/securityManagement/safeImg4.png") no-repeat;
|
|
background-size: 100% 100%;
|
|
background-image: linear-gradient(to right, rgba(122, 160, 234, 1), rgba(255, 255, 255, 1));
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
}
|
|
.numStyle2 {
|
|
font-size: 20px;
|
|
font-weight: bold;
|
|
margin-top: 15%;
|
|
background: url("@/assets/images/securityManagement/safeImg4.png") no-repeat;
|
|
background-size: 100% 100%;
|
|
background-image: linear-gradient(to right, rgba(236, 98, 102, 1), rgba(255, 255, 255, 1));
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
}
|
|
}
|
|
.lineDate1 {
|
|
left: 5%;
|
|
top: 10%;
|
|
}
|
|
.lineDate2 {
|
|
left: 2%;
|
|
top: 45%;
|
|
}
|
|
.lineDate3 {
|
|
left: 5%;
|
|
top: 80%;
|
|
}
|
|
.lineDate4 {
|
|
left: 71%;
|
|
top: 10%;
|
|
}
|
|
.lineDate5 {
|
|
left: 75%;
|
|
top: 45%;
|
|
}
|
|
.lineDate6 {
|
|
left: 71%;
|
|
top: 80%;
|
|
}
|
|
}
|
|
</style>
|