YNUtdPlatform/pages/realName/index/pages/personDetail.vue

577 lines
21 KiB
Vue

<template>
<view class="page">
<u-navbar
class="u-navbar"
title="人员信息"
placeholder
@leftClick="leftClick"
leftIconColor="#fff"
bgColor="#00337A"
:titleStyle="{ color: '#FFF', fontSize: '32rpx' }"
/>
<scroll-view class="content" scroll-y="true">
<view class="view-box">
<view class="title-view">基本信息</view>
<view style="display: flex; width: 94%; margin: 20rpx auto; height: auto; justify-content: space-between">
<view class="img-item">
<image class="img" :src="faceImgUrl" mode=""></image>
<view style="margin-top: 20rpx">{{ detailData.workerType }}</view>
</view>
<view class="base-info">
<view style="margin-bottom: 20rpx; display: flex; align-items: center">
<text style="font-weight: bold; margin-right: 20rpx">{{ detailData.name }}</text>
<text v-if="detailData.lightStatus == '绿灯'" style="color: #06e7a3; margin-right: 20rpx">
{{ detailData.lightStatus }}
</text>
<text v-if="detailData.lightStatus == '黄灯'" style="color: #f5c622; margin-right: 20rpx">
{{ detailData.lightStatus }}
</text>
<text v-if="detailData.lightStatus == '红灯'" style="color: #ff2f2f; margin-right: 20rpx">
{{ detailData.lightStatus }}
</text>
<image class="iconImg" src="../../../../static/realName/tips.png" mode="" @click="openInfo"></image>
</view>
<image
class="lightImg"
v-if="detailData.lightStatus == '绿灯'"
src="../../../../static/realName/green_light.png"
mode=""
></image>
<image
class="lightImg"
v-if="detailData.lightStatus == '黄灯'"
src="../../../../static/realName/yellow_light.png"
mode=""
></image>
<image
class="lightImg"
v-if="detailData.lightStatus == '红灯'"
src="../../../../static/realName/red_light.png"
mode=""
></image>
<view style="font-weight: bold">{{ detailData.postName }}</view>
<view style="font-weight: bold">{{ detailData.phone }}</view>
<view style="font-weight: bold">{{ detailData.einStatus }}</view>
<view style="margin-top: 20rpx; color: #999">{{ detailData.subName }}</view>
<view style="margin-top: 20rpx; color: #999">{{ detailData.proName }}</view>
</view>
</view>
</view>
<view class="view-box">
<view class="title-view">安全培训考试</view>
<view style="width: 94%; margin: 20rpx auto; height: auto" @click="openTrain">
<view class="list-item" v-for="(item, index) in detailData.listExam" :key="index">
<view style="display: flex; align-items: center">
<image
v-if="item.status == 0"
class="iconImg"
src="../../../../static/realName/incomplete.png"
mode=""
></image>
<image
v-if="item.status == 1"
class="iconImg"
src="../../../../static/realName/complete.png"
mode=""
></image>
<view v-if="item.status == 0" style="margin-left: 40rpx; color: #ff2f2f; font-weight: bold">
{{ item.name }}
</view>
<view v-if="item.status == 1" style="margin-left: 40rpx; color: #10bf95; font-weight: bold">
{{ item.name }}
</view>
</view>
<view v-if="item.status == 0" class="status-btn" style="background: #ff2f2f">未完成</view>
<view v-if="item.status == 1" class="status-btn" style="background: #10bf95">完成</view>
</view>
</view>
</view>
<view class="view-box">
<view class="title-view">今日考勤</view>
<view
style="
width: 94%;
margin: 20rpx auto;
height: auto;
display: flex;
align-items: center;
justify-content: space-between;
"
>
<view>上班:{{ detailData.isToWork }}</view>
<view>下班:{{ detailData.isOffWork }}</view>
<view v-if="detailData.isToWork == '未打卡'" class="status-btn" style="background: #ff2f2f">未打卡</view>
<view v-if="detailData.isToWork != '未打卡'" class="status-btn" style="background: #10bf95">已打卡</view>
</view>
</view>
<view class="view-box">
<view class="title-view">今日作业计划</view>
<view class="title-view">作业内容</view>
<view style="width: 94%; margin: 20rpx auto; height: auto">
{{ detailData.zynr }}
</view>
</view>
<view class="view-box">
<view class="title-view">合同信息</view>
<view style="width: 94%; margin: 20rpx auto; height: auto">
<view class="list-item" v-for="(item, index) in detailData.listContract" :key="index" @click="openContract">
<view style="display: flex; align-items: center">
<image
v-if="item.contractStatus == 0"
class="iconImg"
src="../../../../static/realName/incomplete.png"
mode=""
></image>
<image
v-if="item.contractStatus == 1"
class="iconImg"
src="../../../../static/realName/complete.png"
mode=""
></image>
<view v-if="item.contractStatus == 0" style="margin-left: 40rpx; color: #ff2f2f; font-weight: bold">
{{ item.contractType }}
</view>
<view v-if="item.contractStatus == 1" style="margin-left: 40rpx; color: #10bf95; font-weight: bold">
{{ item.contractType }}
</view>
</view>
<view v-if="item.contractStatus == 0" class="status-btn" style="background: #ff2f2f">未签订</view>
<view v-if="item.contractStatus == 1" class="status-btn" style="background: #10bf95">已签订</view>
</view>
</view>
</view>
<view class="view-box">
<view class="title-view">持证信息</view>
<view style="width: 94%; margin: 20rpx auto; height: auto">
<view
class="list-item"
v-for="(item, index) in detailData.listCertificate"
:key="index"
@click="openListCertificate"
>
<view style="display: flex; align-items: center">
<image
v-if="item.isActive == 0"
class="iconImg"
src="../../../../static/realName/incomplete.png"
mode=""
></image>
<image
v-if="item.isActive == 1"
class="iconImg"
src="../../../../static/realName/complete.png"
mode=""
></image>
<view v-if="item.isActive == 0" style="margin-left: 40rpx; color: #ff2f2f; font-weight: bold">
{{ item.certificateName }}
</view>
<view v-if="item.isActive == 1" style="margin-left: 40rpx; color: #10bf95; font-weight: bold">
{{ item.certificateName }}
</view>
</view>
<view v-if="item.isActive == 0" class="status-btn" style="background: #ff2f2f">无效</view>
<view v-if="item.isActive == 1" class="status-btn" style="background: #10bf95">有效</view>
</view>
</view>
</view>
</scroll-view>
<!-- 信息弹窗 -->
<u-popup :show="showPopup1" mode="center" @close="closePopup1">
<view style="width: 600rpx; height: auto; position: relative; background-color: #fff">
<view
style="
width: 100%;
height: 80rpx;
margin: 0 auto;
display: flex;
justify-content: center;
align-items: center;
background-color: #fff;
"
>
<view style="font-size: 32rpx; :bold ">红绿灯</view>
</view>
<view style="width: 100%; height: 22vh; background-color: #fff">
<view style="width: 90%; height: auto; margin: 20rpx auto; display: flex; align-items: center">
<view
style="
width: 120rpx;
height: 50rpx;
color: #fff;
background: #de3c23;
text-align: center;
line-height: 50rpx;
"
>
红灯
</view>
<view style="margin-left: 40rpx; width: 75%">
<view style="color: #cd4f3c; font-weight: bold">安全教育培训考试未完成</view>
</view>
</view>
<view style="width: 90%; height: auto; margin: 20rpx auto; display: flex; align-items: center">
<view
style="
width: 120rpx;
height: 50rpx;
color: #fff;
background: #ff7f26;
text-align: center;
line-height: 50rpx;
"
>
黄灯
</view>
<view style="margin-left: 40rpx; width: 75%">
<view style="color: #2dbb9d; font-weight: bold">安全教育培训考试已完成</view>
<view style="color: #cd4f3c; font-weight: bold">合同/工资卡未上传,分包班组未绑定</view>
</view>
</view>
<view style="width: 90%; height: auto; margin: 20rpx auto; display: flex; align-items: center">
<view
style="
width: 120rpx;
height: 50rpx;
color: #fff;
background: #10bf96;
text-align: center;
line-height: 50rpx;
"
>
绿灯
</view>
<view style="margin-left: 40rpx; width: 75%">
<view style="color: #2dbb9d; font-weight: bold">安全教育培训考试已完成</view>
<view style="color: #2dbb9d; font-weight: bold">合同/工资卡已上传,分包班组已绑定</view>
</view>
</view>
</view>
</view>
</u-popup>
<!-- 考试弹窗 -->
<u-popup :show="showPopup2" mode="center" @close="closePopup2">
<view style="width: 600rpx; height: auto; position: relative; background-color: #fff">
<view style="width: 100%; height: 20vh; background-color: #fff">
<view class="list-item" style="margin: 30rpx 10rpx" v-for="(item, index) in detailData.listExam" :key="index">
<view style="display: flex; align-items: center; width: 50%">
<view v-if="item.status == 0" style="margin-left: 10rpx; color: #ff2f2f; font-weight: bold">
{{ item.name }}
</view>
<view v-if="item.status == 1" style="margin-left: 10rpx; color: #10bf95; font-weight: bold">
{{ item.name }}
</view>
</view>
<view v-if="item.status == 0" style="font-weight: bold">未完成</view>
<view v-if="item.status == 1" style="font-weight: bold">完成</view>
<view style="font-weight: bold">{{ item.score }}</view>
</view>
</view>
</view>
</u-popup>
<!-- 合同弹窗 -->
<u-popup :show="showPopup3" mode="center" @close="closePopup3">
<view style="width: 600rpx; height: auto; position: relative; background-color: #fff">
<view style="width: 100%; height: auto; background-color: #fff">
<u--form class="addForm" :model="contractData">
<view class="form-input-box">
<view style="width: 30%; height: 100%">合同照片</view>
<view style="width: 70%; height: 100%">
<image style="width: 200rpx; height: 100rpx; margin: 10rpx" :src="contractImgUrl" mode=""></image>
</view>
</view>
<view class="form-input-box">
<view style="width: 30%; height: 100%">合同编号</view>
<u-form-item prop="contractCode" style="width: 70%; height: 100%">
<u--input v-model="contractData.contractCode" type="text" border="surround" readonly></u--input>
</u-form-item>
</view>
<view class="form-input-box">
<view style="width: 30%; height: 100%">合同期限类型</view>
<u-form-item prop="laborContractType" style="width: 70%; height: 100%">
<u--input v-model="contractData.laborContractType" type="text" border="surround" readonly></u--input>
</u-form-item>
</view>
<view class="form-input-box">
<view style="width: 30%; height: 100%">合同签订日期</view>
<u-form-item prop="contractValidDate" style="width: 70%; height: 100%">
<u--input v-model="contractData.contractValidDate" type="text" border="surround" readonly></u--input>
</u-form-item>
</view>
<view class="form-input-box">
<view style="width: 30%; height: 100%">合同终止日期</view>
<u-form-item prop="contractInvalidDate" style="width: 70%; height: 100%">
<u--input v-model="contractData.contractInvalidDate" type="text" border="surround" readonly></u--input>
</u-form-item>
</view>
<view class="form-input-box">
<view style="width: 30%; height: 100%">合同类型</view>
<u-form-item prop="contractType" style="width: 70%; height: 100%">
<u--input v-model="contractData.contractType" type="text" border="surround" readonly></u--input>
</u-form-item>
</view>
<view class="form-input-box">
<view style="width: 30%; height: 100%">工资核定方式</view>
<u-form-item prop="wageApprovedWay" style="width: 70%; height: 100%">
<u--input v-model="contractData.wageApprovedWay" type="text" border="surround" readonly></u--input>
</u-form-item>
</view>
<view class="form-input-box">
<view style="width: 30%; height: 100%">工资核定标准</view>
<u-form-item prop="wageCriterion" style="width: 70%; height: 100%">
<u--input v-model="contractData.wageCriterion" type="text" border="surround" readonly></u--input>
</u-form-item>
</view>
</u--form>
</view>
</view>
</u-popup>
<!-- 持证弹窗 -->
<u-popup :show="showPopup4" mode="center" @close="closePopup4">
<view style="width: 600rpx; height: auto; position: relative; background-color: #fff">
<view style="width: 100%; height: auto; background-color: #fff">
<u--form class="addForm" :model="listCertificate">
<view class="form-input-box" style="flex-direction: column; align-items: flex-start">
<view style="font-size: 24rpx; margin-top: 20rpx">证件名称</view>
<u-form-item prop="certificateName">
<u--input v-model="listCertificate.certificateName" type="text" border="surround" readonly></u--input>
</u-form-item>
</view>
<view class="form-input-box" style="flex-direction: column; align-items: flex-start">
<view style="font-size: 24rpx; margin-top: 20rpx">证件有效期</view>
<u-form-item prop="certificateName">
<u--input
:value="listCertificate.startDate + '至' + listCertificate.stopDate"
type="text"
border="surround"
readonly
></u--input>
</u-form-item>
</view>
<view class="form-input-box" style="flex-direction: column; align-items: flex-start">
<view style="font-size: 24rpx; margin-top: 20rpx">是否有效</view>
<u-form-item prop="certificateName">
<u--input
v-if="listCertificate.isActive == 0"
value="无效"
type="text"
border="surround"
readonly
></u--input>
<u--input
v-if="listCertificate.isActive == 1"
value="有效"
color="#10BF95"
type="text"
border="surround"
readonly
></u--input>
</u-form-item>
</view>
<view class="form-input-box" style="flex-direction: column; align-items: flex-start">
<view style="font-size: 24rpx; margin-top: 20rpx">证件附件</view>
<view
v-if="listCertificate.certificateTypeFile != ''"
@click="openPdf"
style="font-size: 28rpx; margin: 20rpx; color: #00337a"
>
附件查看
</view>
<view v-if="!listCertificate.certificateTypeFile" style="font-size: 28rpx; margin: 20rpx; color: #ff2f2f">
无附件
</view>
</view>
</u--form>
</view>
</view>
</u-popup>
</view>
</template>
<script>
import config from '@/config'
export default {
data() {
return {
idNumber: '',
detailData: {},
faceImgUrl: '',
showPopup1: false, //信息
showPopup2: false, //培训考试
contractData: {}, //合同
contractImgUrl: '',
showPopup3: false, //合同
listCertificate: {}, //持证
showPopup4: false //持证
}
},
onLoad(option) {
console.log(option)
this.idNumber = option.idNumber || ''
if (this.idNumber != '') {
this.selectPersonQualificationsContent()
this.$forceUpdate()
}
},
onShow() {},
methods: {
// 获取详情
selectPersonQualificationsContent() {
let param = {
idNumber: this.idNumber
}
uni.request({
url: config.realAppUrl + '/BasePerson/selectPersonQualificationsContent',
method: 'post',
data: param,
header: {
'Content-Type': 'application/json;charset=UTF-8;',
Authorization: uni.getStorageSync('realNameToken')
},
success: res => {
console.log(res)
res = res.data
if (res.code == 200) {
this.detailData = res.data
this.faceImgUrl = config.realBaseUrl + res.data.facePhoto
} else {
uni.showToast({
title: res.msg,
icon: 'none'
})
}
},
fail: err => {
console.log(err)
}
})
},
openInfo() {
this.showPopup1 = true
},
closePopup1() {
this.showPopup1 = false
},
openTrain() {
this.showPopup2 = true
},
closePopup2() {
this.showPopup2 = false
},
openContract() {
this.contractData = this.detailData.listContract[0]
this.contractImgUrl = config.realBaseUrl + this.contractData.witnessPath
this.showPopup3 = true
},
closePopup3() {
this.showPopup3 = false
},
openListCertificate() {
this.listCertificate = this.detailData.listCertificate[0]
this.showPopup4 = true
},
closePopup4() {
this.showPopup4 = false
},
openPdf() {
console.log('附件打开')
uni.navigateTo({
url: `/pages/realName/workbench/qualifications/listCertificatePdf?pdfUrl=${this.listCertificate.certificateTypeFile}`
})
},
leftClick() {
console.log('返回')
uni.navigateBack({
delta: 1 // 返回
})
}
}
}
</script>
<style lang="scss">
.page {
width: 100vw;
height: 100vh;
background-color: #efefef;
box-sizing: border-box;
// padding: 0 20px;
.content {
width: 100%;
height: 90vh;
margin-top: 20rpx;
padding-bottom: 80rpx;
background-color: #efefef;
}
.view-box {
width: 90%;
margin: 20rpx auto;
background-color: #fff;
border-radius: 10rpx;
padding: 30rpx 10rpx;
.title-view {
font-weight: 600;
margin-left: 20rpx;
}
}
.base-info {
width: 68%;
height: auto;
position: relative;
}
.iconImg {
width: 40rpx;
height: 40rpx;
}
.lightImg {
width: 120rpx;
height: 120rpx;
position: absolute;
right: 40rpx;
top: 0rpx;
}
.img-item {
width: 180upx;
height: 240upx;
margin: 0 20rpx;
text-align: center;
.img {
display: block;
width: 100%;
height: 100%;
}
}
.list-item {
width: 96%;
display: flex;
align-items: center;
justify-content: space-between;
margin: 30rpx auto;
font-size: 32rpx;
}
.status-btn {
width: 120rpx;
height: 50rpx;
line-height: 50rpx;
color: #fff;
font-size: 24rpx;
text-align: center;
border-radius: 10rpx;
}
.addForm {
width: 100%;
height: auto;
font-size: 24rpx;
.form-input-box {
padding: 0 10rpx;
display: flex;
align-items: center;
border-bottom: 1rpx solid #eee;
}
}
}
</style>