nxdt-uniapp/pages/projectInfo/builderDetails.vue

284 lines
7.8 KiB
Vue
Raw Normal View History

2025-01-16 17:36:46 +08:00
<template>
<view>
<Navbar title="施工人员详情" />
<div class="content">
<u-form
labelPosition="left"
:model="formData"
ref="addressForm"
labelWidth="120"
:labelStyle="{ fontWeight: 400, fontSize: '12px', color: 'rgba(15, 39, 75, 0.6)' }"
>
<!-- 姓名 -->
<u-form-item label="姓名" borderBottom>
<u-input
v-model="formData.name"
disabled
disabledColor="#fff"
border="none"
inputAlign="right"
fontSize="12"
style="font-weight: 500"
/>
</u-form-item>
<!-- 联系方式 -->
<u-form-item label="联系方式" borderBottom>
<u-input
v-model="formData.phone"
disabled
disabledColor="#fff"
border="none"
inputAlign="right"
fontSize="12"
style="font-weight: 500"
/>
</u-form-item>
<!-- 性别 -->
<u-form-item label="性别" borderBottom>
<u-input
v-model="formData.sex"
disabled
disabledColor="#fff"
border="none"
inputAlign="right"
fontSize="12"
style="font-weight: 500"
/>
</u-form-item>
<!-- 年龄 -->
<u-form-item label="年龄" borderBottom>
<u-input
v-model="formData.age"
disabled
disabledColor="#fff"
border="none"
inputAlign="right"
fontSize="12"
style="font-weight: 500"
/>
</u-form-item>
<!-- 身份证号 -->
<u-form-item label="身份证号码" borderBottom>
<u-input
v-model="formData.idCard"
disabled
disabledColor="#fff"
border="none"
inputAlign="right"
fontSize="12"
style="font-weight: 500"
/>
</u-form-item>
<!-- 岗位 -->
<u-form-item label="岗位" borderBottom>
<u-input
v-model="formData.postName"
disabled
disabledColor="#fff"
border="none"
inputAlign="right"
fontSize="12"
style="font-weight: 500"
/>
</u-form-item>
<!-- 特种工种 -->
<u-form-item label="特殊工种" borderBottom v-if="showSpecialJobFile">
<u-input
v-model="formData.specialJobType"
disabled
disabledColor="#fff"
border="none"
inputAlign="right"
fontSize="12"
style="font-weight: 500"
/>
</u-form-item>
<!-- 家庭住址 -->
<u-form-item label="家庭住址" borderBottom>
<u-input
v-model="formData.homeAddress"
disabled
disabledColor="#fff"
border="none"
inputAlign="right"
fontSize="12"
style="font-weight: 500"
/>
</u-form-item>
<!-- 现住址 -->
<u-form-item label="现住址" borderBottom>
<u-input
v-model="formData.currentAddress"
disabled
disabledColor="#fff"
border="none"
inputAlign="right"
fontSize="12"
style="font-weight: 500"
/>
</u-form-item>
<!-- 籍贯 -->
<u-form-item label="籍贯" borderBottom>
<u-input
v-model="formData.nativePlace"
disabled
disabledColor="#fff"
border="none"
inputAlign="right"
fontSize="12"
style="font-weight: 500"
/>
</u-form-item>
</u-form>
<div>
<Title title="人脸照片" />
<u--image :showLoading="true" :src="formData.faceUrl" width="50px" height="50px" radius="4" @click="clickImg" />
</div>
<div>
<Title title="体检文件" />
<Preview :dataList="formData.physicalExaminationFile" />
</div>
<div>
<Title title="保险文件" />
<Preview :dataList="formData.insuranceFile" />
</div>
<div v-if="showSpecialJobFile">
<Title title="特殊工种文件" />
<Preview :dataList="formData.specialJobFile" />
</div>
<div>
<Title title="其他附件" />
<Preview :dataList="formData.otherFile" />
</div>
<div style="margin: 30px 0" v-if="showBtn">
<u-button type="primary" size="small" shape="circle" @click="handleReadOver">完成批阅</u-button>
</div>
</div>
</view>
</template>
<script>
import { getConstructionPersonnelDetails, addAnnotations, getSubPersonnelDetails } from '@/api/project'
import config from '@/config'
export default {
data() {
return {
opt: {},
formData: {
name: '',
phone: '',
sex: '',
admissionDate: '',
idCard: '',
// 工种
postName: '',
// 特种工种
specialJobType: '',
homeAddress: '',
// 现住址
currentAddress: '',
// 籍贯
nativePlace: '',
// 人脸照片
faceUrl: '',
// 体检文件
physicalExaminationFile: [],
// 保险文件
insuranceFile: [],
// 其他附件
otherFile: []
},
// 是否显示按钮
showBtn: false,
// 是否显示特殊工种文件
showSpecialJobFile: false
}
},
onLoad(options) {
this.opt = JSON.parse(options.params)
console.log('🚀 ~ onLoad ~ options:', this.opt)
if (this.opt.isApproval) {
this.showBtn = true
} else {
this.showBtn = false
}
},
mounted() {
this.getConstructionPersonnelDetails()
},
methods: {
clickImg() {
uni.previewImage({
urls: [this.formData.faceUrl]
})
},
// 完成批阅
handleReadOver() {
console.log('完成批阅')
// 确认提示框
uni.showModal({
title: '提示',
content: '是否完成批阅?',
success: async res => {
if (res.confirm) {
const params = {
uuid: this.opt.uuid,
taskId: this.opt.taskId,
type: '1'
}
const res = await addAnnotations(params)
console.log('🚀 ~ handleReadOver ~ 完成批阅:', res)
if (res.code === 200) {
uni.showToast({
title: '批阅成功',
icon: 'success'
})
setTimeout(() => {
uni.navigateBack()
}, 1000)
}
}
}
})
},
// 获取人员详情
async getConstructionPersonnelDetails() {
const params = {
id: this.opt.id,
uuid: this.opt.uuid,
proId: this.opt.proId,
consUuid: this.opt.consUuid
}
if (this.opt.isSubcontractor) {
const res = await getSubPersonnelDetails(params)
console.log('🚀 ~ getConstructionPersonnelDetails ~ 人员详情:', res)
if (res.code === 200) {
this.formData = res.data
if (res.data.specialJobType && res.data.specialJobType != '暂无') {
this.showSpecialJobFile = true
}
}
} else {
const res = await getConstructionPersonnelDetails(params)
console.log('🚀 ~ getConstructionPersonnelDetails ~ 人员详情:', res)
if (res.code === 200) {
this.formData = res.data
this.formData.faceUrl = config.fileUrl + this.formData.faceUrl
if (res.data.specialJobType && res.data.specialJobType != '暂无') {
this.showSpecialJobFile = true
}
}
}
}
}
}
</script>
<style lang="scss" scoped>
.content {
padding: 0 20px;
}
</style>