2024-09-02 18:17:17 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<view class="page">
|
2024-10-24 16:53:53 +08:00
|
|
|
|
<u-navbar
|
|
|
|
|
|
class="u-navbar"
|
|
|
|
|
|
title="首页"
|
|
|
|
|
|
placeholder
|
|
|
|
|
|
@leftClick="leftClick"
|
|
|
|
|
|
leftIconColor="#fff"
|
|
|
|
|
|
rightIcon="list"
|
|
|
|
|
|
@rightClick="onRefreshPages"
|
|
|
|
|
|
bgColor="#00337A"
|
|
|
|
|
|
:titleStyle="{ color: '#FFF', fontSize: '32rpx' }"
|
|
|
|
|
|
>
|
|
|
|
|
|
<view class="u-nav-slot" slot="right">
|
|
|
|
|
|
<text style="color: #fff" @tap="onRefreshPages">刷新</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</u-navbar>
|
2024-10-24 14:09:50 +08:00
|
|
|
|
<!-- <button class="refresh-btn" @tap="onRefreshPages">刷新</button> -->
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<scroll-view scroll-y="true">
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<!-- 轮播图区域 -->
|
2024-10-14 18:08:48 +08:00
|
|
|
|
<swiper class="swiper-container" autoplay interval="3000" circular indicator-dots>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<!-- 轮播图 1 -->
|
|
|
|
|
|
<swiper-item class="item_1 swiper-item-container">
|
|
|
|
|
|
<view>
|
|
|
|
|
|
<image
|
|
|
|
|
|
class="img-container"
|
|
|
|
|
|
src="../../../static/images/img-phase-two/index_img_one_person.png"
|
|
|
|
|
|
mode=""
|
|
|
|
|
|
></image>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<text>今日考勤:{{ attPersonNum }}</text>
|
|
|
|
|
|
<text>固定人员:{{ einFormalAttPersonNum }}</text>
|
|
|
|
|
|
<text>临时人员:{{ einTemporaryAttPersonNum }}</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
<view>
|
|
|
|
|
|
<image
|
|
|
|
|
|
class="img-container"
|
|
|
|
|
|
src="../../../static/images/img-phase-two/index_img_one_att.png"
|
|
|
|
|
|
mode=""
|
|
|
|
|
|
></image>
|
2024-10-21 09:44:15 +08:00
|
|
|
|
<text>
|
|
|
|
|
|
在场考勤率:{{
|
|
|
|
|
|
isNaN(((attPersonNum / einPersonNum) * 100).toFixed(2))
|
|
|
|
|
|
? 0
|
|
|
|
|
|
: ((attPersonNum / einPersonNum) * 100).toFixed(2)
|
|
|
|
|
|
}}%
|
|
|
|
|
|
</text>
|
|
|
|
|
|
<text>
|
|
|
|
|
|
计划考勤率:{{
|
|
|
|
|
|
isNaN(((planAttNum / planPersonNum) * 100).toFixed(2))
|
|
|
|
|
|
? 0
|
|
|
|
|
|
: ((planAttNum / planPersonNum) * 100).toFixed(2)
|
|
|
|
|
|
}}%
|
|
|
|
|
|
</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<text class="none-box">计划考勤率:20%</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</swiper-item>
|
|
|
|
|
|
<!-- 轮播图 2 -->
|
|
|
|
|
|
<swiper-item class="item_2 swiper-item-container">
|
|
|
|
|
|
<view>
|
|
|
|
|
|
<image
|
|
|
|
|
|
class="img-container-2"
|
|
|
|
|
|
src="../../../static/images/img-phase-two/index_img_two_risk.png"
|
|
|
|
|
|
mode=""
|
|
|
|
|
|
></image>
|
|
|
|
|
|
<text>今日风险</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<text>高风险:{{ highRiskNum }}</text>
|
2024-10-11 18:01:58 +08:00
|
|
|
|
<text>中风险:{{ mediumRiskNum }}</text>
|
|
|
|
|
|
<text>低风险:{{ lowRiskNum }}</text>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<text>计划作业人数:{{ planPersonNum }}</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</swiper-item>
|
|
|
|
|
|
<!-- 轮播图 3 -->
|
|
|
|
|
|
<swiper-item class="item_3 swiper-item-container">
|
|
|
|
|
|
<view>
|
|
|
|
|
|
<image
|
|
|
|
|
|
class="img-container"
|
|
|
|
|
|
src="../../../static/images/img-phase-two/index_img_three_ein.png"
|
|
|
|
|
|
mode=""
|
|
|
|
|
|
></image>
|
2024-10-11 18:01:58 +08:00
|
|
|
|
<text>在场人数:{{ einPersonNum }}</text>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<text>固定人数:{{ formalPersonNum }}</text>
|
|
|
|
|
|
<text>临时人数:{{ temporaryPersonNum }}</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
<view>
|
|
|
|
|
|
<image
|
|
|
|
|
|
class="img-container"
|
|
|
|
|
|
src="../../../static/images/img-phase-two/index_img_three_light.png"
|
|
|
|
|
|
mode=""
|
|
|
|
|
|
></image>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<text>绿灯人数:{{ greenNum }}</text>
|
|
|
|
|
|
<text>黄灯人数:{{ yellowNum }}</text>
|
|
|
|
|
|
<text>红灯人数:{{ redNum }}</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</swiper-item>
|
|
|
|
|
|
<swiper-item class="item_4 swiper-item-container">
|
|
|
|
|
|
<view>
|
|
|
|
|
|
<image
|
|
|
|
|
|
class="img-container-2"
|
|
|
|
|
|
src="../../../static/images/img-phase-two/index_img_four_pro.png"
|
|
|
|
|
|
mode=""
|
|
|
|
|
|
></image>
|
|
|
|
|
|
<text>项目信息</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view>
|
2024-10-11 18:01:58 +08:00
|
|
|
|
<text>在建工程:{{ buildProNum }}</text>
|
|
|
|
|
|
<text>投入分包:{{ subNum }}</text>
|
|
|
|
|
|
<text>在用班组:{{ teamNum }}</text>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<text>在场人员:{{ einPersonNum }}</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
2024-09-02 18:17:17 +08:00
|
|
|
|
</swiper-item>
|
|
|
|
|
|
</swiper>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
|
|
|
|
|
|
<!-- 风险提示 -->
|
|
|
|
|
|
<view class="today-warning">
|
|
|
|
|
|
<image class="warning-img" src="../../../static/images/img-phase-two/index_news.png" mode=""></image>
|
|
|
|
|
|
<text>今日风险</text>
|
2024-10-17 13:53:40 +08:00
|
|
|
|
<view class="uni-notice-bar" @tap="onJumpWorkPlan">
|
2024-10-11 18:01:58 +08:00
|
|
|
|
<uni-notice-bar
|
|
|
|
|
|
style="height: 100%"
|
|
|
|
|
|
:speed="30"
|
|
|
|
|
|
background-color="#fff"
|
|
|
|
|
|
scrollable
|
2024-10-14 16:07:13 +08:00
|
|
|
|
:text="noticeText"
|
2024-10-11 18:01:58 +08:00
|
|
|
|
></uni-notice-bar>
|
|
|
|
|
|
</view>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 数据概览 -->
|
|
|
|
|
|
<view class="data-overview common-style">
|
|
|
|
|
|
<h3>数据概览</h3>
|
|
|
|
|
|
<view class="data-overview-content">
|
2024-10-18 09:04:48 +08:00
|
|
|
|
<view v-for="item in dataOverviewList" :key="item.data_title" @click="godataView(item)">
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<image class="data-overview-img" :src="item.data_img_src" mode=""></image>
|
|
|
|
|
|
<view class="data-overview-item">
|
|
|
|
|
|
<text>{{ item.data_num }}</text>
|
|
|
|
|
|
<text>{{ item.data_title }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 人员考勤 -->
|
|
|
|
|
|
<view class="check-work-attendance common-style">
|
|
|
|
|
|
<h3>人员考勤率</h3>
|
|
|
|
|
|
<view class="check-work-attendance-container">
|
2024-10-18 15:12:22 +08:00
|
|
|
|
<view v-for="item in progressList" :key="item.progress_title" @tap="onJumpPersonList(item.progress_title)">
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<view class="top-title">
|
|
|
|
|
|
<text>{{ item.progress_title }}</text>
|
2024-10-22 10:52:39 +08:00
|
|
|
|
<text :style="{ color: item.textColor }">
|
|
|
|
|
|
{{ isNaN(item.progress_proportion) ? 0 : item.progress_proportion }}%
|
|
|
|
|
|
</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
<view class="bottom-progress">
|
|
|
|
|
|
<view class="progress-box">
|
|
|
|
|
|
<progress :activeColor="item.textColor" :percent="item.progress_proportion" stroke-width="6" />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<text>{{ item.progress_ready }}/{{ item.progress_amount }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 工程概况 -->
|
|
|
|
|
|
<view class="project-container common-style">
|
|
|
|
|
|
<h3>工程概况</h3>
|
|
|
|
|
|
<view class="project-content">
|
2024-10-18 15:12:22 +08:00
|
|
|
|
<view v-for="item in projectList" :key="item.project_title" @tap="onJumpProjectList(item.project_title)">
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<view class="top-title">
|
|
|
|
|
|
<text>{{ item.project_title }}</text>
|
|
|
|
|
|
<text>{{ item.project_num }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="bottom-progress">
|
|
|
|
|
|
<view class="progress-box">
|
|
|
|
|
|
<progress :activeColor="item.textColor" :percent="item.project_ratio" stroke-width="6" />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<!-- 饼图 -->
|
|
|
|
|
|
<view class="charts_container">
|
|
|
|
|
|
<PieChartsModel />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<!-- 柱状图 -->
|
|
|
|
|
|
<view class="charts_container">
|
|
|
|
|
|
<BarChartsModel />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 在场人员概况 -->
|
|
|
|
|
|
<view class="person-container common-style">
|
|
|
|
|
|
<h3>在场人员概况</h3>
|
|
|
|
|
|
<view class="person-content">
|
2024-10-18 15:12:22 +08:00
|
|
|
|
<view @tap="onJumpColorLight(1)">
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<image class="person-img" src="../../../static/images/img-phase-two/index_green_light.png" mode=""></image>
|
2024-10-21 09:44:15 +08:00
|
|
|
|
<text class="text-strong">
|
|
|
|
|
|
{{
|
|
|
|
|
|
isNaN(((greenNum / colorAmount) * 100).toFixed(2)) ? 0 : ((greenNum / colorAmount) * 100).toFixed(2)
|
|
|
|
|
|
}}%
|
|
|
|
|
|
</text>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<text>{{ greenNum }}</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
2024-10-18 15:12:22 +08:00
|
|
|
|
<view @tap="onJumpColorLight(2)">
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<image class="person-img" src="../../../static/images/img-phase-two/index_yellow_light.png" mode=""></image>
|
2024-10-21 09:44:15 +08:00
|
|
|
|
<text class="text-strong">
|
|
|
|
|
|
{{
|
|
|
|
|
|
isNaN(((yellowNum / colorAmount) * 100).toFixed(2)) ? 0 : ((yellowNum / colorAmount) * 100).toFixed(2)
|
|
|
|
|
|
}}%
|
|
|
|
|
|
</text>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<text>{{ yellowNum }}</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
2024-10-18 15:12:22 +08:00
|
|
|
|
<view @tap="onJumpColorLight(3)">
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<image class="person-img" src="../../../static/images/img-phase-two/index_red_light.png" mode=""></image>
|
2024-10-21 09:44:15 +08:00
|
|
|
|
<text class="text-strong">
|
|
|
|
|
|
{{ isNaN(((redNum / colorAmount) * 100).toFixed(2)) ? 0 : ((redNum / colorAmount) * 100).toFixed(2) }}%
|
|
|
|
|
|
</text>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<text>{{ redNum }}</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="gender-content">
|
|
|
|
|
|
<view class="man-left">
|
|
|
|
|
|
<view>
|
2024-10-21 09:44:15 +08:00
|
|
|
|
<view>
|
|
|
|
|
|
{{ isNaN(((maleNum / sexAmount) * 100).toFixed(2)) ? 0 : ((maleNum / sexAmount) * 100).toFixed(2) }}%
|
|
|
|
|
|
</view>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<view>男({{ maleNum }})</view>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
|
2024-10-24 16:53:53 +08:00
|
|
|
|
<view @tap="onJumpColorLight(4)" class="gender-img">
|
2024-10-24 13:56:14 +08:00
|
|
|
|
<PieChartsModelMan />
|
|
|
|
|
|
</view>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
<view class="girl-right">
|
2024-10-24 16:53:53 +08:00
|
|
|
|
<view @tap="onJumpColorLight(5)" class="gender-img">
|
2024-10-24 13:56:14 +08:00
|
|
|
|
<PieChartsModelGirl />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<view>
|
2024-10-21 09:44:15 +08:00
|
|
|
|
<view>
|
|
|
|
|
|
{{
|
|
|
|
|
|
isNaN(((femaleNum / sexAmount) * 100).toFixed(2)) ? 0 : ((femaleNum / sexAmount) * 100).toFixed(2)
|
|
|
|
|
|
}}%
|
|
|
|
|
|
</view>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<view>女({{ femaleNum }})</view>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<h5>固定、临时人员</h5>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="person-num">
|
2024-10-18 15:12:22 +08:00
|
|
|
|
<view style="color: #04cdfa" @tap="onJumpColorLight(6)">
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<image
|
|
|
|
|
|
style="width: 60rpx; height: 60rpx; margin-left: 10rpx"
|
|
|
|
|
|
src="../../../static/images/img-phase-two/index_img_person.png"
|
|
|
|
|
|
mode=""
|
|
|
|
|
|
></image>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
{{ formalPersonNum }}
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
2024-10-18 15:12:22 +08:00
|
|
|
|
<view style="color: #fd8d01" @tap="onJumpColorLight(7)">
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<image
|
|
|
|
|
|
style="width: 60rpx; height: 60rpx; margin-right: 10rpx"
|
|
|
|
|
|
src="../../../static/images/img-phase-two/index_img_person.png"
|
|
|
|
|
|
mode=""
|
|
|
|
|
|
></image>
|
2024-10-14 16:07:13 +08:00
|
|
|
|
{{ temporaryPersonNum }}
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="person-num-progress">
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<progress
|
|
|
|
|
|
activeColor="#52bff3"
|
|
|
|
|
|
backgroundColor="#fac13b"
|
|
|
|
|
|
:percent="(formalPersonNum / (formalPersonNum + temporaryPersonNum)) * 100"
|
|
|
|
|
|
stroke-width="6"
|
|
|
|
|
|
/>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="person-proportion">
|
2024-10-14 16:07:13 +08:00
|
|
|
|
<text style="color: #04cdfa">
|
2024-10-21 09:44:15 +08:00
|
|
|
|
固定占比{{
|
|
|
|
|
|
isNaN(((formalPersonNum / (formalPersonNum + temporaryPersonNum)) * 100).toFixed(2))
|
|
|
|
|
|
? 0
|
|
|
|
|
|
: ((formalPersonNum / (formalPersonNum + temporaryPersonNum)) * 100).toFixed(2)
|
|
|
|
|
|
}}%
|
2024-10-14 16:07:13 +08:00
|
|
|
|
</text>
|
|
|
|
|
|
<text style="color: #fd8d01">
|
2024-10-21 09:44:15 +08:00
|
|
|
|
流动占比
|
|
|
|
|
|
{{
|
|
|
|
|
|
isNaN(((temporaryPersonNum / (formalPersonNum + temporaryPersonNum)) * 100).toFixed(2))
|
|
|
|
|
|
? 0
|
|
|
|
|
|
: ((temporaryPersonNum / (formalPersonNum + temporaryPersonNum)) * 100).toFixed(2)
|
|
|
|
|
|
}}%
|
2024-10-14 16:07:13 +08:00
|
|
|
|
</text>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
|
|
<view class="charts_container">
|
|
|
|
|
|
<PieChartsModelRing />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="charts_container">
|
2024-10-12 16:03:45 +08:00
|
|
|
|
<PieChartsModelRingTwo />
|
2024-10-11 13:43:16 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</scroll-view>
|
2024-10-18 15:12:22 +08:00
|
|
|
|
|
|
|
|
|
|
<!-- 选择工程弹窗 -->
|
|
|
|
|
|
<u-popup :show="showPopup" mode="center" @close="closePopup">
|
|
|
|
|
|
<view style="width: 500rpx; height: auto%; position: relative; background-color: #fff">
|
|
|
|
|
|
<view
|
|
|
|
|
|
style="
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 70rpx;
|
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
|
"
|
|
|
|
|
|
>
|
|
|
|
|
|
<view style="width: 50%; height: 70rpx; line-height: 70rpx; font-weight: bold; margin-left: 40rpx">
|
|
|
|
|
|
选择工程
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<u-icon style="width: 10%" name="close" color="#000" size="24" @click="closePopup"></u-icon>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<scroll-view style="width: 100%; height: 50vh; background-color: #fff" scroll-y="true">
|
|
|
|
|
|
<view
|
|
|
|
|
|
v-for="(item, index) in proList"
|
|
|
|
|
|
:key="index"
|
|
|
|
|
|
style="padding: 20rpx"
|
|
|
|
|
|
v-if="item.isActive == 1"
|
|
|
|
|
|
@click="chosenPro(item)"
|
|
|
|
|
|
>
|
|
|
|
|
|
{{ item.abbreviation }}
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</scroll-view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</u-popup>
|
2024-10-11 13:43:16 +08:00
|
|
|
|
|
2024-09-02 18:17:17 +08:00
|
|
|
|
<m-tabbar fixed fill :current="0" :tabbar="tabbar"></m-tabbar>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
import TabbarConfig from '../util/tabbar.js'
|
|
|
|
|
|
import config from '@/config'
|
2024-10-11 13:43:16 +08:00
|
|
|
|
import AES from '@/utils/realNameAes.js'
|
|
|
|
|
|
import PieChartsModel from './components/pie-charts-model'
|
|
|
|
|
|
import BarChartsModel from './components/bar-charts-model'
|
|
|
|
|
|
import PieChartsModelRing from './components/pie-charts-model-ring'
|
2024-10-12 16:03:45 +08:00
|
|
|
|
import PieChartsModelRingTwo from './components/pie-charts-model-ring-two'
|
2024-10-24 13:56:14 +08:00
|
|
|
|
import PieChartsModelMan from './components/pie-charts-model-man.vue'
|
|
|
|
|
|
import PieChartsModelGirl from './components/pie-charts-model-girl.vue'
|
2024-10-11 18:01:58 +08:00
|
|
|
|
import { getHomePageListApi } from '@/api/phaseTwo/homePage'
|
2024-10-24 13:56:14 +08:00
|
|
|
|
|
2024-09-02 18:17:17 +08:00
|
|
|
|
export default {
|
2024-10-11 13:43:16 +08:00
|
|
|
|
components: {
|
|
|
|
|
|
PieChartsModel,
|
|
|
|
|
|
BarChartsModel,
|
2024-10-12 16:03:45 +08:00
|
|
|
|
PieChartsModelRing,
|
2024-10-24 13:56:14 +08:00
|
|
|
|
PieChartsModelRingTwo,
|
|
|
|
|
|
PieChartsModelMan,
|
|
|
|
|
|
PieChartsModelGirl
|
2024-10-11 13:43:16 +08:00
|
|
|
|
},
|
2024-09-02 18:17:17 +08:00
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
userId: uni.getStorageSync('userId'),
|
|
|
|
|
|
tabbar: TabbarConfig,
|
2024-10-18 15:12:22 +08:00
|
|
|
|
type: uni.getStorageSync('realNameUser').type,
|
|
|
|
|
|
subId: uni.getStorageSync('realNameUser').subId,
|
|
|
|
|
|
showPopup: false,
|
|
|
|
|
|
proList: [],
|
2024-10-11 13:43:16 +08:00
|
|
|
|
msgList: [],
|
|
|
|
|
|
dataOverviewList: [
|
|
|
|
|
|
{
|
|
|
|
|
|
data_title: '在建工程',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
data_num: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
data_img_src: '../../../static/images/img-phase-two/index_img_pro.png'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
data_title: '在用分包单位',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
data_num: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
data_img_src: '../../../static/images/img-phase-two/index_img_sub.png'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
data_title: '在用班组',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
data_num: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
data_img_src: '../../../static/images/img-phase-two/index_img_team.png'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
data_title: '在场人数',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
data_num: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
data_img_src: '../../../static/images/img-phase-two/index_img_person.png'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
data_title: '日计划打卡数',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
data_num: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
data_img_src: '../../../static/images/img-phase-two/index_img_plan_person.png'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
data_title: '今日打卡',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
data_num: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
data_img_src: '../../../static/images/img-phase-two/index_img_att.png'
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
|
|
progressList: [
|
|
|
|
|
|
{
|
2024-10-14 16:07:13 +08:00
|
|
|
|
progress_title: '在场考勤率',
|
|
|
|
|
|
progress_proportion: 0,
|
|
|
|
|
|
progress_amount: 0,
|
|
|
|
|
|
progress_ready: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
textColor: '#17cef3'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
progress_title: '作业考勤率',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
progress_proportion: 0,
|
|
|
|
|
|
progress_amount: 0,
|
|
|
|
|
|
progress_ready: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
textColor: '#25c294'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
progress_title: '在场人员(固定)',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
progress_proportion: 0,
|
|
|
|
|
|
progress_amount: 0,
|
|
|
|
|
|
progress_ready: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
textColor: '#f2df55'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
progress_title: '在场人员(临时)',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
progress_proportion: 0,
|
|
|
|
|
|
progress_amount: 0,
|
|
|
|
|
|
progress_ready: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
textColor: '#186ff0'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
progress_title: '考勤率(固定人员)',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
progress_proportion: 0,
|
|
|
|
|
|
progress_amount: 0,
|
|
|
|
|
|
progress_ready: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
textColor: '#f9971e'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
progress_title: '考勤率(临时人员)',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
progress_proportion: 0,
|
|
|
|
|
|
progress_amount: 0,
|
|
|
|
|
|
progress_ready: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
textColor: '#f44d46'
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
|
|
projectList: [
|
|
|
|
|
|
{
|
|
|
|
|
|
project_title: '在建',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
project_ratio: 0,
|
|
|
|
|
|
project_num: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
textColor: '#186ff0'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
project_title: '筹建',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
project_ratio: 0,
|
|
|
|
|
|
project_num: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
textColor: '#f2df55'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
project_title: '停工',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
project_ratio: 0,
|
|
|
|
|
|
project_num: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
textColor: '#f9971e'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
project_title: '完工',
|
2024-10-14 16:07:13 +08:00
|
|
|
|
project_ratio: 0,
|
|
|
|
|
|
project_num: 0,
|
2024-10-11 13:43:16 +08:00
|
|
|
|
textColor: '#25c294'
|
|
|
|
|
|
}
|
2024-10-11 18:01:58 +08:00
|
|
|
|
],
|
|
|
|
|
|
|
2024-10-14 16:07:13 +08:00
|
|
|
|
attPersonNum: 0,
|
|
|
|
|
|
einFormalAttPersonNum: 0,
|
|
|
|
|
|
einTemporaryAttPersonNum: 0,
|
|
|
|
|
|
|
|
|
|
|
|
highRiskNum: 0,
|
2024-10-11 18:01:58 +08:00
|
|
|
|
mediumRiskNum: 0,
|
|
|
|
|
|
lowRiskNum: 0,
|
|
|
|
|
|
planPersonNum: 0,
|
2024-10-14 16:07:13 +08:00
|
|
|
|
|
|
|
|
|
|
einPersonNum: 0,
|
|
|
|
|
|
formalPersonNum: 0,
|
|
|
|
|
|
temporaryPersonNum: 0,
|
|
|
|
|
|
greenNum: 0,
|
|
|
|
|
|
yellowNum: 0,
|
|
|
|
|
|
redNum: 0,
|
|
|
|
|
|
|
2024-10-11 18:01:58 +08:00
|
|
|
|
buildProNum: 0,
|
|
|
|
|
|
subNum: 0,
|
|
|
|
|
|
teamNum: 0,
|
2024-10-14 16:07:13 +08:00
|
|
|
|
planAttNum: 0,
|
|
|
|
|
|
noticeText: '',
|
|
|
|
|
|
|
|
|
|
|
|
maleNum: 0,
|
|
|
|
|
|
femaleNum: 0,
|
2024-10-18 15:12:22 +08:00
|
|
|
|
sexAmount: 0,
|
|
|
|
|
|
|
|
|
|
|
|
colorAmount: 0
|
2024-10-14 16:07:13 +08:00
|
|
|
|
|
|
|
|
|
|
// planProNum: 0,
|
|
|
|
|
|
// redPersonNum: 0,
|
|
|
|
|
|
// yellowPersonNum: 0,
|
|
|
|
|
|
// greenPersonNum: 0,
|
|
|
|
|
|
// buildProNum: 0,
|
|
|
|
|
|
// subNum: 0,
|
|
|
|
|
|
// teamNum: 0,
|
|
|
|
|
|
// subNum: 0
|
|
|
|
|
|
// formalPersonNum: 0
|
2024-09-02 18:17:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
onLoad() {
|
2024-10-23 10:28:08 +08:00
|
|
|
|
// console.log('?? ~ mounted ~ mounted-index:')
|
|
|
|
|
|
// this.getLogin()
|
2024-10-11 18:01:58 +08:00
|
|
|
|
this.getHomePageListData()
|
2024-10-18 15:12:22 +08:00
|
|
|
|
if (this.type.indexOf('4') > -1) {
|
|
|
|
|
|
//监督端
|
|
|
|
|
|
this.getPro()
|
|
|
|
|
|
}
|
2024-10-18 09:27:21 +08:00
|
|
|
|
},
|
2024-10-24 13:56:14 +08:00
|
|
|
|
|
2024-10-18 09:27:21 +08:00
|
|
|
|
onShow() {
|
2024-10-18 15:12:22 +08:00
|
|
|
|
if (this.type.indexOf('4') > -1) {
|
|
|
|
|
|
//监督端
|
|
|
|
|
|
let hasChosenPro = uni.getStorageSync('hasChosenPro')
|
|
|
|
|
|
if (!hasChosenPro) {
|
|
|
|
|
|
this.showPopup = true
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-09-02 18:17:17 +08:00
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
2024-10-11 13:43:16 +08:00
|
|
|
|
getLogin() {
|
|
|
|
|
|
const realParams = {
|
|
|
|
|
|
username: AES.encrypt(uni.getStorageSync('userPhone')),
|
|
|
|
|
|
password: AES.encrypt('YNsbd@123456'),
|
|
|
|
|
|
jwtToken: uni.getStorageSync('App-Token')
|
|
|
|
|
|
}
|
|
|
|
|
|
uni.request({
|
|
|
|
|
|
url: config.realLoginUrl + 'login',
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
data: JSON.stringify(realParams),
|
|
|
|
|
|
header: {
|
|
|
|
|
|
'Content-Type': 'application/json'
|
|
|
|
|
|
},
|
|
|
|
|
|
success: res => {
|
2024-11-03 15:24:43 +08:00
|
|
|
|
console.log('?? ~ gotoYy ~ res------:', res)
|
2024-10-11 13:43:16 +08:00
|
|
|
|
// console.log('?? ~ gotoYy ~ res:', res.data.token)
|
|
|
|
|
|
if (res.data.code == 200) {
|
|
|
|
|
|
// uni.setStorageSync('tjToken', res.data.token)
|
|
|
|
|
|
uni.setStorageSync('realNameToken', res.data.data.access_token)
|
|
|
|
|
|
uni.setStorageSync('realNameUser', res.data.data.loginUser.sysUser)
|
|
|
|
|
|
uni.setStorageSync('realNamePermissions', res.data.data.loginUser.permissions)
|
|
|
|
|
|
uni.removeStorageSync('hasChosenPro')
|
|
|
|
|
|
} else {
|
|
|
|
|
|
uni.showToast({
|
|
|
|
|
|
title: res.message,
|
|
|
|
|
|
icon: 'none'
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
fail: err => {
|
|
|
|
|
|
console.log('?? ~ gotoYy ~ err:', err)
|
|
|
|
|
|
uni.showToast({
|
|
|
|
|
|
title: err.message,
|
|
|
|
|
|
icon: 'none'
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
2024-10-18 15:12:22 +08:00
|
|
|
|
|
|
|
|
|
|
//监督端获取工程列表
|
|
|
|
|
|
getPro() {
|
|
|
|
|
|
let param = {
|
|
|
|
|
|
id: -1,
|
|
|
|
|
|
subId: this.subId
|
|
|
|
|
|
}
|
|
|
|
|
|
console.log(param)
|
|
|
|
|
|
uni.request({
|
|
|
|
|
|
url: config.realAppUrl + '/offLine/getPro',
|
|
|
|
|
|
method: 'post',
|
|
|
|
|
|
data: param,
|
|
|
|
|
|
header: {
|
|
|
|
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
|
|
|
|
Authorization: uni.getStorageSync('realNameToken')
|
|
|
|
|
|
},
|
|
|
|
|
|
success: res => {
|
|
|
|
|
|
console.log(res)
|
|
|
|
|
|
res = res.data
|
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
|
|
this.proList = res.data
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
fail: err => {
|
|
|
|
|
|
console.log(err)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
//展示工程选择弹窗
|
2024-09-02 18:17:17 +08:00
|
|
|
|
leftClick() {
|
2024-10-24 10:51:32 +08:00
|
|
|
|
// console.log('返回')
|
|
|
|
|
|
// if (this.type.indexOf('4') > -1) {
|
|
|
|
|
|
// this.showPopup = true
|
|
|
|
|
|
// }
|
|
|
|
|
|
uni.navigateTo({ url: '/pages/gzt/index' })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
},
|
|
|
|
|
|
//选择工程
|
|
|
|
|
|
chosenPro(item) {
|
|
|
|
|
|
let obj = uni.getStorageSync('realNameUser')
|
|
|
|
|
|
obj.proId = item.id
|
|
|
|
|
|
uni.setStorageSync('realNameUser', obj)
|
|
|
|
|
|
uni.setStorageSync('hasChosenPro', '1')
|
|
|
|
|
|
this.showPopup = false
|
|
|
|
|
|
},
|
|
|
|
|
|
closePopup() {
|
|
|
|
|
|
this.showPopup = false
|
|
|
|
|
|
},
|
|
|
|
|
|
openFaceScan() {
|
|
|
|
|
|
face.open(['a', 'c'], function (e) {
|
|
|
|
|
|
face.close()
|
|
|
|
|
|
})
|
2024-10-11 13:43:16 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
2024-10-14 16:07:13 +08:00
|
|
|
|
/* 获取首页数据 */
|
|
|
|
|
|
async getHomePageListData() {
|
|
|
|
|
|
const { data: res } = await getHomePageListApi({})
|
|
|
|
|
|
console.log('首页数据', res)
|
|
|
|
|
|
|
2024-10-21 09:44:15 +08:00
|
|
|
|
if (!res) return
|
|
|
|
|
|
|
2024-10-14 16:07:13 +08:00
|
|
|
|
const { homePageBean, personAtt, workerMsgBean, proMsgBean } = res
|
|
|
|
|
|
const { highRiskNum, mediumRiskNum, lowRiskNum, planPersonNum } = homePageBean
|
|
|
|
|
|
const { buildProNum, prepareProNum, stopProNum, completeProNum } = proMsgBean
|
|
|
|
|
|
this.noticeText = `高风险:${highRiskNum} 中风险:${mediumRiskNum} 低风险:${lowRiskNum} 作业计划人数:${planPersonNum}`
|
|
|
|
|
|
this.highRiskNum = homePageBean.highRiskNum
|
|
|
|
|
|
this.mediumRiskNum = homePageBean.mediumRiskNum
|
|
|
|
|
|
this.lowRiskNum = homePageBean.lowRiskNum
|
|
|
|
|
|
this.planPersonNum = homePageBean.planPersonNum
|
|
|
|
|
|
|
|
|
|
|
|
this.attPersonNum = personAtt.attPersonNum
|
|
|
|
|
|
this.einFormalAttPersonNum = personAtt.einFormalAttPersonNum
|
|
|
|
|
|
this.einTemporaryAttPersonNum = personAtt.einTemporaryAttPersonNum
|
|
|
|
|
|
this.planAttNum = personAtt.planAttNum
|
|
|
|
|
|
|
|
|
|
|
|
this.einPersonNum = homePageBean.einPersonNum
|
|
|
|
|
|
this.formalPersonNum = personAtt.formalPersonNum
|
|
|
|
|
|
this.temporaryPersonNum = personAtt.temporaryPersonNum
|
|
|
|
|
|
|
|
|
|
|
|
this.greenNum = workerMsgBean.greenNum
|
|
|
|
|
|
this.yellowNum = workerMsgBean.yellowNum
|
|
|
|
|
|
this.redNum = workerMsgBean.redNum
|
|
|
|
|
|
|
|
|
|
|
|
this.maleNum = workerMsgBean.maleNum
|
|
|
|
|
|
this.femaleNum = workerMsgBean.femaleNum
|
|
|
|
|
|
this.sexAmount = this.maleNum + this.femaleNum
|
|
|
|
|
|
this.colorAmount = this.greenNum + this.yellowNum + this.redNum
|
|
|
|
|
|
|
|
|
|
|
|
this.buildProNum = homePageBean.buildProNum
|
|
|
|
|
|
this.subNum = homePageBean.subNum
|
|
|
|
|
|
this.teamNum = homePageBean.teamNum
|
|
|
|
|
|
// this.einPersonNum = homePageBean.einPersonNum
|
|
|
|
|
|
|
|
|
|
|
|
this.dataOverviewList[0].data_num = this.buildProNum
|
|
|
|
|
|
this.dataOverviewList[1].data_num = this.subNum
|
|
|
|
|
|
this.dataOverviewList[2].data_num = this.teamNum
|
|
|
|
|
|
this.dataOverviewList[3].data_num = this.einPersonNum
|
|
|
|
|
|
this.dataOverviewList[4].data_num = this.planAttNum
|
|
|
|
|
|
this.dataOverviewList[5].data_num = this.attPersonNum
|
|
|
|
|
|
|
|
|
|
|
|
this.progressList.forEach((e, i) => {
|
|
|
|
|
|
if (i === 0 || i === 2 || i === 3) {
|
|
|
|
|
|
e.progress_amount = this.einPersonNum
|
|
|
|
|
|
}
|
|
|
|
|
|
if (i === 0) {
|
|
|
|
|
|
e.progress_ready = this.attPersonNum
|
|
|
|
|
|
}
|
|
|
|
|
|
if (i === 1) {
|
|
|
|
|
|
e.progress_amount = this.planPersonNum
|
|
|
|
|
|
e.progress_ready = this.planAttNum
|
|
|
|
|
|
}
|
|
|
|
|
|
if (i === 2) {
|
|
|
|
|
|
e.progress_ready = this.formalPersonNum
|
|
|
|
|
|
}
|
|
|
|
|
|
if (i === 3) {
|
|
|
|
|
|
e.progress_ready = this.temporaryPersonNum
|
|
|
|
|
|
}
|
|
|
|
|
|
if (i === 4) {
|
|
|
|
|
|
e.progress_amount = this.formalPersonNum
|
|
|
|
|
|
e.progress_ready = this.einFormalAttPersonNum
|
|
|
|
|
|
}
|
|
|
|
|
|
if (i === 5) {
|
|
|
|
|
|
e.progress_amount = this.einTemporaryAttPersonNum
|
|
|
|
|
|
e.progress_ready = this.einTemporaryAttPersonNum
|
|
|
|
|
|
}
|
2024-10-22 10:52:39 +08:00
|
|
|
|
e.progress_proportion = ((e.progress_ready / e.progress_amount) * 100).toFixed(2)
|
2024-10-14 16:07:13 +08:00
|
|
|
|
})
|
2024-10-11 13:43:16 +08:00
|
|
|
|
|
2024-10-14 16:07:13 +08:00
|
|
|
|
console.log('this.progressList', this.progressList)
|
|
|
|
|
|
const proAmount = buildProNum + prepareProNum + stopProNum + completeProNum
|
|
|
|
|
|
this.projectList.forEach((e, i) => {
|
|
|
|
|
|
if (i === 0) {
|
|
|
|
|
|
e.project_num = buildProNum
|
|
|
|
|
|
}
|
|
|
|
|
|
if (i === 1) {
|
|
|
|
|
|
e.project_num = prepareProNum
|
|
|
|
|
|
}
|
|
|
|
|
|
if (i === 2) {
|
|
|
|
|
|
e.project_num = stopProNum
|
|
|
|
|
|
}
|
|
|
|
|
|
if (i === 3) {
|
|
|
|
|
|
e.project_num = completeProNum
|
|
|
|
|
|
}
|
2024-10-11 13:43:16 +08:00
|
|
|
|
|
2024-10-22 10:52:39 +08:00
|
|
|
|
e.project_ratio = ((e.project_num / proAmount) * 100).toFixed(2)
|
2024-10-14 16:07:13 +08:00
|
|
|
|
})
|
2024-10-17 13:53:40 +08:00
|
|
|
|
},
|
|
|
|
|
|
/* 跳转作业计划 */
|
|
|
|
|
|
onJumpWorkPlan() {
|
|
|
|
|
|
uni.navigateTo({ url: '/pages/realName/workPlan/index' })
|
2024-10-18 09:04:48 +08:00
|
|
|
|
},
|
2024-10-18 18:03:29 +08:00
|
|
|
|
|
2024-10-18 15:12:22 +08:00
|
|
|
|
//数据概览跳转
|
|
|
|
|
|
godataView(item) {
|
|
|
|
|
|
console.log(item)
|
2024-10-18 18:03:29 +08:00
|
|
|
|
if (item.data_title == '在建工程') {
|
2024-10-24 16:53:53 +08:00
|
|
|
|
let name = '在建'
|
|
|
|
|
|
let currentIndex = 1
|
|
|
|
|
|
const survey = {
|
|
|
|
|
|
name,
|
|
|
|
|
|
currentIndex
|
|
|
|
|
|
}
|
|
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/project?survey=${JSON.stringify(survey)}` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
}
|
2024-10-18 18:03:29 +08:00
|
|
|
|
if (item.data_title == '在用分包单位') {
|
2024-10-18 15:12:22 +08:00
|
|
|
|
uni.navigateTo({ url: '/pages/realName/index/pages/subList' })
|
|
|
|
|
|
}
|
2024-10-18 18:03:29 +08:00
|
|
|
|
if (item.data_title == '在用班组') {
|
2024-10-18 15:12:22 +08:00
|
|
|
|
uni.navigateTo({ url: '/pages/realName/index/pages/teamList' })
|
|
|
|
|
|
}
|
2024-10-18 18:03:29 +08:00
|
|
|
|
if (item.data_title == '在场人数') {
|
2024-10-18 15:12:22 +08:00
|
|
|
|
uni.navigateTo({ url: '/pages/realName/index/pages/personList' })
|
|
|
|
|
|
}
|
2024-10-18 18:03:29 +08:00
|
|
|
|
if (item.data_title == '日计划打卡数') {
|
2024-10-18 16:55:19 +08:00
|
|
|
|
uni.navigateTo({ url: '/pages/realName/index/pages/personList?isAtt=0&isPlanWorker=1' })
|
|
|
|
|
|
}
|
2024-10-18 18:03:29 +08:00
|
|
|
|
if (item.data_title == '今日打卡') {
|
2024-10-18 16:55:19 +08:00
|
|
|
|
uni.navigateTo({ url: '/pages/realName/index/pages/personList?isAtt=0' })
|
|
|
|
|
|
}
|
2024-10-18 18:03:29 +08:00
|
|
|
|
},
|
2024-10-18 15:12:22 +08:00
|
|
|
|
/* 人员考勤等跳转 */
|
|
|
|
|
|
onJumpPersonList(title) {
|
|
|
|
|
|
let params = ''
|
|
|
|
|
|
// 跳转人员列表
|
|
|
|
|
|
switch (title) {
|
|
|
|
|
|
case '在场考勤率':
|
|
|
|
|
|
params = '在场考勤率'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/personList?isAtt=0` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case '作业考勤率':
|
|
|
|
|
|
params = '作业考勤率'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: '/pages/realName/index/pages/personList?isAtt=0&isPlanWorker=1' })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case '在场人员(固定)':
|
|
|
|
|
|
params = '在场人员(固定)'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/personList?workerType=1` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case '在场人员(临时)':
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/personList?workerType=0` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
params = '在场人员(临时)'
|
|
|
|
|
|
break
|
|
|
|
|
|
case '考勤率(固定人员)':
|
|
|
|
|
|
params = '考勤率(固定人员)'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: '/pages/realName/index/pages/personList?isAtt=0&workerType=1' })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case '考勤率(临时人员)':
|
|
|
|
|
|
params = '考勤率(临时人员)'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: '/pages/realName/index/pages/personList?isAtt=0&workerType=0' })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
/* 工程概况跳转 */
|
|
|
|
|
|
onJumpProjectList(title) {
|
2024-10-18 18:03:29 +08:00
|
|
|
|
let name = ''
|
|
|
|
|
|
let currentIndex = 0
|
2024-10-18 15:12:22 +08:00
|
|
|
|
// 跳转人员列表
|
|
|
|
|
|
switch (title) {
|
|
|
|
|
|
case '在建':
|
2024-10-18 18:03:29 +08:00
|
|
|
|
name = '在建'
|
|
|
|
|
|
currentIndex = 1
|
|
|
|
|
|
break
|
|
|
|
|
|
case '完工':
|
|
|
|
|
|
name = '完工'
|
|
|
|
|
|
currentIndex = 2
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case '筹建':
|
2024-10-18 18:03:29 +08:00
|
|
|
|
name = '筹建'
|
|
|
|
|
|
currentIndex = 3
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case '停工':
|
2024-10-18 18:03:29 +08:00
|
|
|
|
name = '停工'
|
|
|
|
|
|
currentIndex = 4
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-10-18 18:03:29 +08:00
|
|
|
|
// 概况
|
|
|
|
|
|
const survey = {
|
|
|
|
|
|
name,
|
|
|
|
|
|
currentIndex
|
|
|
|
|
|
}
|
|
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/project?survey=${JSON.stringify(survey)}` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
},
|
|
|
|
|
|
/* 在场人员概况跳转人员信息 */
|
|
|
|
|
|
onJumpColorLight(type) {
|
|
|
|
|
|
let params = ''
|
|
|
|
|
|
// 跳转人员列表
|
|
|
|
|
|
switch (type) {
|
|
|
|
|
|
case 1:
|
2024-10-18 18:06:58 +08:00
|
|
|
|
// params = '绿灯'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/personList?lightStatus=2` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
params = '黄灯'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/personList?lightStatus=1` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
params = '红灯'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/personList?lightStatus=0` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
params = '男性'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/personList?sex=1` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case 5:
|
|
|
|
|
|
params = '女性'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/personList?sex=0` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case 6:
|
|
|
|
|
|
params = '固定人员'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/personList?workerType=1` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
case 7:
|
|
|
|
|
|
params = '临时人员'
|
2024-10-21 09:44:15 +08:00
|
|
|
|
uni.navigateTo({ url: `/pages/realName/index/pages/personList?workerType=0` })
|
2024-10-18 15:12:22 +08:00
|
|
|
|
break
|
|
|
|
|
|
}
|
2024-10-24 10:51:32 +08:00
|
|
|
|
},
|
|
|
|
|
|
/* 刷新页面 */
|
|
|
|
|
|
onRefreshPages() {
|
|
|
|
|
|
uni.reLaunch({
|
|
|
|
|
|
url: '/pages/realName/index/index'
|
|
|
|
|
|
})
|
2024-10-18 15:12:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-09-02 18:17:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
2024-10-11 13:43:16 +08:00
|
|
|
|
<style lang="scss" scoped>
|
2024-09-02 18:17:17 +08:00
|
|
|
|
/* 修改U-Navbar中链接的字体颜色 */
|
|
|
|
|
|
/deep/.u-navbar .navbar-nav > li > a {
|
2024-10-11 13:43:16 +08:00
|
|
|
|
color: #fff; /* 将颜色改为红色 */
|
2024-09-02 18:17:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
/* 如果你想修改当前激活链接的字体颜色 */
|
|
|
|
|
|
/deep/.u-navbar .navbar-nav > li.active > a {
|
2024-10-11 13:43:16 +08:00
|
|
|
|
color: #fff; /* 将激活链接的颜色改为绿色 */
|
2024-09-02 18:17:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
.page {
|
|
|
|
|
|
width: 100vw;
|
|
|
|
|
|
height: 100vh;
|
2024-10-11 13:43:16 +08:00
|
|
|
|
background-color: #efefef;
|
2024-09-02 18:17:17 +08:00
|
|
|
|
box-sizing: border-box;
|
2024-10-11 13:43:16 +08:00
|
|
|
|
padding: 0 10rpx;
|
2024-09-02 18:17:17 +08:00
|
|
|
|
|
2024-10-24 10:51:32 +08:00
|
|
|
|
.refresh-btn {
|
|
|
|
|
|
position: fixed;
|
|
|
|
|
|
top: 36rpx;
|
|
|
|
|
|
right: 26rpx;
|
|
|
|
|
|
background-color: #00337a;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
z-index: 999;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.refresh-btn::after {
|
|
|
|
|
|
border: none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-09-02 18:17:17 +08:00
|
|
|
|
.search {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.opt-grids {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
margin: 3vh auto;
|
|
|
|
|
|
|
|
|
|
|
|
view {
|
|
|
|
|
|
width: 25%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
//margin-bottom: 2vh;
|
|
|
|
|
|
|
|
|
|
|
|
image {
|
|
|
|
|
|
width: 60%;
|
|
|
|
|
|
height: 7vh;
|
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
span {
|
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.swipe-area {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 20vh;
|
|
|
|
|
|
border-radius: 15rpx;
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
margin-bottom: 10rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.my-task {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 40vh;
|
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
|
border-radius: 15rpx;
|
|
|
|
|
|
box-shadow: 3px 3px 3px #f4f4f4;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
padding: 15rpx;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
|
|
|
|
|
|
.task-list {
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
|
|
|
|
|
|
|
.list-item {
|
|
|
|
|
|
margin: 10px 0;
|
2024-10-11 13:43:16 +08:00
|
|
|
|
background-color: #efefef;
|
2024-09-02 18:17:17 +08:00
|
|
|
|
border-radius: 5px;
|
|
|
|
|
|
padding: 5px;
|
|
|
|
|
|
font-size: 13px;
|
|
|
|
|
|
.item-title {
|
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
margin-bottom: 5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.item-progress {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
.u-line-progress {
|
|
|
|
|
|
width: 80%;
|
|
|
|
|
|
margin-right: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.no-task {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
|
|
|
|
.no-task-img {
|
|
|
|
|
|
width: 80%;
|
|
|
|
|
|
height: 80%;
|
|
|
|
|
|
margin: auto;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
image {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 90%;
|
|
|
|
|
|
}
|
|
|
|
|
|
span {
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
color: #c2c2c2;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-10-11 13:43:16 +08:00
|
|
|
|
|
|
|
|
|
|
h3 {
|
|
|
|
|
|
padding: 30rpx 20rpx;
|
|
|
|
|
|
letter-spacing: 3rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.common-style {
|
|
|
|
|
|
margin-top: 20rpx;
|
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
|
}
|
|
|
|
|
|
// 轮播图
|
|
|
|
|
|
.swiper-container {
|
|
|
|
|
|
height: 400rpx;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
.swiper-item-container {
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
padding-bottom: 20rpx;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
|
|
|
|
|
|
|
view {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
|
|
|
|
|
|
text {
|
|
|
|
|
|
padding: 10rpx 0;
|
|
|
|
|
|
letter-spacing: 5rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.item_2 view:last-child {
|
|
|
|
|
|
align-items: flex-start;
|
|
|
|
|
|
}
|
|
|
|
|
|
.item_1 {
|
|
|
|
|
|
background: url('../../../static/images/img-phase-two/index_img_one.png');
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
.item_2 {
|
|
|
|
|
|
background: url('../../../static/images/img-phase-two/index_img_two.png');
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
.item_3 {
|
|
|
|
|
|
background: url('../../../static/images/img-phase-two/index_img_three.png');
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
.item_4 {
|
|
|
|
|
|
background: url('../../../static/images/img-phase-two/index_img_four.png');
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.img-container {
|
|
|
|
|
|
width: 90rpx;
|
|
|
|
|
|
height: 90rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
.img-container-2 {
|
|
|
|
|
|
width: 140rpx;
|
|
|
|
|
|
height: 140rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.none-box {
|
|
|
|
|
|
color: transparent;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 今日风险
|
|
|
|
|
|
.today-warning {
|
|
|
|
|
|
margin: 30rpx 0;
|
|
|
|
|
|
height: 68rpx;
|
|
|
|
|
|
padding: 0 30rpx;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
border: 1rpx solid #ccc;
|
|
|
|
|
|
background: #fff;
|
|
|
|
|
|
border-radius: 58rpx;
|
|
|
|
|
|
|
|
|
|
|
|
.warning-img {
|
|
|
|
|
|
width: 46rpx;
|
|
|
|
|
|
height: 46rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-10-11 18:01:58 +08:00
|
|
|
|
.uni-notice-bar {
|
2024-10-11 13:43:16 +08:00
|
|
|
|
flex: 1;
|
|
|
|
|
|
height: 50rpx;
|
2024-10-11 18:01:58 +08:00
|
|
|
|
// line-height: 50rpx;
|
2024-10-11 13:43:16 +08:00
|
|
|
|
// background-color: orange;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 数据概览
|
|
|
|
|
|
.data-overview {
|
|
|
|
|
|
.data-overview-content {
|
|
|
|
|
|
padding: 0 10rpx;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
|
view {
|
|
|
|
|
|
width: 33.33%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
.data-overview-img {
|
|
|
|
|
|
width: 100rpx;
|
|
|
|
|
|
height: 100rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
.data-overview-item {
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
|
align-items: flex-start;
|
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 人员考勤率
|
|
|
|
|
|
.check-work-attendance {
|
|
|
|
|
|
.check-work-attendance-container {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
|
|
|
|
|
|
|
view {
|
|
|
|
|
|
width: calc(50% - 40rpx);
|
|
|
|
|
|
padding: 0 10rpx;
|
|
|
|
|
|
margin-bottom: 15rpx;
|
|
|
|
|
|
.top-title,
|
|
|
|
|
|
.bottom-progress {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
.progress-box {
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
margin-right: 15rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.top-title text:last-child {
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 工程概况
|
|
|
|
|
|
.project-container {
|
|
|
|
|
|
.project-content {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
|
|
|
|
|
|
|
view {
|
|
|
|
|
|
width: calc(50% - 40rpx);
|
|
|
|
|
|
padding: 0 10rpx;
|
|
|
|
|
|
margin-bottom: 15rpx;
|
|
|
|
|
|
.top-title,
|
|
|
|
|
|
.bottom-progress {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
.progress-box {
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
margin-right: 15rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.top-title text:last-child {
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.charts_container {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 460rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 在场人员概况
|
|
|
|
|
|
.person-container .person-content {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
|
|
|
|
|
|
|
.person-img {
|
|
|
|
|
|
width: 160rpx;
|
|
|
|
|
|
height: 160rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
view {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.text-strong {
|
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.gender-content {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
.man-left,
|
|
|
|
|
|
.girl-right {
|
|
|
|
|
|
width: 50%;
|
|
|
|
|
|
height: 300rpx;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
.gender-img {
|
2024-10-24 16:53:53 +08:00
|
|
|
|
width: 160rpx;
|
2024-10-11 13:43:16 +08:00
|
|
|
|
height: 240rpx;
|
2024-10-24 13:56:14 +08:00
|
|
|
|
// background-color: orange;
|
2024-10-11 13:43:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
h5 {
|
|
|
|
|
|
font-weight: normal;
|
|
|
|
|
|
margin: 30rpx 0 15rpx;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
letter-spacing: 2rpx;
|
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
.person-num {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
padding: 0 40rpx;
|
|
|
|
|
|
image {
|
|
|
|
|
|
vertical-align: middle;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.person-num-progress {
|
|
|
|
|
|
padding: 0 15rpx;
|
|
|
|
|
|
margin: 20rpx 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.person-proportion {
|
|
|
|
|
|
margin: 15rpx 0;
|
|
|
|
|
|
padding: 0 25rpx;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-content: center;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.charts-box {
|
|
|
|
|
|
width: 70%;
|
|
|
|
|
|
height: 460rpx;
|
|
|
|
|
|
margin: 0 auto;
|
2024-09-02 18:17:17 +08:00
|
|
|
|
}
|
2024-10-14 16:07:13 +08:00
|
|
|
|
|
|
|
|
|
|
.gender-img {
|
|
|
|
|
|
border-radius: 18rpx;
|
|
|
|
|
|
}
|
2024-10-24 13:56:14 +08:00
|
|
|
|
|
|
|
|
|
|
.demo {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 500rpx;
|
|
|
|
|
|
background-color: orange;
|
|
|
|
|
|
}
|
2024-09-02 18:17:17 +08:00
|
|
|
|
</style>
|