202 lines
4.5 KiB
Vue
202 lines
4.5 KiB
Vue
<template>
|
|
<div class="leftTop">
|
|
<Card title="人员概况">
|
|
<div class="topPeopleNum">
|
|
<div class="dataTlo">
|
|
<div class="text"><i>实名制人数</i></div>
|
|
<div class="num">
|
|
<i>{{ statisticsCount.workercount.totalPerson || 0 }}</i>
|
|
</div>
|
|
</div>
|
|
<div class="dataTlt">
|
|
<div class="text"><i>在场人数</i></div>
|
|
<div class="num">
|
|
<i>{{ statisticsCount.presencecount.totalPerson || 0 }}</i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="bottomPeopleNum">
|
|
<div style="display: flex; margin-left: 2%">
|
|
<div style="width: 5px; height: 5px; background: rgba(130, 251, 234, 1); border-radius: 10px; margin: 2%"></div>
|
|
<div><i>管理人员</i></div>
|
|
</div>
|
|
<div class="peopleData">
|
|
<div class="peoImg"><img src="@/assets/images/comprehensiveManage/project3.png" alt="" /></div>
|
|
<div class="peoNum">
|
|
<div class="penName"></div>
|
|
<div class="penN"></div>
|
|
<div class="numData1 numData">
|
|
<div class="text"><i>甲方人员</i></div>
|
|
<div class="num">
|
|
<i style="color: #eea959"
|
|
>{{ statisticsCount.presencecount.jfGlPersonTotal || 0 }}/{{
|
|
statisticsCount.workercount.jfGlPersonTotal || 0
|
|
}}</i
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="numData2 numData">
|
|
<div class="text"><i>监理人员</i></div>
|
|
<div class="num">
|
|
<i style="color: #82fbea"
|
|
>{{ statisticsCount.presencecount.jlGlPersonTotal || 0 }}/{{
|
|
statisticsCount.workercount.jlGlPersonTotal || 0
|
|
}}</i
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="numData3 numData">
|
|
<div class="text"><i>乙方人员</i></div>
|
|
<div class="num">
|
|
<i style="color: #7aa0ea"
|
|
>{{ statisticsCount.presencecount.yfGlPersonTotal || 0 }}/{{
|
|
statisticsCount.workercount.yfGlPersonTotal || 0
|
|
}}</i
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</Card>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import Card from "@/components/card.vue";
|
|
import { GlobalStore } from "@/stores";
|
|
import { ref, onMounted, watch } from "vue";
|
|
// ts
|
|
type Props = {
|
|
statisticsCount?: any; // 传入人员数据
|
|
};
|
|
// withDefaults 定义默认值(传入的数据类型同默认值)
|
|
const props = withDefaults(defineProps<Props>(), {
|
|
statisticsCount: {}
|
|
});
|
|
// 人员概况数据
|
|
const statisticsCount = ref({
|
|
workercount: {},
|
|
presencecount: {}
|
|
} as any);
|
|
|
|
watch(
|
|
() => props.statisticsCount,
|
|
newVal => {
|
|
// console.log(newVal, "newVal");
|
|
if (newVal) {
|
|
// props.xData = newVal;
|
|
statisticsCount.value = newVal;
|
|
}
|
|
}
|
|
);
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.leftTop {
|
|
width: 100%;
|
|
height: 100%;
|
|
.topPeopleNum {
|
|
height: 40%;
|
|
display: flex;
|
|
.dataTlo {
|
|
width: 35%;
|
|
height: 100%;
|
|
background: url("@/assets/images/comprehensiveManage/project9.png") no-repeat;
|
|
background-size: 100% 100%;
|
|
margin-left: 10%;
|
|
}
|
|
.dataTlt {
|
|
width: 35%;
|
|
height: 100%;
|
|
background: url("@/assets/images/comprehensiveManage/project12.png") no-repeat;
|
|
background-size: 100% 100%;
|
|
margin-left: 10%;
|
|
}
|
|
.text {
|
|
color: #fff;
|
|
font-size: 14px;
|
|
margin-left: 50%;
|
|
margin-top: 15%;
|
|
}
|
|
.num {
|
|
font-size: 24px;
|
|
font-weight: bold;
|
|
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;
|
|
margin-left: 47%;
|
|
margin-top: 5%;
|
|
}
|
|
}
|
|
.bottomPeopleNum {
|
|
height: 60%;
|
|
div {
|
|
height: 20%;
|
|
color: #fff;
|
|
font-size: 16px;
|
|
}
|
|
.peopleData {
|
|
height: 80%;
|
|
display: flex;
|
|
.peoImg {
|
|
width: 30%;
|
|
height: 100%;
|
|
img {
|
|
margin-left: 30%;
|
|
width: 50%;
|
|
margin-top: 7%;
|
|
}
|
|
}
|
|
.peoNum {
|
|
height: 100%;
|
|
width: 70%;
|
|
position: relative;
|
|
.penName {
|
|
background: rgba(39, 88, 192, 0.6);
|
|
margin: 5% 5%;
|
|
}
|
|
.penN {
|
|
height: 10px;
|
|
background: url("@/assets/images/comprehensiveManage/project8.png") no-repeat;
|
|
background-size: 100% 100%;
|
|
margin: 13% 5%;
|
|
}
|
|
.numData1 {
|
|
left: 5%;
|
|
top: -10%;
|
|
}
|
|
.numData2 {
|
|
left: 35%;
|
|
top: -10%;
|
|
}
|
|
.numData3 {
|
|
left: 65%;
|
|
top: -10%;
|
|
}
|
|
.numData {
|
|
position: absolute;
|
|
height: 60%;
|
|
width: 30%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
.text {
|
|
margin-top: 18%;
|
|
font-size: 16px;
|
|
}
|
|
.num {
|
|
font-size: 20px;
|
|
margin-top: 18%;
|
|
// margin-left: 10%;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
::v-deep .h-card .content {
|
|
height: 80%;
|
|
}
|
|
</style>
|