1096 lines
31 KiB
Vue
1096 lines
31 KiB
Vue
<template>
|
||
<view class="fullHeight">
|
||
<headers :showBack="true" :themeType="'white'"
|
||
style="position: fixed; top: 0; left: 0; width: 100%; z-index: 1111;">
|
||
<view class="headerName">
|
||
人员档案
|
||
</view>
|
||
</headers>
|
||
<view class="personDetail_content" style="padding-top: 110rpx;">
|
||
<view class="title_wrap">
|
||
<text class="exit_status" v-if="workerInfo.inserviceType==2">已退场</text>
|
||
<view class="flex">
|
||
<view class="flex">
|
||
<image class="photograph" @click="previewImage(workerInfo.fieldAcquisitionUrl,1)"
|
||
:src="url_config+'image/'+workerInfo.fieldAcquisitionUrl"></image>
|
||
<image class="photograph" @click="previewImage(workerInfo.idCardBigPhotoUrl,2)"
|
||
:src="url_config+'image/'+workerInfo.idCardBigPhotoUrl"></image>
|
||
</view>
|
||
<view class="user_info">
|
||
<view class="name">{{workerInfo.workerName}}</view>
|
||
<view class="code">{{workerInfo.idCard}}</view>
|
||
<view class="nation">民族:{{workerInfo.nation}}</view>
|
||
<view class="nation" v-if="projectConfigDetail.isEnableDeduct == 1">
|
||
当前安全评分分值:{{workerInfo.safeScore || 0}}</view>
|
||
</view>
|
||
<!-- 操作按钮 -->
|
||
<view style="width: 60rpx;height: 120rpx; text-align: center;" v-if="false">
|
||
<image class="more" src="../../../../static/personManage/more.png" @click="operateBtn"></image>
|
||
</view>
|
||
</view>
|
||
<view class="projectName">{{workerInfo.projectName}}</view>
|
||
<view class="details-content" v-if="workerInfo.personType==1 && codeShow">
|
||
<view class="left-content">
|
||
<view class="project_info">
|
||
<text class="name">单位:</text>
|
||
<text>{{workerInfo.enterpriseName}}</text>
|
||
</view>
|
||
<view class="project_info">
|
||
<text class="name">岗位(工种):</text>
|
||
<text>{{workerInfo.teamName}}</text>
|
||
</view>
|
||
<!-- <view class="project_info">
|
||
<text class="name">工种:</text>
|
||
<text>顾燕安-中建八局第三建设有限公司安装分公司</text>
|
||
</view> -->
|
||
<view class="project_info">
|
||
<text class="name">工号:</text>
|
||
<text>{{workerInfo.attendanceNumber}}</text>
|
||
</view>
|
||
</view>
|
||
<tki-qrcode ref="qrcode" :size="120" cid="1001" :val="qrUrl" :background="backgroundColor"
|
||
:foreground="foregroundColor" :pdground="pdgroundColor" :onval="true" :loadMake="true" />
|
||
</view>
|
||
<view class="details-content" v-if="workerInfo.personType!=1 && codeShow">
|
||
<view class="left-content">
|
||
<view class="project_info">
|
||
<text class="name">单位:</text>
|
||
<text>{{workerInfo.enterpriseName}}</text>
|
||
</view>
|
||
<view class="project_info">
|
||
<text class="name">岗位(工种):</text>
|
||
<text>{{workerInfo.departmentName}}</text>
|
||
</view>
|
||
<view class="project_info">
|
||
<text class="name">工号:</text>
|
||
<text>{{workerInfo.attendanceNumber}}</text>
|
||
</view>
|
||
</view>
|
||
<tki-qrcode ref="qrcode" :size="120" cid="1001" :val="qrUrl" :background="backgroundColor"
|
||
:foreground="foregroundColor" :pdground="pdgroundColor" :onval="true" :loadMake="true" />
|
||
</view>
|
||
<image src="../../../../static/header_bg.png" class="header_bg"></image>
|
||
<view class="title_dialog" v-if="operateType">
|
||
<view @click="editPersonState(1)" v-if="workerInfo.inserviceType==2">再次进场</view>
|
||
<view @click="editPersonState(2)" v-if="workerInfo.inserviceType==1">退场</view>
|
||
</view>
|
||
</view>
|
||
<view class="item_wrap flex">
|
||
<view class="flex item" @click="showItemDetails(1)">
|
||
<image class="margin_r_5" style="width: 46rpx;height:46rpx"
|
||
src="../../../../static/personManage/ht.png"></image>
|
||
<text>劳动合同</text>
|
||
<text class="state1" style="top: -7px;left: 68px;" v-if="contractList.length>0">已签</text>
|
||
<text class="state2" style="top: -7px;left: 68px;" v-else>未签</text>
|
||
</view>
|
||
<view class="flex item" @click="showItemDetails(2)">
|
||
<image class="margin_r_5" style="width: 42rpx;height:42rpx"
|
||
src="../../../../static/personManage/tjzs.png"></image>
|
||
<text>体检</text>
|
||
<text class="state1" style="top: -7px;left: 80rpx;" v-if="physicalsList.length>0">已体检</text>
|
||
<text class="state2" style="top: -7px;left: 80rpx;" v-else>未体检</text>
|
||
</view>
|
||
<view class="flex item" @click="showItemDetails(3)">
|
||
<image class="margin_r_5" style="width: 38rpx;height:44rpx"
|
||
src="../../../../static/personManage/bx.png"></image>
|
||
<text>保险信息</text>
|
||
</view>
|
||
<view class="flex item" @click="showItemDetails(4)">
|
||
<image class="margin_r_5" style="width: 43rpx;height:38rpx"
|
||
src="../../../../static/personManage/jy.png"></image>
|
||
<text>安全教育</text>
|
||
</view>
|
||
<view class="flex item" @click="showItemDetails(5)" v-if="false">
|
||
<image class="margin_r_5" style="width: 35rpx;height:35rpx"
|
||
src="../../../../static/personManage/qrCode.png"></image>
|
||
<text>二维码</text>
|
||
</view>
|
||
<view class="flex item" @click="showItemDetails(6)" v-if="COMPANY == 'cpgs'">
|
||
<image class="margin_r_5" style="width: 40rpx;height:40rpx"
|
||
src="../../../../static/personManage/cyjl.png"></image>
|
||
<text>考勤录入</text>
|
||
</view>
|
||
</view>
|
||
<view class="log_wrap">
|
||
<view class="flex" @click="showInfoList(1)">
|
||
<view class="flex">
|
||
<image class="margin_r_5" style="width: 33rpx;height:40rpx"
|
||
src="../../../../static/personManage/zs.png"></image>
|
||
<text class="title">资格证书({{certificateList.length}})</text>
|
||
</view>
|
||
<view v-if="false">添加</view>
|
||
</view>
|
||
<view class="log_content" v-if="showCertificateList">
|
||
<view class="log_content_item" v-for="(item,index) in certificateList" :key="index">
|
||
<view>
|
||
<text>证书类型:</text>
|
||
<text>{{item.certificateTypeName}}</text>
|
||
</view>
|
||
<view>
|
||
<text>证书编号:</text>
|
||
<text>{{item.certificateNumber}}</text>
|
||
</view>
|
||
<view>
|
||
<text>技能等级:</text>
|
||
<text v-if="item.skillLevel==1">普工</text>
|
||
<text v-if="item.skillLevel==2">初级工</text>
|
||
<text v-if="item.skillLevel==3">中级工</text>
|
||
<text v-if="item.skillLevel==4">高级工</text>
|
||
<text v-if="item.skillLevel==5">技师</text>
|
||
<text v-if="item.skillLevel==6">高级技师</text>
|
||
</view>
|
||
<view>
|
||
<text>发证日期:</text>
|
||
<text>{{item.issueTime}}</text>
|
||
</view>
|
||
<view>
|
||
<text>截止日期:</text>
|
||
<text>{{item.effectTime}}</text>
|
||
</view>
|
||
<view>
|
||
<text>发证机关:</text>
|
||
<text>{{item.issueCompany}}</text>
|
||
</view>
|
||
<view class="flex">
|
||
<text>备注:</text>
|
||
<pre>{{item.remarks}}</pre>
|
||
</view>
|
||
<view class="flex3">
|
||
<text>附件:</text>
|
||
<image v-if="imgItem" v-for="(imgItem,imgIndex) in item.fileList"
|
||
@click="previewImage(imgItem.url,2)" :key="imgIndex"
|
||
:src="url_config+'image/'+imgItem.url" style="width: 80rpx; height: 100rpx;"></image>
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- <view class="log_wrap">
|
||
<view class="flex" @click="showInfoList(2)">
|
||
<view class="flex">
|
||
<image class="margin_r_5" style="width: 37rpx;height:37rpx"
|
||
src="../../../../static/personManage/cyjl.png"></image>
|
||
<text class="title">从业经历({{workExperienceList.length}})</text>
|
||
</view>
|
||
<view v-if="false">添加</view>
|
||
</view>
|
||
<view class="log_content" v-if="showWorkExperienceList">
|
||
<view class="log_content_item" v-for="(item,index) in workExperienceList" :key="index">
|
||
<view>
|
||
<text>参与项目:</text>
|
||
<text>{{item.projectName}}</text>
|
||
</view>
|
||
<view>
|
||
<text>入场日期:</text>
|
||
<text>{{item.enterDate}}</text>
|
||
</view>
|
||
<view>
|
||
<text>退场日期:</text>
|
||
<text>{{item.exitDate}}</text>
|
||
</view>
|
||
<view>
|
||
<text>工种:</text>
|
||
<text>{{item.typeName}}</text>
|
||
</view>
|
||
<view>
|
||
<text>班组/部门:</text>
|
||
<text>{{item.teamName}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view> -->
|
||
<!-- <view class="log_wrap">
|
||
<view class="flex" @click="showInfoList(3)">
|
||
<view class="flex">
|
||
<image class="margin_r_5" style="width: 34rpx;height:43rpx"
|
||
src="../../../../static/personManage/jl.png"></image>
|
||
<text class="title">奖励记录({{rewardList.length}})</text>
|
||
</view>
|
||
<view v-if="false">添加</view>
|
||
</view>
|
||
<view class="log_content" v-if="showRewardList">
|
||
<view class="log_content_item" v-for="(item,index) in rewardList" :key="index">
|
||
<view>
|
||
<text>发生时间:</text>
|
||
<text>{{item.eventTime}}</text>
|
||
</view>
|
||
<view>
|
||
<text>事件|奖励原因:</text>
|
||
<text>{{item.reason}}</text>
|
||
</view>
|
||
<view>
|
||
<text>奖励名称:</text>
|
||
<text>{{item.awardName}}</text>
|
||
</view>
|
||
<view class="flex">
|
||
<text>备注:</text>
|
||
<pre>{{item.remarks}}</pre>
|
||
</view>
|
||
<view class="flex3">
|
||
<text>附件:</text>
|
||
<image v-if="imgItem" v-for="(imgItem,imgIndex) in item.fileList"
|
||
@click="previewImage(imgItem.url,2)" :key="imgIndex"
|
||
:src="url_config+'image/'+imgItem.url" style="width: 80rpx; height: 100rpx;"></image>
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="log_wrap">
|
||
<view class="flex" @click="showInfoList(4)">
|
||
<view class="flex">
|
||
<image class="margin_r_5" style="width: 34rpx;height:34rpx"
|
||
src="../../../../static/personManage/bljl.png"></image>
|
||
<text class="title">不良记录({{badList.length}})</text>
|
||
</view>
|
||
<view v-if="false">添加</view>
|
||
</view>
|
||
<view class="log_content" v-if="showBadList">
|
||
<view class="log_content_item" v-for="(item,index) in badList" :key="index">
|
||
<view>
|
||
<text>发生时间:</text>
|
||
<text>{{item.eventTime}}</text>
|
||
</view>
|
||
<view>
|
||
<text>事件|发生原因:</text>
|
||
<text>{{item.reason}}</text>
|
||
</view>
|
||
<view>
|
||
<text>严重程度:</text>
|
||
<text>{{item.seriousGrade==1?'不严重':item.seriousGrade==2?'严重':item.seriousGrade==3?'非常严重':''}}</text>
|
||
</view>
|
||
<view class="flex">
|
||
<text>备注:</text>
|
||
<pre>{{item.remarks}}</pre>
|
||
</view>
|
||
<view class="flex3">
|
||
<text>附件:</text>
|
||
<image v-if="imgItem" v-for="(imgItem,imgIndex) in item.fileList" :key="imgIndex"
|
||
@click="previewImage(imgItem.url,2)" :src="url_config+'image/'+imgItem.url"
|
||
style="width: 80rpx; height: 100rpx;"></image>
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
</view> -->
|
||
<view class="log_wrap">
|
||
<view class="flex" @click="showInfoList(7)">
|
||
<view class="flex">
|
||
<image class="margin_r_5" style="width: 34rpx;height:34rpx"
|
||
src="../../../../static/personManage/bljl.png"></image>
|
||
<text class="title">违章记录({{positionRecorderList.length}})</text>
|
||
</view>
|
||
<view v-if="false">添加</view>
|
||
</view>
|
||
<view class="log_content" v-if="showPositionRecorderList">
|
||
<view class="log_content_item" v-for="(item,index) in positionRecorderList" :key="index">
|
||
<view>
|
||
<text>违规类型:</text>
|
||
<text>{{item.violationTypeName}}</text>
|
||
</view>
|
||
<view>
|
||
<text>违规位置:</text>
|
||
<text>{{item.violationLocation}}</text>
|
||
</view>
|
||
<view>
|
||
<text>报警时间:</text>
|
||
<text>{{item.alarmTime}}</text>
|
||
</view>
|
||
<view>
|
||
<text>处置时间:</text>
|
||
<text>{{item.disposalTime}}</text>
|
||
</view>
|
||
<view class="flex3">
|
||
<text>违规图片:</text>
|
||
<!-- url_config+'image/'+item.violationImage -->
|
||
<image
|
||
@click="previewImage(item.violationImage,2)" :src="item.violationImage.includes('http://') ? item.violationImage : url_config+'image/'+item.violationImage"
|
||
style="width: 160rpx; height: 160rpx;"></image>
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="log_wrap" v-if="projectInfoType.isEnableDeduct == 1">
|
||
<view class="flex" @click="showInfoList(5)">
|
||
<view class="flex">
|
||
<image class="margin_r_5" style="width: 34rpx;height:34rpx"
|
||
src="../../../../static/personManage/zs.png"></image>
|
||
<text class="title">扣分记录({{reduceScoreList.length}})</text>
|
||
</view>
|
||
<view v-if="false">添加</view>
|
||
</view>
|
||
<view class="log_content" v-if="showReduceScoreList">
|
||
<view class="log_content_item" v-for="(item,index) in reduceScoreList" :key="index">
|
||
<view>
|
||
<text>序号:</text>
|
||
<text>{{index + 1}}</text>
|
||
</view>
|
||
<view>
|
||
<text>扣分时间:</text>
|
||
<text>{{item.createDate}}</text>
|
||
</view>
|
||
<view>
|
||
<text>扣分原因:</text>
|
||
<text>{{item.deductReason}}</text>
|
||
</view>
|
||
<view>
|
||
<text>当前安全评分值:</text>
|
||
<text>{{item.curScore}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="log_wrap" v-if="COMPANY == 'cpgs'">
|
||
<view class="flex" @click="showInfoList(6)">
|
||
<view class="flex">
|
||
<image class="margin_r_5" style="width: 34rpx;height:34rpx"
|
||
src="../../../../static/personManage/zs.png"></image>
|
||
<text class="title">考勤记录</text>
|
||
</view>
|
||
<view v-if="false">添加</view>
|
||
</view>
|
||
</view>
|
||
<view class="log_wrap">
|
||
<view class="flex" @click="showInfoList(8)">
|
||
<view class="flex">
|
||
<image class="margin_r_5" style="width: 34rpx;height:34rpx"
|
||
src="../../../../static/personManage/bljl.png"></image>
|
||
<text class="title">焊工信息({{welderSkillExamList.length}})</text>
|
||
</view>
|
||
<view v-if="false">添加</view>
|
||
</view>
|
||
<view class="log_content" v-if="showWelderSkillExamList">
|
||
<view class="log_content_item" v-for="(item,index) in welderSkillExamList" :key="index">
|
||
<view>
|
||
<text>焊工合格证书号:</text>
|
||
<text>{{item.welderQualificationCertificateNumber}}</text>
|
||
</view>
|
||
<view>
|
||
<text>焊工作业证编号:</text>
|
||
<text>{{item.welderWorkPermitNumber}}</text>
|
||
</view>
|
||
<view>
|
||
<text>焊工证合格证项目:</text>
|
||
<text>{{item.welderCertificateQualificationItem}}</text>
|
||
</view>
|
||
<view>
|
||
<text>焊工考核项目:</text>
|
||
<text>{{item.welderAssessmentItem}}</text>
|
||
</view>
|
||
<view>
|
||
<text>试件类别:</text>
|
||
<text>{{ item.testType.length > 0 ? item.testType.join('、') : '' }}</text>
|
||
</view>
|
||
<view>
|
||
<text>考核日期:</text>
|
||
<text>{{item.onSiteAssessmentDate}}</text>
|
||
</view>
|
||
<view>
|
||
<text>焊接作业证:</text>
|
||
<view class="download1" @click="downloadFn(ele)" v-for="(ele, index) in item.welderWorkPermit" :key="index">
|
||
{{ ele.name }}
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="kqbtn" v-if="btnAuth" @click="goTo">
|
||
<!-- 辅助考勤 -->
|
||
违章上报
|
||
</view>
|
||
</view>
|
||
</template>
|
||
<script>
|
||
import {
|
||
isJSON
|
||
} from '@/utils/tool.js'
|
||
import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue"
|
||
export default {
|
||
components: {
|
||
tkiQrcode,
|
||
},
|
||
data() {
|
||
return {
|
||
codeShow: false,
|
||
backgroundColor: '#fff',
|
||
foregroundColor: '#000',
|
||
pdgroundColor: '#000',
|
||
qrUrl: '此二维码仅供展示',
|
||
workerId: 0,
|
||
operateType: false,
|
||
originWorkerInfo: {}, // 原始基本信息
|
||
workerInfo: {}, //基本信息
|
||
certificateList: [], //资格证书
|
||
workExperienceList: [], //从业信息
|
||
reduceScoreList: [], // 扣分记录
|
||
badList: [], //不良记录
|
||
rewardList: [], //--奖励记录
|
||
contractList: [], //合同列表
|
||
physicalsList: [], //体检列表
|
||
safeEducationList: [], //安全教育信息
|
||
monthAttendance: [],
|
||
insuranceList: [],
|
||
positionRecorderList: [], // 违章记录
|
||
welderSkillExamList: [], //焊工技能考试信息
|
||
|
||
showReduceScoreList: false,
|
||
showBadList: false,
|
||
showRewardList: false,
|
||
showWorkExperienceList: false,
|
||
showCertificateList: false,
|
||
btnAuth: false,
|
||
showPositionRecorderList: false,
|
||
showWelderSkillExamList: false,
|
||
|
||
projectInfoType: {},
|
||
projectConfigDetail: {},
|
||
idCard: "",
|
||
}
|
||
},
|
||
onLoad(options) {
|
||
this.workerId = options.id;
|
||
// this.btnAuth = this.checkBtnPermission({key: 'assist_attendance', menuPath: '/project/labor/attendanceManage'})
|
||
// this.btnAuth = true;
|
||
this.btnAuth = this.checkBtnPermission({key: 'add', menuPath: '/project/aiAnalysis/warningList'})
|
||
this.projectInfoType = JSON.parse(uni.getStorageSync('projectInfoType'));
|
||
// this.getDetailsData();
|
||
this.getDetail();
|
||
},
|
||
onShow() {
|
||
this.getDetailsData();
|
||
this.getSafeScoreDetail();
|
||
},
|
||
methods: {
|
||
downloadFn(row) {
|
||
let that = this;
|
||
let src = row.url.includes('http://') ? row.url : that.url_config + 'image/' + row.url;
|
||
uni.downloadFile({
|
||
url: src, //仅为示例,并非真实的资源
|
||
success: (res) => {
|
||
console.log(res)
|
||
if (res.statusCode === 200) {
|
||
// uni.showToast({
|
||
// title:'下载成功'
|
||
// })
|
||
var filePath = res.tempFilePath;
|
||
if (!filePath) return
|
||
uni.openDocument({
|
||
filePath: filePath,
|
||
success: function(res) {
|
||
console.log(res);
|
||
console.log('打开文档成功');
|
||
uni.showToast({
|
||
title: '打开文档成功'
|
||
})
|
||
}
|
||
});
|
||
} else {
|
||
uni.showToast({
|
||
title: '下载失败'
|
||
})
|
||
}
|
||
}
|
||
});
|
||
},
|
||
goTo() {
|
||
// uni.navigateTo({
|
||
// url: './assistCheckingIn?id=' + this.workerId
|
||
// })
|
||
uni.navigateTo({
|
||
url: '/pages/alarmPage/manualCapture/indexTwo?id=' + this.workerId + '&workerName=' + this.workerInfo.workerName
|
||
})
|
||
|
||
},
|
||
setCodeColor(fenshu) {
|
||
console.log(fenshu)
|
||
if (fenshu == -100) {
|
||
this.foregroundColor = "#000000";
|
||
this.pdgroundColor = "#000000";
|
||
this.codeShow = true;
|
||
return
|
||
}
|
||
if (fenshu >= 80) {
|
||
this.foregroundColor = "green";
|
||
this.pdgroundColor = "green";
|
||
} else if (fenshu >= 60 && fenshu < 80) {
|
||
// this.fontColor = "rgb(255, 230, 0)";
|
||
this.foregroundColor = "#F7C409";
|
||
this.pdgroundColor = "#F7C409";
|
||
} else if (fenshu < 60) {
|
||
// this.fontColor = "red";
|
||
this.foregroundColor = "#F0212A";
|
||
this.pdgroundColor = "#F0212A";
|
||
}
|
||
this.codeShow = true;
|
||
},
|
||
// 生成台账数据
|
||
productRecord(obj) {
|
||
let that = this;
|
||
let requestData = {
|
||
enterpriseName: obj.enterpriseName,
|
||
personType: obj.personType == 1 ? '施工人员' : obj.personType == 2 ? '管理人员' : '临时人员',
|
||
teamDepartmentName: obj.teamName || obj.departmentName,
|
||
workerName: obj.workerName,
|
||
projectSn: obj.projectSn,
|
||
scanQrCoder: JSON.parse(uni.getStorageSync('userInfo')).account
|
||
}
|
||
if (obj.safeScore >= 80) {
|
||
requestData.accessStatus = 1;
|
||
} else if (obj.safeScore >= 60 && obj.safeScore < 80) {
|
||
requestData.accessStatus = 1;
|
||
} else if (obj.safeScore < 60) {
|
||
requestData.accessStatus = 2;
|
||
}
|
||
this.sendRequest({
|
||
url: 'xmgl/workerAccessRecord/add',
|
||
method: 'post',
|
||
data: {
|
||
...requestData
|
||
},
|
||
success: res => {}
|
||
})
|
||
},
|
||
// 获取安全扣分详情
|
||
getSafeScoreDetail() {
|
||
let that = this;
|
||
this.sendRequest({
|
||
url: 'xmgl/xzDeductScoreRecord/list',
|
||
method: 'get',
|
||
data: {
|
||
projectSn: JSON.parse(uni.getStorageSync('projectDetail')).projectSn,
|
||
workerId: this.workerId,
|
||
},
|
||
success: res => {
|
||
if (res.code == 200) {
|
||
that.reduceScoreList = res.result;
|
||
}
|
||
}
|
||
})
|
||
},
|
||
// 获取安全扣分详情
|
||
getViolationDetailPage() {
|
||
let that = this;
|
||
this.sendRequest({
|
||
url: 'xmgl/violationDetail/page',
|
||
method: 'get',
|
||
data: {
|
||
projectSn: JSON.parse(uni.getStorageSync('projectDetail')).projectSn,
|
||
pageNo: 1,
|
||
pageSize: -1,
|
||
// violationReEducationId: this.workerInfo.id
|
||
workerId: this.workerInfo.id
|
||
},
|
||
success: res => {
|
||
if (res.code == 200) {
|
||
that.positionRecorderList = res.result.records;
|
||
}
|
||
}
|
||
})
|
||
},
|
||
// 获取安全扣分详情
|
||
getWelderSkillExamPage() {
|
||
let that = this;
|
||
this.sendRequest({
|
||
url: 'xmgl/welderSkillExam/page',
|
||
method: 'get',
|
||
data: {
|
||
projectSn: JSON.parse(uni.getStorageSync('projectDetail')).projectSn,
|
||
pageNo: 1,
|
||
pageSize: -1,
|
||
// violationReEducationId: this.workerInfo.id
|
||
workerId: this.workerInfo.id
|
||
},
|
||
success: res => {
|
||
if (res.code == 200) {
|
||
that.welderSkillExamList = res.result.records.map(item => {
|
||
return {
|
||
...item,
|
||
welderWorkPermit: isJSON(item.welderWorkPermit) && Array.isArray(JSON.parse(item.welderWorkPermit)) ? JSON.parse(item.welderWorkPermit) : [],
|
||
testType: isJSON(item.testType) && Array.isArray(JSON.parse(item.testType)) ? JSON.parse(item.testType) : [],
|
||
}
|
||
});
|
||
}
|
||
}
|
||
})
|
||
},
|
||
//获取详情数据
|
||
getDetailsData() {
|
||
this.sendRequest({
|
||
url: 'xmgl/workerInfo/viewWorkerInfoDetail',
|
||
method: 'post',
|
||
data: {
|
||
workerId: this.workerId,
|
||
},
|
||
success: res => {
|
||
if (res.code == 200) {
|
||
this.originWorkerInfo = {
|
||
...res.result.workerInfo
|
||
};
|
||
this.workerInfo = res.result.workerInfo;
|
||
this.productRecord(res.result.workerInfo)
|
||
this.getViolationDetailPage();
|
||
this.getWelderSkillExamPage();
|
||
//获取证书附件
|
||
if (res.result.certificateList.length > 0) {
|
||
res.result.certificateList.forEach((item) => {
|
||
item.certificateState = false; //设置可编辑状态
|
||
if (item.photoUrl) {
|
||
let arr = item.photoUrl.split("*");
|
||
item.fileList = [{
|
||
name: arr[0],
|
||
url: arr[1]
|
||
}];
|
||
} else {
|
||
item.fileList = [];
|
||
}
|
||
});
|
||
};
|
||
this.certificateList = res.result.certificateList; //资格证书
|
||
this.workExperienceList = res.result.workExperienceList; //从业信息
|
||
//获取不良记录附件
|
||
if (res.result.badList.length > 0) {
|
||
res.result.badList.forEach((item) => {
|
||
if (item.fileUrl) {
|
||
item.fileList = JSON.parse(item.fileUrl); //设置可编辑状态
|
||
}
|
||
});
|
||
}
|
||
//获取奖励记录附件
|
||
if (res.result.rewardList.length > 0) {
|
||
res.result.rewardList.forEach((item) => {
|
||
if (item.fileUrl) {
|
||
item.fileList = JSON.parse(item.fileUrl); //设置可编辑状态
|
||
} else {
|
||
item.fileList = [];
|
||
}
|
||
});
|
||
}
|
||
|
||
this.badList = res.result.badList; // 不良记录
|
||
this.rewardList = res.result.rewardList; // 奖励记录
|
||
this.insuranceList = res.result.insuranceList; //保险
|
||
this.contractList = res.result.contractList; //合同
|
||
this.physicalsList = res.result.physicalsList; //体检列表
|
||
this.safeEducationList = res.result.safeEducationList; //安全教育
|
||
this.idCard =this.workerInfo.idCard;
|
||
// 修改工号和身份证展示格式
|
||
if (this.workerInfo.idCard) {
|
||
let str = "***************"
|
||
this.workerInfo.idCard = this.workerInfo.idCard.substring(0, 3) + str + this
|
||
.workerInfo.idCard.substring(16)
|
||
}
|
||
if (this.workerInfo.attendanceNumber) {
|
||
let str = "***************"
|
||
this.workerInfo.attendanceNumber = this.workerInfo.attendanceNumber.substring(
|
||
0, 3) + str + this.workerInfo.attendanceNumber.substring(16)
|
||
}
|
||
if (this.workerInfo) {
|
||
this.setCodeColor(this.workerInfo.safeScore)
|
||
} else {
|
||
this.setCodeColor(0)
|
||
}
|
||
}
|
||
}
|
||
})
|
||
},
|
||
|
||
//显示操作 进退场按钮
|
||
operateBtn() {
|
||
this.operateType = !this.operateType;
|
||
},
|
||
//进场 退场操作
|
||
editPersonState() {
|
||
|
||
},
|
||
|
||
//显示列表
|
||
showInfoList(type) {
|
||
switch (type) {
|
||
case 1:
|
||
if (this.certificateList.length == 0) {
|
||
this.showCertificateList = false;
|
||
} else {
|
||
this.showCertificateList = !this.showCertificateList;
|
||
}
|
||
break;
|
||
case 2:
|
||
if (this.workExperienceList.length == 0) {
|
||
this.showWorkExperienceList = false;
|
||
} else {
|
||
this.showWorkExperienceList = !this.showWorkExperienceList;
|
||
}
|
||
break;
|
||
case 3:
|
||
if (this.rewardList.length == 0) {
|
||
this.showRewardList = false;
|
||
} else {
|
||
this.showRewardList = !this.showRewardList;
|
||
}
|
||
break;
|
||
case 4:
|
||
if (this.badList.length == 0) {
|
||
this.showBadList = false;
|
||
} else {
|
||
this.showBadList = !this.showBadList;
|
||
}
|
||
|
||
break;
|
||
case 5:
|
||
if (this.reduceScoreList.length == 0) {
|
||
this.showReduceScoreList = false;
|
||
} else {
|
||
this.showReduceScoreList = !this.showReduceScoreList;
|
||
}
|
||
|
||
break;
|
||
case 6:
|
||
uni.navigateTo({
|
||
url: "./addAttendanceManage?item=" + encodeURIComponent(JSON.stringify(this
|
||
.originWorkerInfo))
|
||
});
|
||
break;
|
||
case 7:
|
||
if (this.positionRecorderList.length == 0) {
|
||
this.showPositionRecorderList = false;
|
||
} else {
|
||
this.showPositionRecorderList = !this.showPositionRecorderList;
|
||
}
|
||
|
||
break;
|
||
case 8:
|
||
if (this.welderSkillExamList.length == 0) {
|
||
this.showWelderSkillExamList = false;
|
||
} else {
|
||
this.showWelderSkillExamList = !this.showWelderSkillExamList;
|
||
}
|
||
|
||
break;
|
||
|
||
}
|
||
},
|
||
//预览图片
|
||
previewImage(url, type) {
|
||
let fileList = [];
|
||
if (type == 1 || type == 2) {
|
||
fileList = [this.url_config + 'image/' + url]
|
||
}
|
||
uni.previewImage({
|
||
current: 0,
|
||
urls: fileList
|
||
})
|
||
},
|
||
|
||
|
||
//查看信息详情
|
||
showItemDetails(type) {
|
||
// type == 1.合同; 2.体检; 3.保险; 4安全教育; 5.二维码 ; 6.补卡
|
||
let moduleInfo = null;
|
||
if (type == 1) {
|
||
moduleInfo = this.contractList;
|
||
} else if (type == 2) {
|
||
moduleInfo = this.physicalsList;
|
||
} else if (type == 3) {
|
||
moduleInfo = this.insuranceList;
|
||
} else if (type == 4) {
|
||
// moduleInfo = this.safeEducationList;
|
||
moduleInfo = [];
|
||
} else if (type == 5) {
|
||
// moduleInfo = this.safeEducationList;
|
||
} else if (type == 6) {
|
||
uni.navigateTo({
|
||
url: "./addAttendance?item=" + encodeURIComponent(JSON.stringify(this.originWorkerInfo))
|
||
});
|
||
return;
|
||
};
|
||
uni.setStorageSync('moduleInfo', moduleInfo)
|
||
uni.navigateTo({
|
||
url: "./detailsMod?type=" + type + "&workerId=" + this.workerId + "&idCard=" + this.idCard
|
||
})
|
||
},
|
||
|
||
// 获取配置详情
|
||
getDetail() {
|
||
let that = this;
|
||
this.sendRequest({
|
||
url: 'xmgl/projectConfig/list',
|
||
method: 'get',
|
||
data: {
|
||
projectSn: JSON.parse(uni.getStorageSync('projectDetail')).projectSn,
|
||
},
|
||
success: res => {
|
||
if (res.code == 200) {
|
||
console.log(55555, res.result.records[0]);
|
||
that.projectConfigDetail = {
|
||
...res.result.records[0]
|
||
};
|
||
if (that.projectConfigDetail.isEnableDeduct == 0) {
|
||
that.setCodeColor(-100);
|
||
}
|
||
}
|
||
}
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.download1{
|
||
color: #1684fc;
|
||
cursor: pointer;
|
||
}
|
||
.kqbtn {
|
||
width: 100%;
|
||
height: 88rpx;
|
||
background-color: #2A8BF2;
|
||
color: white;
|
||
font-size: 32rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
position: fixed;
|
||
bottom: 0;
|
||
}
|
||
|
||
.flex {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.flex2 {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.flex3 {
|
||
display: flex;
|
||
}
|
||
|
||
.personDetail_content {
|
||
padding: 30rpx 30rpx 100rpx;
|
||
box-sizing: border-box;
|
||
width: 100%;
|
||
}
|
||
|
||
.personDetail_content .title_wrap {
|
||
width: 100%;
|
||
box-shadow: 0 4px 26rpx 0 rgba(212, 220, 236, 0.67);
|
||
box-sizing: border-box;
|
||
padding: 40rpx 28rpx 20rpx;
|
||
border-radius: 16rpx;
|
||
position: relative;
|
||
}
|
||
|
||
.title_wrap {
|
||
.exit_status {
|
||
position: absolute;
|
||
top: 15rpx;
|
||
right: 20rpx;
|
||
z-index: 10;
|
||
padding: 8rpx 24rpx;
|
||
font-size: 22rpx;
|
||
background: red;
|
||
color: #fff;
|
||
line-height: 28rpx;
|
||
border-radius: 6rpx;
|
||
}
|
||
}
|
||
|
||
.header_bg {
|
||
position: absolute;
|
||
top: 0;
|
||
right: 0;
|
||
z-index: 1;
|
||
width: 568rpx;
|
||
height: 90rpx;
|
||
}
|
||
|
||
.photograph {
|
||
width: 116rpx;
|
||
height: 150rpx;
|
||
z-index: 111;
|
||
margin-right: 16rpx;
|
||
}
|
||
|
||
.more {
|
||
width: 47rpx;
|
||
height: 37rpx;
|
||
z-index: 2222;
|
||
}
|
||
|
||
.more:active {
|
||
background-color: #999;
|
||
}
|
||
|
||
.user_info {
|
||
margin-left: 4rpx;
|
||
width: 50%;
|
||
}
|
||
|
||
.user_info .name {
|
||
font-size: 34rpx;
|
||
line-height: 48rpx;
|
||
font-weight: 500;
|
||
color: #488DEC;
|
||
|
||
}
|
||
|
||
.user_info .code {
|
||
font-size: 26rpx;
|
||
font-family: PingFangSC-Regular, PingFang SC;
|
||
font-weight: 400;
|
||
color: #2A2B5B;
|
||
line-height: 37rpx;
|
||
margin: 10rpx 0;
|
||
opacity: 0.8;
|
||
}
|
||
|
||
.user_info .nation {
|
||
font-size: 26rpx;
|
||
font-family: PingFangSC-Regular, PingFang SC;
|
||
font-weight: 400;
|
||
color: #2A2B5B;
|
||
line-height: 37rpx;
|
||
opacity: 0.8;
|
||
margin-bottom: 4px;
|
||
}
|
||
|
||
.projectName {
|
||
font-size: 30rpx;
|
||
font-family: PingFangSC-Medium, PingFang SC;
|
||
font-weight: 700;
|
||
color: #2A2B5B;
|
||
line-height: 42rpx;
|
||
margin-top: 30rpx;
|
||
}
|
||
|
||
.details-content {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
|
||
.left-content {
|
||
flex: 1;
|
||
}
|
||
}
|
||
|
||
.project_info {
|
||
font-size: 26rpx;
|
||
font-family: PingFangSC-Regular, PingFang SC;
|
||
font-weight: 400;
|
||
color: #2A2B5B;
|
||
line-height: 52rpx;
|
||
}
|
||
|
||
.project_info .name {
|
||
color: #372D66;
|
||
opacity: 0.6;
|
||
}
|
||
|
||
.item_wrap {
|
||
width: 100%;
|
||
margin: 20rpx 0;
|
||
box-shadow: 0 4px 26rpx 0 rgba(212, 220, 236, 0.67);
|
||
padding: 20rpx 0 20rpx 28rpx;
|
||
box-sizing: border-box;
|
||
border-radius: 16rpx;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.item_wrap .item {
|
||
width: 33%;
|
||
font-size: 30rpx;
|
||
font-family: PingFangSC-Regular, PingFang SC;
|
||
font-weight: 400;
|
||
color: #372D66;
|
||
line-height: 84rpx;
|
||
position: relative;
|
||
}
|
||
|
||
.item_wrap .item .state1 {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 58px;
|
||
padding: 3px 6px;
|
||
font-size: 20rpx;
|
||
background: #4181FE;
|
||
color: #fff;
|
||
line-height: 28rpx;
|
||
border-radius: 6rpx;
|
||
}
|
||
|
||
.item_wrap .item .state2 {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 58px;
|
||
padding: 3px 6px;
|
||
font-size: 20rpx;
|
||
background: red;
|
||
color: #fff;
|
||
line-height: 28rpx;
|
||
border-radius: 6rpx;
|
||
}
|
||
|
||
|
||
|
||
.margin_r_5 {
|
||
margin-right: 10rpx;
|
||
}
|
||
|
||
.log_wrap {
|
||
width: 100%;
|
||
margin: 20rpx 0;
|
||
box-shadow: 0 4px 26rpx 0 rgba(212, 220, 236, 0.67);
|
||
padding: 24rpx 28rpx;
|
||
box-sizing: border-box;
|
||
border-radius: 16rpx;
|
||
}
|
||
|
||
.log_wrap .title {
|
||
font-size: 30rpx;
|
||
font-family: PingFangSC-Medium, PingFang SC;
|
||
font-weight: 700;
|
||
color: #2A2B5B;
|
||
line-height: 42rpx;
|
||
}
|
||
|
||
.log_wrap .log_content {
|
||
margin-top: 16rpx;
|
||
border-top: 1px solid #C8C7CC;
|
||
box-sizing: border-box;
|
||
padding-top: 16rpx;
|
||
}
|
||
|
||
.log_wrap .log_content_item {
|
||
background-color: #f1f7fe;
|
||
border-radius: 4rpx;
|
||
border: 1px dashed #888888;
|
||
font-size: 26rpx;
|
||
font-family: PingFangSC-Regular, PingFang SC;
|
||
font-weight: 400;
|
||
color: #2A2B5B;
|
||
line-height: 40rpx;
|
||
box-sizing: border-box;
|
||
padding: 20rpx 28rpx;
|
||
margin-bottom: 16rpx;
|
||
}
|
||
|
||
.title_dialog {
|
||
position: absolute;
|
||
top: 40rpx;
|
||
right: 46px;
|
||
font-size: 24rpx;
|
||
line-height: 48rpx;
|
||
background-color: #fff;
|
||
width: 65px;
|
||
text-align: center;
|
||
z-index: 999;
|
||
border: 1px solid #999;
|
||
padding: 3px 16rpx;
|
||
border-radius: 4rpx;
|
||
}
|
||
</style> |