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>-->
|
|
|
|
|
|
<!-- <!– <div class="timeInner">-->
|
|
|
|
|
|
<!-- <p>劳务人员</p>-->
|
|
|
|
|
|
<!-- <div class="bg1 small"><span class="num">{{ statisticsCount.presencecount.lwPersonTotal }}</span></div>-->
|
|
|
|
|
|
<!-- </div> –>-->
|
|
|
|
|
|
<!-- <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',
|
2023-06-19 18:22:36 +08:00
|
|
|
|
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>
|