1534 lines
44 KiB
Vue
Raw Normal View History

2022-06-08 14:51:11 +08:00
<template>
<div class="fullHeight dataBoardIndex">
<div class="fullHeight aside">
2023-03-07 18:30:20 +08:00
<div class="blockBox" style="height: calc(34.33% + 25px)">
2022-06-08 14:51:11 +08:00
<div class="blockTitle">
2023-03-07 18:30:20 +08:00
<!-- 在场统计 -->
{{ $t('message.dataBoard.presenceOfStatistical') }}
2022-06-08 14:51:11 +08:00
</div>
<div class="blockContent dataBoxContent inSenceBox">
2023-03-07 18:30:20 +08:00
<!-- v-if="COMPANY == 'longguang'"-->
2022-06-08 14:51:11 +08:00
<div>
<div class="statisticsHead">
<div class="statisticsHead_item">
2023-03-07 18:30:20 +08:00
<span style="color: #5181f6">{{
statisticsCount.workercount.totalPerson
}}</span>
2022-06-08 14:51:11 +08:00
<p>
2023-03-07 18:30:20 +08:00
<!-- 在册人数 -->
{{ $t('message.dataBoard.numberOfPresent') }}
2022-06-08 14:51:11 +08:00
</p>
</div>
<div class="statisticsHead_item">
2023-03-07 18:30:20 +08:00
<span style="color: #f67f51">{{
statisticsCount.workercount.totalPerson
}}</span>
2022-06-08 14:51:11 +08:00
<p>
2023-03-07 18:30:20 +08:00
<!-- 实名制人数 -->
{{ $t('message.dataBoard.realnameSystem') }}
2022-06-08 14:51:11 +08:00
</p>
</div>
<div class="statisticsHead_item">
2023-03-07 18:30:20 +08:00
<span style="color: #5ce2f6">{{
statisticsCount.presencecount.lsPersonTotal
}}</span>
2022-06-08 14:51:11 +08:00
<span>/</span>
2023-03-07 18:30:20 +08:00
<span>{{ statisticsCount.workercount.lsPersonTotal }}</span>
2022-06-08 14:51:11 +08:00
<p>
2023-03-07 18:30:20 +08:00
<!-- 临时工人数 -->
{{ $t('message.dataBoard.numberOfTemporaryWorkers') }}
2022-06-08 14:51:11 +08:00
</p>
</div>
</div>
<!-- 在册甲方管理人员数 -->
<div>
2023-03-07 18:30:20 +08:00
<div class="countBox" style="display: flex">
2022-06-08 14:51:11 +08:00
<div class="countBoxItem">
2023-03-07 18:30:20 +08:00
<span>{{ statisticsCount.workercount.jfGlPersonTotal }}</span>
2022-06-08 14:51:11 +08:00
<p>在册甲方管理人员数</p>
</div>
<div class="countBoxItem">
2023-03-07 18:30:20 +08:00
<span>{{
statisticsCount.presencecount.jfGlPersonTotal
}}</span>
2022-06-08 14:51:11 +08:00
<p>在场甲方管理人员数</p>
</div>
</div>
2023-03-07 18:30:20 +08:00
<div class="countBox" style="display: flex">
2022-06-08 14:51:11 +08:00
<div class="countBoxItem">
2023-03-07 18:30:20 +08:00
<span>{{ statisticsCount.workercount.lwPersonTotal }}</span>
2022-06-08 14:51:11 +08:00
<p>在册劳务人员数</p>
</div>
<div class="countBoxItem">
2023-03-07 18:30:20 +08:00
<span>{{ statisticsCount.presencecount.lwPersonTotal }}</span>
2022-06-08 14:51:11 +08:00
<p>在场劳务人员数</p>
</div>
</div>
</div>
<!-- 管理人员统计 -->
2023-03-07 18:30:20 +08:00
<div
class="blockTitle blockTitle2"
style="
margin-bottom: 20px;
font-size: 14px;
font-weight: 100;
color: #ffffff;
"
>
<i></i>{{ $t('message.dataBoard.managementPersonnelStatistics') }}
2022-06-08 14:51:11 +08:00
</div>
<div class="management">
<div class="management_item">
<div class="item_content">
2023-03-07 18:30:20 +08:00
<span style="color: #5ce2f6">{{
statisticsCount.presencecount.jlGlPersonTotal
}}</span>
2022-06-08 14:51:11 +08:00
<span>/</span>
2023-03-07 18:30:20 +08:00
<span>{{ statisticsCount.workercount.jlGlPersonTotal }}</span>
2022-06-08 14:51:11 +08:00
<p>
2023-03-07 18:30:20 +08:00
<!-- 监理人员 -->
{{ $t('message.dataBoard.supervisoryStaff') }}
2022-06-08 14:51:11 +08:00
</p>
</div>
2023-03-07 18:30:20 +08:00
<div class="itemImgBox" style="border: 1px solid #f67f51">
<img src="@/assets/images/dataBoard/jl.png" alt="" />
2022-06-08 14:51:11 +08:00
</div>
</div>
<div class="management_item">
<div class="item_content">
2023-03-07 18:30:20 +08:00
<span style="color: #5ce2f6">{{
statisticsCount.presencecount.jfGlPersonTotal
}}</span>
2022-06-08 14:51:11 +08:00
<span>/</span>
2023-03-07 18:30:20 +08:00
<span>{{ statisticsCount.workercount.jfGlPersonTotal }}</span>
2022-06-08 14:51:11 +08:00
<p>
2023-03-07 18:30:20 +08:00
<!-- 甲方人员 -->
{{ $t('message.dataBoard.PartyAPersonnel') }}
2022-06-08 14:51:11 +08:00
</p>
</div>
2023-03-07 18:30:20 +08:00
<div class="itemImgBox" style="border: 1px solid #5181f6">
<img src="@/assets/images/dataBoard/jf.png" alt="" />
2022-06-08 14:51:11 +08:00
</div>
</div>
<div class="management_item">
<div class="item_content">
2023-03-07 18:30:20 +08:00
<span style="color: #5ce2f6">{{
statisticsCount.presencecount.yfGlPersonTotal
}}</span>
2022-06-08 14:51:11 +08:00
<span>/</span>
2023-03-07 18:30:20 +08:00
<span>{{ statisticsCount.workercount.yfGlPersonTotal }}</span>
2022-06-08 14:51:11 +08:00
<p>
2023-03-07 18:30:20 +08:00
<!-- 乙方人员 -->
{{ $t('message.dataBoard.PartyBPersonnel') }}
2022-06-08 14:51:11 +08:00
</p>
</div>
2023-03-07 18:30:20 +08:00
<div class="itemImgBox" style="border: 1px solid #7851f6">
<img src="@/assets/images/dataBoard/yf.png" alt="" />
2022-06-08 14:51:11 +08:00
</div>
</div>
</div>
</div>
2023-03-07 18:30:20 +08:00
<!-- <div v-else style="width: 100%;height: 100%">-->
<!-- <div class="dataBox">-->
<!-- <img-->
<!-- src="@//assets/images/dataBoard/numImg_green2.png"-->
<!-- alt=""-->
<!-- srcset=""-->
<!-- />-->
<!-- <div>-->
<!-- <p class="num primaryText3">-->
<!-- {{ statisticsCount.presencecount.totalPerson}}/{{statisticsCount.workercount.totalPerson}}-->
<!-- </p>-->
<!-- <p>在场总人数</p>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="dataBox">-->
<!-- <img-->
<!-- src="@//assets/images/dataBoard/numImg_yellow.png"-->
<!-- alt=""-->
<!-- srcset=""-->
<!-- />-->
<!-- <div>-->
<!-- <p class="num yellow">-->
<!-- {{ statisticsCount.presencecount.lwPersonTotal }}-->
<!-- </p>-->
<!-- <p>在场劳务人数</p>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="timeInner">-->
<!-- <p>管理人员</p>-->
<!-- <div class="bg1 small">-->
<!-- <span class="num">{{-->
<!-- statisticsCount.presencecount.glPersonTotal-->
<!-- }}</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- &lt;!&ndash; <div class="timeInner">-->
<!-- <p>劳务人员</p>-->
<!-- <div class="bg1 small"><span class="num">{{ statisticsCount.presencecount.lwPersonTotal }}</span></div>-->
<!-- </div> &ndash;&gt;-->
<!-- <div class="timeInner">-->
<!-- <p>甲方人员</p>-->
<!-- <div class="bg1 small">-->
<!-- <span class="num">{{-->
<!-- statisticsCount.presencecount.jfGlPersonTotal-->
<!-- }}</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="timeInner">-->
<!-- <p>监理人员</p>-->
<!-- <div class="bg1 small">-->
<!-- <span class="num">{{-->
<!-- statisticsCount.presencecount.jlGlPersonTotal-->
<!-- }}</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="timeInner">-->
<!-- <p>乙方人员</p>-->
<!-- <div class="bg1 small">-->
<!-- <span class="num">{{-->
<!-- statisticsCount.presencecount.yfGlPersonTotal-->
<!-- }}</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="timeInner">-->
<!-- <p>临时人员</p>-->
<!-- <div class="bg1 small">-->
<!-- <span class="num">{{-->
<!-- statisticsCount.presencecount.lsPersonTotal-->
<!-- }}</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
2022-06-08 14:51:11 +08:00
</div>
</div>
2023-03-07 18:30:20 +08:00
<div class="blockBox" style="height: 23.33%">
2022-06-08 14:51:11 +08:00
<div class="blockTitle">
2023-03-07 18:30:20 +08:00
<!-- 人员概况 -->
{{ $t('message.dataBoard.personnelSituation') }}
2022-06-08 14:51:11 +08:00
</div>
<div class="blockContent dataBoxContent">
<!-- 实名制人数 -->
<!-- <div class="dataBox">
<img
src="@//assets/images/dataBoard/numImg_blue.png"
alt=""
srcset=""
/>
<div>
<p class="num primaryText">
{{ statisticsCount.workercount.totalPerson }}
</p>
<p>
{{$t('message.dataBoard.realnameSystem')}}
</p>
</div>
</div> -->
<div class="dataBox">
<img
src="@//assets/images/dataBoard/training.png"
alt=""
srcset=""
/>
<div>
2023-03-07 18:30:20 +08:00
<p class="num primaryText4" style="color: #44d7b6">
2022-06-08 14:51:11 +08:00
{{ statisticsCount.educationPersonNum }}
</p>
<p>
2023-03-07 18:30:20 +08:00
<!-- 已培训人数 -->
{{ $t('message.dataBoard.alreadyTrainingPeopleNum') }}
2022-06-08 14:51:11 +08:00
</p>
</div>
</div>
<!-- 在职男女比例 -->
<!-- <div class="dataBox">
<img
src="@//assets/images/dataBoard/numImg_green.png"
alt=""
srcset=""
/>
<div>
<p class="num primaryText3">
{{
(
(isNaN(
statisticsCount.workercount.manPersonTotal /
(statisticsCount.workercount.womanPersonTotal +
statisticsCount.workercount.manPersonTotal)
)
? 0
: statisticsCount.workercount.manPersonTotal /
(statisticsCount.workercount.womanPersonTotal +
statisticsCount.workercount.manPersonTotal)) * 100
).toFixed(2)
}}%
</p>
<p>
{{$t('message.dataBoard.genderRate')}}
</p>
</div>
</div> -->
<div class="dataBox">
<img
src="@//assets/images/dataBoard/training2.png"
alt=""
srcset=""
/>
<div>
2023-03-07 18:30:20 +08:00
<p class="num primaryText5" style="color: #f67f51">
{{
statisticsCount.workercount.totalPerson -
statisticsCount.educationPersonNum
}}
2022-06-08 14:51:11 +08:00
</p>
<p>
2023-03-07 18:30:20 +08:00
<!-- 未培训人数 -->
{{ $t('message.dataBoard.notTrainingPeopleNum') }}
2022-06-08 14:51:11 +08:00
</p>
</div>
</div>
</div>
</div>
<div class="blockBox">
<div class="blockTitle">
2023-03-07 18:30:20 +08:00
<!-- 年龄结构 -->
{{ $t('message.dataBoard.ageConstruction') }}
2022-06-08 14:51:11 +08:00
</div>
<div class="blockContent">
<div class="avgageAgeBox">
<p>
2023-03-07 18:30:20 +08:00
<!-- 在职平均年龄 -->
{{ $t('message.dataBoard.averageAgeAtWork') + ':'
}}<span class="primaryText">{{
2022-06-08 14:51:11 +08:00
statisticsCount.workercount.avgage.toFixed(0)
}}</span>
</p>
<p>
2023-03-07 18:30:20 +08:00
<!-- 在场平均年龄 -->
{{ $t('message.dataBoard.averageAgeInTheField') + ':' }}
<span class="primaryText3">{{
2022-06-08 14:51:11 +08:00
statisticsCount.presencecount.avgage.toFixed(0)
}}</span>
</p>
</div>
<div class="chart" ref="ageChart"></div>
</div>
</div>
</div>
<div class="center fullHeight">
<div class="top">
<div class="blockTitle blockTitle3">
2023-03-07 18:30:20 +08:00
<!-- 出勤统计 -->
{{ $t('message.dataBoard.attendanceStatistics') }}
2022-06-08 14:51:11 +08:00
</div>
<div class="topInner">
<div class="topDataBox">
<div class="blockTitle blockTitle2" style="margin-bottom: 10px">
统计信息出勤人数/工种总人数
<!-- <i></i>工种出勤统计{{$t('message.dataBoard.workTypeAttendanceStatistics')}} -->
</div>
<div style="height: calc(100% - 40px)">
<vue-scroll>
2023-03-07 18:30:20 +08:00
<!-- v-if="COMPANY == 'longguang'"-->
2022-06-08 14:51:11 +08:00
<div class="attendanceBox">
2023-03-07 18:30:20 +08:00
<div
class="attendance"
v-for="(item, index) in workerTypeList"
:key="index"
>
<span style="color: #5ce2f6">{{
item.totalPersonNum
}}</span>
2022-06-08 14:51:11 +08:00
<span>/</span>
2023-03-07 18:30:20 +08:00
<span>{{ item.workerNum }}</span>
<p>{{ item.typeName }}</p>
2022-06-08 14:51:11 +08:00
</div>
</div>
2023-03-07 18:30:20 +08:00
<!-- <div v-else>-->
<!-- <div-->
<!-- class="timeInner"-->
<!-- v-for="(item, index) in workerTypeList"-->
<!-- :key="index"-->
<!-- >-->
<!-- <p :title="item.typeName">{{ item.typeName }}</p>-->
<!-- <div class="bg1 medium">-->
<!-- <span class="num">{{ item.totalPersonNum }}</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
2022-06-08 14:51:11 +08:00
</vue-scroll>
</div>
</div>
<!-- 企业出勤排名 -->
<!-- <div class="topDataBox">
<div class="blockTitle blockTitle2"><i></i>{{$t('message.dataBoard.companyAttendanceRanking')}}</div>
<div class="companyChart" ref="companyChart"></div>
</div> -->
</div>
</div>
<div class="bottom">
<div class="bottomInner">
2023-03-07 18:30:20 +08:00
<div class="blockTitle blockTitle3">
<i></i>
<!-- 在场人员 -->
{{ $t('message.dataBoard.presenceOfPersonnel') }}
2022-06-08 14:51:11 +08:00
</div>
<div class="personContent">
<vue-scroll>
2023-03-07 18:30:20 +08:00
<div
class="personBox"
v-for="(item, index) in inSecenList"
:key="index"
>
2022-06-08 14:51:11 +08:00
<img
:preview="fileUrl + item.fieldAcquisitionUrl"
:src="fileUrl + item.fieldAcquisitionUrl"
alt=""
srcset=""
/>
<div class="carDetail">
<p class="carNum">{{ item.workerName }}</p>
<p v-if="item.personType == 2">
2023-03-07 18:30:20 +08:00
<!-- 管理人员 -->
{{ $t('message.dataBoard.managePeople') }}
2022-06-08 14:51:11 +08:00
</p>
<p v-else>{{ item.teamName }}</p>
<p class="time">{{ item.passTime }}</p>
</div>
</div>
</vue-scroll>
</div>
<div
class="placeholderBox placeholderBox2"
v-if="inSecenList.length == 0"
>
<img src="@/assets/images/noData3.png" alt="" srcset="" />
<p>
2023-03-07 18:30:20 +08:00
<!-- 暂无人员 -->
{{ $t('message.dataBoard.noPersonnel') }}
2022-06-08 14:51:11 +08:00
</p>
</div>
</div>
</div>
</div>
<div class="fullHeight aside">
<div class="blockBox">
<div class="blockTitle">
2023-03-07 18:30:20 +08:00
<!-- 出勤人员统计 -->
{{ $t('message.dataBoard.attendanceStatistics') }}
2022-06-08 14:51:11 +08:00
</div>
<div class="blockContent">
2023-03-07 18:30:20 +08:00
<div
style="height: 250px; width: 100%"
class="chart"
ref="personTypeChart"
></div>
2022-06-08 14:51:11 +08:00
</div>
</div>
<div class="blockBox">
2023-03-07 18:30:20 +08:00
<div
class="blockTitle"
style="word-wrap: wrap; width: 80px; left: 40%; top: -14px"
>
<!-- 管理人员出勤统计 -->
{{ $t('message.dataBoard.managePeopleStatistics') }}
2022-06-08 14:51:11 +08:00
</div>
<div class="blockContent">
<!-- <div class="safeTrainChart" ref="safeTrainChart"></div> -->
2023-03-07 18:30:20 +08:00
<div
style="height: 100%; width: 100%"
class="administrationPerson"
ref="administrationPerson"
></div>
2022-06-08 14:51:11 +08:00
<!-- <div class="descBox fullHeight">
<div>
<div class="descItem descItem1">
<p class="text"><i class="dot purple"></i>
已培训人数
{{$t('message.dataBoard.alreadyTrainingPeopleNum')}}
</p>
<p class="num">{{ statisticsCount.educationPersonNum }}</p>
</div>
<div class="descItem">
<p class="text"><i class="dot red"></i>
未培训人数
{{$t('message.dataBoard.notTrainingPeopleNum')}}
</p>
<p class="num">
{{
statisticsCount.workercount.totalPerson -
statisticsCount.educationPersonNum
}}
</p>
</div>
</div>
</div> -->
</div>
</div>
<div class="blockBox">
<div class="blockTitle">
2023-03-07 18:30:20 +08:00
<!-- 班组统计 -->
{{ $t('message.dataBoard.teamStatistics') }}
2022-06-08 14:51:11 +08:00
</div>
<vue-scroll style="height: 90%">
<div class="blockContent" style="height: 100%">
2023-03-07 18:30:20 +08:00
<div
style="width: 380px; height: 140%"
class="chart"
ref="groupChart"
></div>
2022-06-08 14:51:11 +08:00
</div>
</vue-scroll>
</div>
</div>
</div>
</template>
<script>
import {
selectProjectWorkerTypeTotalListApi,
selectProjectPresentWorkerListApi,
selectProjectWorkerStatisticsApi,
selectProjectComapnyWorkTotalListApi,
selectProjectTeamWorkTotalListApi,
selectTenDaysWorkerAttendanceCountList
2023-03-07 18:30:20 +08:00
} from '@/assets/js/api/dataBoard.js'
import echarts from 'echarts4'
2022-06-08 14:51:11 +08:00
export default {
data() {
return {
statisticsCount: {
attendancePersonNum: 0,
educationPersonNum: 0,
workercount: {
lwPersonYesterdayAdd: 0,
eduPersonTotal: 0,
jfGlPersonTotal: 0,
age18: 0,
age18to25: 0,
womanPersonTotal: 0,
lsPersonTotal: 0,
jlGlPersonTotal: 0,
age45to60: 0,
lwPersonTotal: 0,
manPersonTotal: 0,
totalPerson: 0,
age25to35: 0,
glPersonTotal: 0,
yfGlPersonTotal: 0,
avgage: 0,
age35to45: 0,
glPersonYesterdayAdd: 0,
2023-03-07 18:30:20 +08:00
age60: 0
2022-06-08 14:51:11 +08:00
},
devcount: { ufaceDevNum: 0, videoNum: 0, environmentDevNum: 0 },
presencecount: {
jfGlPersonTotal: 0,
age18: 0,
age18to25: 0,
womanPersonTotal: 0,
lsPersonTotal: 0,
jlGlPersonTotal: 0,
age45to60: 0,
lwPersonTotal: 0,
manPersonTotal: 0,
totalPerson: 0,
age25to35: 0,
glPersonTotal: 0,
yfGlPersonTotal: 0,
avgage: 0,
age35to45: 0,
2023-03-07 18:30:20 +08:00
age60: 0
}
2022-06-08 14:51:11 +08:00
},
inSecenList: [],
workerTypeList: [],
2023-03-07 18:30:20 +08:00
timer: null,
interval1: null, //计时器
2022-06-08 14:51:11 +08:00
fileUrl: '',
2023-03-07 18:30:20 +08:00
COMPANY: ''
}
2022-06-08 14:51:11 +08:00
},
2023-03-07 18:30:20 +08:00
created() {
2022-06-08 14:51:11 +08:00
this.COMPANY = COMPANY
2023-03-07 18:30:20 +08:00
console.log(this.COMPANY)
2022-06-08 14:51:11 +08:00
},
mounted() {
console.log(window.location.protocol)
2023-03-07 18:30:20 +08:00
this.fileUrl =
window.location.protocol + '//' + this.$store.state.FILEURL.split('//')[1]
2022-06-08 14:51:11 +08:00
this.initData()
},
2023-03-07 18:30:20 +08:00
beforeDestroy() {
console.log('清除计时器')
2022-06-08 14:51:11 +08:00
window.clearTimeout(this.timer)
clearTimeout(this.interval1)
},
methods: {
2023-03-07 18:30:20 +08:00
initData() {
this.selectProjectWorkerStatistics()
this.selectProjectWorkerTypeTotalList()
this.selectProjectPresentWorkerList()
this.selectProjectComapnyWorkTotalList()
this.selectProjectTeamWorkTotalList()
2022-06-08 14:51:11 +08:00
this.getAttendance()
},
//获取工种出勤统计
selectProjectWorkerTypeTotalList() {
selectProjectWorkerTypeTotalListApi({
2023-03-07 18:30:20 +08:00
projectSn: this.$store.state.projectSn
2022-06-08 14:51:11 +08:00
}).then((res) => {
2023-03-07 18:30:20 +08:00
console.log(res)
this.workerTypeList = res.result
2022-06-08 14:51:11 +08:00
clearTimeout(this.interval1)
2023-03-07 18:30:20 +08:00
this.interval1 = setTimeout(() => {
2023-07-27 08:55:32 +08:00
// this.selectProjectWorkerTypeTotalList()
2022-06-08 14:51:11 +08:00
this.selectProjectWorkerStatistics()
2023-03-07 18:30:20 +08:00
}, 5000)
})
2022-06-08 14:51:11 +08:00
},
//查询在场人员信息
selectProjectPresentWorkerList() {
selectProjectPresentWorkerListApi({
2023-03-07 18:30:20 +08:00
projectSn: this.$store.state.projectSn
2022-06-08 14:51:11 +08:00
}).then((res) => {
2023-03-07 18:30:20 +08:00
console.log('在场人员', res)
this.inSecenList = res.result
2023-07-26 09:49:30 +08:00
// this.timer = window.setTimeout(() => {
// this.selectProjectPresentWorkerList()
// }, 5000)
2023-03-07 18:30:20 +08:00
})
2022-06-08 14:51:11 +08:00
},
//项目人员统计
selectProjectWorkerStatistics() {
selectProjectWorkerStatisticsApi({
2023-03-07 18:30:20 +08:00
sn: this.$store.state.projectSn
2022-06-08 14:51:11 +08:00
}).then((res) => {
2023-07-27 08:55:32 +08:00
console.log("项目人员统计",res.result)
2023-03-07 18:30:20 +08:00
this.statisticsCount = res.result
2022-06-08 14:51:11 +08:00
2023-07-27 08:55:32 +08:00
let json1 = this.statisticsCount.presencecount
let json2 = this.statisticsCount.workercount
let yData1 = [
2022-06-08 14:51:11 +08:00
json1.age18,
2023-07-27 08:55:32 +08:00
json1.age18to25 - 0 + json1.age25to35 + json1.age35to45,
2023-07-26 09:49:30 +08:00
// json1.age25to35,
// json1.age35to45,
2022-06-08 14:51:11 +08:00
json1.age45to60,
2023-03-07 18:30:20 +08:00
json1.age60
]
2023-07-27 08:55:32 +08:00
let yData2 = [
2022-06-08 14:51:11 +08:00
json2.age18,
2023-07-27 08:55:32 +08:00
json2.age18to25 - 0 + json2.age25to35 + json2.age35to45,
2023-07-26 09:49:30 +08:00
// json2.age25to35,
// json2.age35to45,
2022-06-08 14:51:11 +08:00
json2.age45to60,
2023-03-07 18:30:20 +08:00
json2.age60
]
2023-07-27 08:55:32 +08:00
console.log("项目人员统计y轴数据",yData1,yData2)
2022-06-08 14:51:11 +08:00
// ["18及以下", "18-25岁", "25-35岁", "35-45岁", "45-59岁", "60及以上"]
this.createdBarCharts(
this.$t('message.dataBoard.ageTypeList'),
yData1,
yData2,
2023-03-07 18:30:20 +08:00
this.$refs.ageChart,
this.$t('message.dataBoard.peopleStatus')
2022-06-08 14:51:11 +08:00
/* ["在场", "在职"] */
2023-03-07 18:30:20 +08:00
)
2022-06-08 14:51:11 +08:00
this.createPieChart(
[
2023-03-07 18:30:20 +08:00
{ value: this.statisticsCount.educationPersonNum, name: '' },
2022-06-08 14:51:11 +08:00
{
value:
this.statisticsCount.workercount.totalPerson -
this.statisticsCount.educationPersonNum,
2023-03-07 18:30:20 +08:00
name: ''
}
2022-06-08 14:51:11 +08:00
],
this.$refs.safeTrainChart,
2023-03-07 18:30:20 +08:00
['rgba(120, 111, 240, 1)', 'rgba(254, 108, 127, 1)'],
/* "总人数" */ this.$t('message.dataBoard.attendanceOrTotal')[1]
)
})
2022-06-08 14:51:11 +08:00
},
// 获取出勤人数
2023-03-07 18:30:20 +08:00
async getAttendance() {
let xdata = []
let ydata = []
let ydata2 = []
let dateList = []
2022-06-08 14:51:11 +08:00
// 24*60*60*1000
2023-07-27 08:55:32 +08:00
let oneDayTime = 24 * 60 * 60 * 1000
let date = new Date()
let todayTime = date.getTime()
2023-03-07 18:30:20 +08:00
for (let i = 9; i >= 0; i--) {
2023-07-27 08:55:32 +08:00
let everyDayTime = todayTime - oneDayTime * i
let everyDay = new Date(everyDayTime).getDate()
2023-03-07 18:30:20 +08:00
xdata.push(everyDay)
2022-06-08 14:51:11 +08:00
}
2023-03-07 18:30:20 +08:00
let res = await selectTenDaysWorkerAttendanceCountList({
project: this.$store.state.projectSn
})
if (res.code == 200) {
let { result } = res
result.forEach((item, index) => {
if (index > 0) {
2022-06-08 14:51:11 +08:00
ydata.push(item.totalNum)
ydata2.push(item.glPersonNum)
dateList.push(item.dayTitle)
}
})
}
2023-03-07 18:30:20 +08:00
this.createPersonTypeChart(xdata, ydata, dateList)
this.createAdministrationPerson(xdata, ydata2, dateList)
2022-06-08 14:51:11 +08:00
},
//获取企业列表
selectProjectComapnyWorkTotalList() {
selectProjectComapnyWorkTotalListApi({
projectSn: this.$store.state.projectSn,
2023-03-07 18:30:20 +08:00
type: 1
2022-06-08 14:51:11 +08:00
}).then((res) => {
2023-07-27 08:55:32 +08:00
let Data = res.result
let xData = [],
2022-06-08 14:51:11 +08:00
yData1 = [],
2023-03-07 18:30:20 +08:00
yData2 = []
2022-06-08 14:51:11 +08:00
Data.forEach((element) => {
2023-03-07 18:30:20 +08:00
xData.push(element.enterpriseName)
yData1.push(element.attendancePersonNum)
yData2.push(element.totalPersonNum)
})
this.createdBarCharts(
xData,
yData1,
yData2,
this.$refs.companyChart,
this.$t(
'message.dataBoard.attendanceOrTotal'
) /* ["出勤人数","总人数"] */
)
})
2022-06-08 14:51:11 +08:00
},
//
selectProjectTeamWorkTotalList() {
selectProjectTeamWorkTotalListApi({
2023-03-07 18:30:20 +08:00
projectSn: this.$store.state.projectSn
2022-06-08 14:51:11 +08:00
}).then((res) => {
2023-07-27 08:55:32 +08:00
let Data = res.result
2023-03-07 18:30:20 +08:00
console.log(Data)
2023-07-27 08:55:32 +08:00
let xData = [],
2022-06-08 14:51:11 +08:00
yData1 = [],
2023-03-07 18:30:20 +08:00
yData2 = []
2022-06-08 14:51:11 +08:00
Data.forEach((element) => {
2023-03-07 18:30:20 +08:00
xData.push(element.teamName)
yData1.push(element.attendancePersonNum)
yData2.push(element.totalPersonNum)
})
this.createGroupChart(
xData,
yData1,
yData2,
this.$refs.groupChart,
this.$t(
'message.dataBoard.attendanceOrTotal'
) /* ["出勤人数","总人数"] */
)
})
2022-06-08 14:51:11 +08:00
},
//年龄结构---图表
createdBarCharts(xData, yData1, yData2, el, legendData) {
2023-03-07 18:30:20 +08:00
let that = this
let ageChart = echarts.init(el)
2022-06-08 14:51:11 +08:00
// ageChart.clear();
let option = {
grid: {
top: 40,
left: 0,
bottom: 5,
right: 20,
2023-03-07 18:30:20 +08:00
containLabel: true
2022-06-08 14:51:11 +08:00
},
2023-03-07 18:30:20 +08:00
color: ['#5CE2F6', '#5181F6'],
2022-06-08 14:51:11 +08:00
tooltip: {
2023-03-07 18:30:20 +08:00
trigger: 'axis',
2022-06-08 14:51:11 +08:00
axisPointer: {
2023-03-07 18:30:20 +08:00
type: 'shadow'
}
2022-06-08 14:51:11 +08:00
},
legend: {
show: true,
2023-03-07 18:30:20 +08:00
align: 'left',
2022-06-08 14:51:11 +08:00
top: 5,
left: 0,
itemWidth: 13,
itemHeight: 5,
textStyle: {
2023-03-07 18:30:20 +08:00
color: '#9fa2ad'
}
2022-06-08 14:51:11 +08:00
},
xAxis: [
{
2023-03-07 18:30:20 +08:00
type: 'category',
2022-06-08 14:51:11 +08:00
data: xData,
boundaryGap: true,
axisTick: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
axisLine: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
axisLabel: {
2023-03-07 18:30:20 +08:00
color: '#9fa2ad',
fontSize: 12
}
}
2022-06-08 14:51:11 +08:00
],
yAxis: {
2023-03-07 18:30:20 +08:00
type: 'value',
2022-06-08 14:51:11 +08:00
axisTick: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
axisLine: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
splitLine: {
lineStyle: {
2023-03-07 18:30:20 +08:00
type: 'dashed',
color: 'rgba(231, 233, 243, 0.2)'
}
2022-06-08 14:51:11 +08:00
},
axisLabel: {
2023-03-07 18:30:20 +08:00
color: '#9fa2ad'
}
2022-06-08 14:51:11 +08:00
},
series: [
{
name: legendData[0],
2023-03-07 18:30:20 +08:00
type: 'bar',
2022-06-08 14:51:11 +08:00
data: yData1,
2023-03-07 18:30:20 +08:00
barWidth: 14
2022-06-08 14:51:11 +08:00
},
{
name: legendData[1],
2023-03-07 18:30:20 +08:00
type: 'bar',
2022-06-08 14:51:11 +08:00
data: yData2,
barWidth: 14,
2023-03-07 18:30:20 +08:00
barGap: 0.1
}
]
}
2022-06-08 14:51:11 +08:00
2023-03-07 18:30:20 +08:00
ageChart.setOption(option)
2022-06-08 14:51:11 +08:00
},
createPieChart(data, div, color, title) {
2023-03-07 18:30:20 +08:00
let that = this
let monitor = echarts.init(div)
2022-06-08 14:51:11 +08:00
// monitor.clear();
2023-07-27 08:55:32 +08:00
let option = {
2023-03-07 18:30:20 +08:00
color: color ? color : ['#5181F6', '#61D2B9', '#F67F51', '#7851F6'],
2022-06-08 14:51:11 +08:00
title: {
show: true,
text: data[0].value + data[1].value,
2023-03-07 18:30:20 +08:00
x: '48%',
y: '36%',
2022-06-08 14:51:11 +08:00
z: 5,
2023-03-07 18:30:20 +08:00
textAlign: 'center',
2022-06-08 14:51:11 +08:00
textStyle: {
2023-03-07 18:30:20 +08:00
color: 'rgba(255, 255, 255, 1)',
fontSize: 20
2022-06-08 14:51:11 +08:00
},
subtext: title,
subtextStyle: {
2023-03-07 18:30:20 +08:00
color: 'rgba(255, 255, 255, 0.8)',
fontSize: 13
}
2022-06-08 14:51:11 +08:00
},
grid: {
2023-03-07 18:30:20 +08:00
right: 0
2022-06-08 14:51:11 +08:00
},
legend: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
// tooltip: {
// // data: ['在线', '离线'],
// trigger: "item",
// formatter: "{a} <br/>{b}: {c} ({d}%)",
// },
series: [
{
2023-03-07 18:30:20 +08:00
name: '',
type: 'pie',
radius: ['50%', '70%'],
2022-06-08 14:51:11 +08:00
avoidLabelOverlap: false,
label: {
show: false,
2023-03-07 18:30:20 +08:00
position: 'center'
2022-06-08 14:51:11 +08:00
},
labelLine: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
2023-03-07 18:30:20 +08:00
data: data
}
]
}
2022-06-08 14:51:11 +08:00
// if(color){
// option.series[0].radius=["75%", "85%"]
// option.title.x="45%"
// option.legend.show=false
// }
2023-03-07 18:30:20 +08:00
monitor.setOption(option)
2022-06-08 14:51:11 +08:00
},
//班组图表
createGroupChart(xData, yData1, yData2, el, legendData) {
2023-03-07 18:30:20 +08:00
console.log(yData2)
let monitor = echarts.init(el)
2023-07-27 08:55:32 +08:00
// let data = [220, 182, 191, 234, 290, 330, 310, 123, 442, 321, 90, 149, 210, 122, 133, 334, 198, 123, 125, 220];
// let yMax = 500;
// let dataShadow = [];
2022-06-08 14:51:11 +08:00
2023-07-27 08:55:32 +08:00
// for (let i = 0; i < data.length; i++) {
2022-06-08 14:51:11 +08:00
// dataShadow.push(yMax);
// }
2023-07-27 08:55:32 +08:00
let option = {
2022-06-08 14:51:11 +08:00
legend: {
show: true,
2023-03-07 18:30:20 +08:00
align: 'left',
2022-06-08 14:51:11 +08:00
top: 5,
left: 0,
// itemWidth: 13,
// itemHeight: 5,
textStyle: {
2023-03-07 18:30:20 +08:00
color: '#9fa2ad'
}
2022-06-08 14:51:11 +08:00
},
grid: {
2023-03-07 18:30:20 +08:00
left: '10',
right: '40',
bottom: '120',
top: '50',
2023-03-07 18:30:20 +08:00
containLabel: true
2022-06-08 14:51:11 +08:00
},
xAxis: {
2023-03-07 18:30:20 +08:00
type: 'value',
2022-06-08 14:51:11 +08:00
axisLabel: {
textStyle: {
2023-03-07 18:30:20 +08:00
color: '#fff'
2022-06-08 14:51:11 +08:00
},
formatter: function () {
2023-03-07 18:30:20 +08:00
return ''
}
2022-06-08 14:51:11 +08:00
},
splitLine: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
axisLine: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
axisTick: {
2023-03-07 18:30:20 +08:00
show: false
}
2022-06-08 14:51:11 +08:00
},
yAxis: {
2023-03-07 18:30:20 +08:00
type: 'category',
2022-06-08 14:51:11 +08:00
axisLine: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
axisTick: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
data: xData,
axisLabel: {
textStyle: {
// fontSize: 14,
2023-03-07 18:30:20 +08:00
color: 'white'
}
}
2022-06-08 14:51:11 +08:00
},
tooltip: {
2023-03-07 18:30:20 +08:00
trigger: 'axis'
2022-06-08 14:51:11 +08:00
},
series: [
{
2023-03-07 18:30:20 +08:00
name: '出勤人数',
type: 'bar',
2022-06-08 14:51:11 +08:00
barWidth: 20,
data: yData1,
2023-03-07 18:30:20 +08:00
barGap: '-100%',
2022-06-08 14:51:11 +08:00
itemStyle: {
2023-03-07 18:30:20 +08:00
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
{ offset: 1, color: '#4ADEE2' }
])
2022-06-08 14:51:11 +08:00
// barBorderRadius: 3,
2023-03-07 18:30:20 +08:00
}
2022-06-08 14:51:11 +08:00
// label: {
// show: true,
// position: "right",
// color: "white",
// textStyle: {
// fontSize: 15,
// },
// },
},
{
// For shadow
2023-03-07 18:30:20 +08:00
name: '总人数',
type: 'bar',
z: '-1',
2022-06-08 14:51:11 +08:00
itemStyle: {
// color: ["#5CE2F6", "#5181F6"],
2023-03-07 18:30:20 +08:00
color: '#5181F6'
2022-06-08 14:51:11 +08:00
// barBorderRadius: 3,
},
2023-03-07 18:30:20 +08:00
barCategoryGap: '40%',
2022-06-08 14:51:11 +08:00
data: yData2,
animation: false,
barWidth: 20,
label: {
show: true,
2023-03-07 18:30:20 +08:00
position: 'right',
color: 'white',
formatter: function (params) {
//标签内容
console.log(params)
2022-06-08 14:51:11 +08:00
for (let i = 0; i < yData1.length; i++) {
2023-03-07 18:30:20 +08:00
if (params.data == yData2[i]) {
return (
'{color1|' + yData1[i] + '}/{color2|' + yData2[i] + '}'
)
2022-06-08 14:51:11 +08:00
}
}
},
rich: {
color1: {
color: '#4ADEE2',
2023-03-07 18:30:20 +08:00
fontSize: 16
2022-06-08 14:51:11 +08:00
},
color2: {
color: '#FFFFFF',
2023-03-07 18:30:20 +08:00
fontSize: 16
2022-06-08 14:51:11 +08:00
}
},
textStyle: {
2023-03-07 18:30:20 +08:00
fontSize: 16
}
}
}
]
}
monitor.setOption(option)
2022-06-08 14:51:11 +08:00
},
//出勤人员统计
2023-03-07 18:30:20 +08:00
createPersonTypeChart(xdata, ydata, dateList) {
let monitor = echarts.init(this.$refs.personTypeChart)
2023-07-27 08:55:32 +08:00
let option = {
2023-03-07 18:30:20 +08:00
color: ['#5CE2F6', '#557DED', '#FE6C7F'],
2022-06-08 14:51:11 +08:00
tooltip: {
2023-03-07 18:30:20 +08:00
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
2022-06-08 14:51:11 +08:00
},
// .sort(function (a, b) { return a.value - b.value; })
series: [
{
2023-03-07 18:30:20 +08:00
name: /* "在职人员类型统计", */ this.$t(
'message.dataBoard.typeOfonjobPersonnelStatistics'
),
type: 'pie',
2022-06-08 14:51:11 +08:00
// radius: ["50%", "70%"],
// center: ["50%", "50%"],
data: [
{
value: this.statisticsCount.workercount.glPersonTotal,
2023-03-07 18:30:20 +08:00
name: /* "管理人员", */ this.$t(
'message.dataBoard.managePeople'
)
2022-06-08 14:51:11 +08:00
},
{
value: this.statisticsCount.workercount.lwPersonTotal,
2023-03-07 18:30:20 +08:00
name: /* "劳务人员", */ this.$t(
'message.dataBoard.contractWorkers'
)
2022-06-08 14:51:11 +08:00
},
{
value: this.statisticsCount.workercount.lsPersonTotal,
2023-03-07 18:30:20 +08:00
name: /* "临时人员", */ this.$t(
'message.dataBoard.temporaryWorkers'
)
}
2022-06-08 14:51:11 +08:00
],
// roseType: "radius",
label: {
2023-03-07 18:30:20 +08:00
color: 'rgba(255, 255, 255, 0.8)',
formatter: '{b}\n{c} ({d}%)'
2022-06-08 14:51:11 +08:00
},
labelLine: {
smooth: 0.2,
length: 3,
2023-03-07 18:30:20 +08:00
length2: 3
2022-06-08 14:51:11 +08:00
},
2023-03-07 18:30:20 +08:00
animationType: 'scale',
animationEasing: 'elasticOut',
2022-06-08 14:51:11 +08:00
animationDelay: function (idx) {
2023-03-07 18:30:20 +08:00
return Math.random() * 200
}
2022-06-08 14:51:11 +08:00
// minAngle: 10
2023-03-07 18:30:20 +08:00
}
]
}
2022-06-08 14:51:11 +08:00
let option2 = {
2023-03-07 18:30:20 +08:00
title: {
text: '注最近10日统计',
2022-06-08 14:51:11 +08:00
left: 'right',
top: 'top',
textStyle: {
color: 'rgba(255,255,255,0.5)',
2023-03-07 18:30:20 +08:00
fontSize: '14',
fontWeight: 'normal'
2022-06-08 14:51:11 +08:00
}
},
2023-03-07 18:30:20 +08:00
color: 'rgba(81, 129, 246, 1)',
2022-06-08 14:51:11 +08:00
tooltip: {
trigger: 'axis',
axisPointer: {
2023-03-07 18:30:20 +08:00
type: 'shadow'
2022-06-08 14:51:11 +08:00
},
2023-03-07 18:30:20 +08:00
backgroundColor: '#10152E',
2022-06-08 14:51:11 +08:00
padding: 15,
2023-03-07 18:30:20 +08:00
textStyle: {
fontSize: 15
2022-06-08 14:51:11 +08:00
},
formatter: function (params) {
2023-03-07 18:30:20 +08:00
console.log(params) // 当我们想要自定义提示框内容时,可以先将鼠标悬浮的数据打印出来,然后根据需求提取出来即可
2022-06-08 14:51:11 +08:00
let index = params[0].dataIndex
2023-03-07 18:30:20 +08:00
return (
dateList[index] +
'<br>' +
params[0].seriesName +
'' +
params[0].value
)
2022-06-08 14:51:11 +08:00
}
},
legend: [
{
2023-03-07 18:30:20 +08:00
data: ['人次'],
orient: 'horizontal',
x: '0',
y: '5%',
2022-06-08 14:51:11 +08:00
itemWidth: 14,
itemHeight: 4,
textStyle: {
2023-03-07 18:30:20 +08:00
color: ['rgba(255,255,255,1)'],
fontSize: 12
}
}
2022-06-08 14:51:11 +08:00
],
xAxis: {
2023-03-07 18:30:20 +08:00
type: 'category',
2022-06-08 14:51:11 +08:00
data: xdata,
axisLabel: {
2023-03-07 18:30:20 +08:00
interval: 0,
2022-06-08 14:51:11 +08:00
textStyle: {
fontSize: 14,
2023-03-07 18:30:20 +08:00
color: 'rgba(255,255,255,1)'
}
2022-06-08 14:51:11 +08:00
},
axisLine: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
axisTick: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
splitLine: {
2023-03-07 18:30:20 +08:00
show: false
}
2022-06-08 14:51:11 +08:00
},
yAxis: {
2023-03-07 18:30:20 +08:00
type: 'value',
spltNumber: 5,
2022-06-08 14:51:11 +08:00
axisLabel: {
2023-03-07 18:30:20 +08:00
interval: 0,
2022-06-08 14:51:11 +08:00
textStyle: {
fontSize: 14,
2023-03-07 18:30:20 +08:00
color: 'rgba(255,255,255,1)'
}
2022-06-08 14:51:11 +08:00
},
axisTick: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
splitLine: {
lineStyle: {
type: 'dash',
2023-03-07 18:30:20 +08:00
color: 'rgba(255, 255, 254, 0.2)'
}
2022-06-08 14:51:11 +08:00
},
axisLine: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
2023-03-07 18:30:20 +08:00
min: 0,
max: 250
2022-06-08 14:51:11 +08:00
},
series: [
{
2023-03-07 18:30:20 +08:00
name: '人次',
2022-06-08 14:51:11 +08:00
data: ydata,
2023-03-07 18:30:20 +08:00
type: 'bar',
barWidth: 15
}
]
2022-06-08 14:51:11 +08:00
}
2023-03-07 18:30:20 +08:00
monitor.setOption(option2)
2022-06-08 14:51:11 +08:00
},
// 管理人员出勤图表
2023-03-07 18:30:20 +08:00
createAdministrationPerson(xdata, ydata, dateList) {
2022-06-08 14:51:11 +08:00
let monitor = echarts.init(this.$refs.administrationPerson)
let option = {
2023-03-07 18:30:20 +08:00
title: {
text: '注最近10日统计',
2022-06-08 14:51:11 +08:00
left: 'right',
top: 'top',
textStyle: {
color: 'rgba(255,255,255,0.5)',
2023-03-07 18:30:20 +08:00
fontSize: '14',
fontWeight: 'normal'
2022-06-08 14:51:11 +08:00
}
},
2023-03-07 18:30:20 +08:00
color: 'rgba(81, 129, 246, 1)',
2022-06-08 14:51:11 +08:00
tooltip: {
2023-03-07 18:30:20 +08:00
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
backgroundColor: '#10152E',
padding: 15,
textStyle: {
fontSize: 15
},
showContent: true,
formatter: function (params) {
console.log(params) // 当我们想要自定义提示框内容时,可以先将鼠标悬浮的数据打印出来,然后根据需求提取出来即可
let index = params[0].dataIndex
return (
dateList[index] +
'<br>' +
params[0].seriesName +
'' +
params[0].value
)
2022-06-08 14:51:11 +08:00
}
},
legend: [
{
2023-03-07 18:30:20 +08:00
data: ['人次'],
orient: 'horizontal',
x: '0',
y: '5%',
2022-06-08 14:51:11 +08:00
itemWidth: 14,
itemHeight: 4,
textStyle: {
2023-03-07 18:30:20 +08:00
color: ['rgba(255,255,255,1)'],
fontSize: 12
}
}
2022-06-08 14:51:11 +08:00
],
xAxis: {
2023-03-07 18:30:20 +08:00
type: 'category',
2022-06-08 14:51:11 +08:00
data: xdata,
axisLabel: {
2023-03-07 18:30:20 +08:00
interval: 0,
2022-06-08 14:51:11 +08:00
textStyle: {
fontSize: 14,
2023-03-07 18:30:20 +08:00
color: 'rgba(255,255,255,1)'
}
2022-06-08 14:51:11 +08:00
},
axisLine: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
axisTick: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
splitLine: {
2023-03-07 18:30:20 +08:00
show: false
}
2022-06-08 14:51:11 +08:00
},
yAxis: {
2023-03-07 18:30:20 +08:00
type: 'value',
show: true,
spltNumber: 5,
barWidth: 57,
2022-06-08 14:51:11 +08:00
axisLabel: {
2023-03-07 18:30:20 +08:00
interval: 0,
2022-06-08 14:51:11 +08:00
textStyle: {
fontSize: 14,
2023-03-07 18:30:20 +08:00
color: 'rgba(255,255,255,1)'
}
2022-06-08 14:51:11 +08:00
},
axisTick: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
splitLine: {
lineStyle: {
type: 'dash',
2023-03-07 18:30:20 +08:00
color: 'rgba(255, 255, 254, 0.2)'
}
2022-06-08 14:51:11 +08:00
},
axisLine: {
2023-03-07 18:30:20 +08:00
show: false
2022-06-08 14:51:11 +08:00
},
2023-03-07 18:30:20 +08:00
min: 0,
max: 100
2022-06-08 14:51:11 +08:00
},
series: [
{
2023-03-07 18:30:20 +08:00
name: '人次',
2022-06-08 14:51:11 +08:00
data: ydata,
2023-03-07 18:30:20 +08:00
type: 'bar',
barWidth: 15
}
]
2022-06-08 14:51:11 +08:00
}
2023-03-07 18:30:20 +08:00
monitor.setOption(option)
2022-06-08 14:51:11 +08:00
}
2023-03-07 18:30:20 +08:00
}
}
2022-06-08 14:51:11 +08:00
</script>
<style lang="less" scoped>
2023-03-07 18:30:20 +08:00
/deep/ .blockBox .blockContent {
padding: 10px 10px;
}
.attendanceBox {
display: flex;
flex-wrap: wrap;
margin-top: 50px;
.attendance {
padding-top: 10px;
margin-bottom: 25px;
margin-left: 10px;
margin-right: 10px;
box-sizing: border-box;
width: 143px;
height: 63px;
text-align: center;
font-size: 16px;
border: 1px solid #235a66;
2022-06-08 14:51:11 +08:00
}
2023-03-07 18:30:20 +08:00
}
.statisticsHead {
display: flex;
justify-content: space-around;
background-image: linear-gradient(
to right,
rgba(92, 226, 246, 0),
rgba(92, 226, 246, 0.2),
rgba(92, 226, 246, 0)
);
.statisticsHead_item {
box-sizing: border-box;
width: 113px;
height: 50px;
font-size: 16px;
text-align: center;
padding-top: 5px;
span {
font-size: 20px;
2022-06-08 14:51:11 +08:00
}
}
2023-03-07 18:30:20 +08:00
}
.dataBoxContent {
.dataBox {
margin-top: 10%;
2022-06-08 14:51:11 +08:00
}
2023-03-07 18:30:20 +08:00
}
.management {
display: flex;
justify-content: space-between;
position: absolute;
top: 78%;
left: 4%;
.management_item {
box-sizing: border-box;
position: relative;
width: 120px;
text-align: start;
margin-right: 15px;
.item_content {
position: absolute;
left: 50px;
2022-06-08 14:51:11 +08:00
}
2023-03-07 18:30:20 +08:00
.itemImgBox {
width: 40px;
height: 40px;
border-radius: 50%;
img {
margin-top: 8px;
margin-left: 8px;
width: 23px;
height: 23px;
2022-06-08 14:51:11 +08:00
}
}
}
2023-03-07 18:30:20 +08:00
}
2022-06-08 14:51:11 +08:00
.bottom {
align-items: flex-start !important;
// background-size: 100% auto;
position: relative;
.blockTitle {
2023-03-07 18:30:20 +08:00
top: -110px;
2022-06-08 14:51:11 +08:00
}
.bottomInner {
height: calc(100% - 24px);
}
}
.inSenceBox {
.dataBox {
height: 28%;
}
.timeInner {
height: 24%;
float: left;
width: 50%;
margin-right: 0;
}
.blockTitle2 {
position: absolute;
top: 68%;
}
.countBox {
height: 50px;
margin: 15px 25px;
margin-left: 30px;
justify-content: space-between;
.countBoxItem {
font-size: 15px;
width: 150px;
span {
font-size: 20px;
margin: 0 5px;
}
p {
padding-top: 5px;
}
}
}
}
.safeTrainChart {
width: 50%;
height: 100%;
float: left;
}
.administrationPerson {
width: 200px;
height: 300px;
}
.chart {
width: 100%;
height: 100%;
}
.companyChart {
width: 100%;
height: calc(100% - 20px);
}
.top {
.timeInner {
float: left;
margin-bottom: 20px;
width: 33.33%;
text-align: center;
margin-right: 0;
justify-content: center;
p {
font-size: 17px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 51px;
}
}
}
.topDataBox {
height: 100%;
overflow: hidden;
.blockTitle2 {
font-size: 14px !important;
font-weight: normal;
text-align: center;
position: absolute;
right: 20%;
top: 6%;
2023-03-07 18:30:20 +08:00
color: rgba(255, 255, 255, 0.8);
2022-06-08 14:51:11 +08:00
}
.blockTitle {
font-size: 15px;
}
}
.avgageAgeBox {
position: absolute;
right: 15px;
top: -10px;
font-size: 12px;
color: rgba(255, 255, 255, 0.8);
span {
font-size: 17px;
vertical-align: middle;
}
p:first-child {
margin-bottom: 5px;
}
}
.dataBoardContent {
.personContent {
2023-03-14 13:44:11 +08:00
margin-top: -90px;
2022-06-08 14:51:11 +08:00
height: calc(100% - 55px);
overflow: hidden;
}
.personBox {
display: flex;
align-items: center;
width: calc(22% - 20px);
margin: 0 1.5% 15px;
padding: 12px 10px 8px;
background-image: linear-gradient(
rgba(21, 25, 33, 0.2),
rgba(92, 226, 246, 0.2)
);
float: left;
img {
width: 45px;
height: 58px;
}
.carDetail {
color: rgba(255, 255, 255, 0.8);
font-size: 13px;
margin-left: 10px;
.carNum {
font-size: 15px;
color: #5ce2f6;
}
}
}
}
// 蓝色
2023-03-07 18:30:20 +08:00
.dataBoardPage_blue {
.personContent {
2022-06-08 14:51:11 +08:00
background-color: rgba(38, 104, 209, 0.1);
}
2023-03-07 18:30:20 +08:00
.topInner {
.timeInner {
2022-06-08 14:51:11 +08:00
width: 25%;
}
}
}
// 湛蓝
2023-03-07 18:30:20 +08:00
.dataBoardPage_blue2 {
.personContent {
background-color: rgba(2, 99, 152, 0.2);
2022-06-08 14:51:11 +08:00
}
2023-03-07 18:30:20 +08:00
.topInner {
.timeInner {
2022-06-08 14:51:11 +08:00
width: 25%;
}
}
}
</style>