上海人员入场多工程设置页面完善

This commit is contained in:
BianLzhaoMin 2025-09-18 15:26:44 +08:00
parent dbec005722
commit 8bcac60702
6 changed files with 227 additions and 30 deletions

View File

@ -21,7 +21,7 @@ export const deleteEntryPersonAPI = (data) => {
// 人员入场 获取人员详情接口 // 人员入场 获取人员详情接口
export const getEntryPersonDetailAPI = (data) => { export const getEntryPersonDetailAPI = (data) => {
return request({ return request({
url: `/bmw/worker/select/${data.id}`, url: `/bmw/worker/select/${data.id}/${data.proId}`,
method: 'post', method: 'post',
}) })
} }
@ -68,3 +68,30 @@ export const checkFaceImageAPI = (data) => {
data, data,
}) })
} }
// 根据身份证号码查询上海工程接口
export const getShanghaiProByIdNumberAPI = (data) => {
return request({
url: `/bmw/worker/selectByIdNumber/${data.idNumber}`,
method: 'POST',
data,
})
}
// 根据人员ID获取上海工程列表
export const getShanghaiProListByWorkerIdAPI = (data) => {
return request({
url: '/bmw/worker/einListByWorkerId',
method: 'GET',
params: data,
})
}
// 上海人员入场新工程接口
export const addShanghaiProEinAPI = (data) => {
return request({
url: '/bmw/worker/insertProEin',
method: 'POST',
data,
})
}

View File

@ -429,6 +429,12 @@ export default {
this.getTableList() this.getTableList()
}, },
//
getTableListByParams(data) {
Object.assign(this.queryParams, data)
this.getTableList()
},
/** 重置按钮 */ /** 重置按钮 */
resetQuery() { resetQuery() {
this.$refs.queryFormRef.resetFields() this.$refs.queryFormRef.resetFields()

View File

@ -436,7 +436,7 @@
v-model="contractInfoForm.wageApprovedWay" v-model="contractInfoForm.wageApprovedWay"
> >
<el-radio-button label="天" /> <el-radio-button label="天" />
<el-radio-button label="月" /> <!-- <el-radio-button label="月" /> -->
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -605,6 +605,7 @@ import {
editEntryPersonAPI, editEntryPersonAPI,
getEntryPersonDetailAPI, getEntryPersonDetailAPI,
updatePersonLightStatusAPI, updatePersonLightStatusAPI,
getShanghaiProByIdNumberAPI,
} from '@/api/construction-person/entry-and-exit-manage/person-entry' } from '@/api/construction-person/entry-and-exit-manage/person-entry'
import { import {
getSubSelectListByConditionAPI, getSubSelectListByConditionAPI,
@ -627,6 +628,10 @@ export default {
type: Number, type: Number,
default: 1, default: 1,
}, },
proId: {
type: [String, Number],
default: '',
},
}, },
components: { components: {
UploadImgFormData, UploadImgFormData,
@ -1439,6 +1444,7 @@ export default {
async getEntryPersonDetail() { async getEntryPersonDetail() {
const { data: res } = await getEntryPersonDetailAPI({ const { data: res } = await getEntryPersonDetailAPI({
id: this.queryDetailsId, id: this.queryDetailsId,
proId: this.proId,
}) })
// //
@ -1612,6 +1618,47 @@ export default {
// //
const age = new Date().getFullYear() - birthday.slice(0, 4) const age = new Date().getFullYear() - birthday.slice(0, 4)
this.idCardInfoForm.age = age this.idCardInfoForm.age = age
this.checkShanghaiPro()
},
//
async checkShanghaiPro() {
const { data: res } = await getShanghaiProByIdNumberAPI({
idNumber: this.idCardInfoForm.idNumber,
})
// return res
console.log(res, 'res身份证人员是否有入场工程')
if (
res &&
Object.keys(res).length > 0 &&
res.isShanghai == 1 &&
this.formType == 1
) {
this.$modal.msgError(
'当前人员已经入场上海工程,请前往上海多工程设置模块进行设置,正在跳转...',
)
setTimeout(() => {
this.$emit('onOpenShanghaiProSetting', res.idNumber)
}, 1000)
}
if (
res &&
Object.keys(res).length > 0 &&
res.isShanghai == 0 &&
this.formType == 1
) {
this.$modal.msgError(
'当前人员已经存在入场工程,可直接编辑,正在跳转...',
)
setTimeout(() => {
this.$emit('onOpenAddOrEdit', res.idNumber)
}, 1000)
}
}, },
// websocket // websocket
@ -1661,6 +1708,7 @@ export default {
const birthdayYear = Birthday.slice(0, 4) const birthdayYear = Birthday.slice(0, 4)
const currentYear = new Date().getFullYear() const currentYear = new Date().getFullYear()
_this.idCardInfoForm.age = currentYear - birthdayYear _this.idCardInfoForm.age = currentYear - birthdayYear
_this.checkShanghaiPro()
} }
} }
this.webSocket.onerror = function (evt) { this.webSocket.onerror = function (evt) {

View File

@ -106,8 +106,13 @@
:formType="formType" :formType="formType"
:workerId="workerId" :workerId="workerId"
:einStatus="einStatus" :einStatus="einStatus"
:proId="proId"
ref="addOrEditFormContentRef" ref="addOrEditFormContentRef"
:queryDetailsId="queryDetailsId" :queryDetailsId="queryDetailsId"
@onOpenAddOrEdit="onHandleOpenAddOrEdit"
@onOpenShanghaiProSetting="
onHandleOpenShanghaiProSetting
"
/> />
<el-row class="dialog-footer-btn"> <el-row class="dialog-footer-btn">
@ -153,6 +158,7 @@
<template v-else> <template v-else>
<ShanghaiProSetting <ShanghaiProSetting
:idNumber="idNumber"
@closeDialogOuter="handleCloseDialogOuter" @closeDialogOuter="handleCloseDialogOuter"
/> />
</template> </template>
@ -198,10 +204,12 @@ export default {
columnsList, columnsList,
dialogConfig, dialogConfig,
workerId: '', // id workerId: '', // id
proId: '', // id
formType: 1, // formType: 1, //
einStatus: 1, // einStatus: 1, //
queryDetailsId: '', // id queryDetailsId: '', // id
importFileList: [], // importFileList: [], //
idNumber: '', //
getEntryPersonListAPI, getEntryPersonListAPI,
} }
}, },
@ -229,9 +237,13 @@ export default {
this.queryDetailsId = data.id this.queryDetailsId = data.id
this.workerId = data.workerId this.workerId = data.workerId
this.einStatus = data.einStatus this.einStatus = data.einStatus
if (data.proId) {
this.proId = data.proId
}
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
} else { } else {
this.workerId = '' this.workerId = ''
this.proId = ''
this.queryDetailsId = '' this.queryDetailsId = ''
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
} }
@ -276,6 +288,7 @@ export default {
// //
handleCloseDialogOuter() { handleCloseDialogOuter() {
// this.$refs.addOrEditFormContentRef.resetForm() // this.$refs.addOrEditFormContentRef.resetForm()
this.idNumber = ''
this.importFileList = [] this.importFileList = []
this.dialogConfig.outerVisible = false this.dialogConfig.outerVisible = false
}, },
@ -349,6 +362,21 @@ export default {
this.dialogConfig.maxHeight = '90vh' this.dialogConfig.maxHeight = '90vh'
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
}, },
//
onHandleOpenAddOrEdit(idNumber) {
this.dialogConfig.outerVisible = false
this.$refs.personEntryTableRef.getTableListByParams({
idNumber: idNumber,
})
},
//
onHandleOpenShanghaiProSetting(idNumber) {
this.dialogConfig.outerVisible = false
this.onHandleShanghaiPersonMultiEngineSetting()
this.idNumber = idNumber
},
}, },
async created() { async created() {

View File

@ -2,13 +2,18 @@
<!-- 施工人员 ---- 出入场管理 ---- 上海人员多工程设置 --> <!-- 施工人员 ---- 出入场管理 ---- 上海人员多工程设置 -->
<div class="container"> <div class="container">
<div class="shanghai-pro-setting-step1" v-if="currentStep === 1"> <div class="shanghai-pro-setting-step1" v-if="currentStep === 1">
<el-form label-width="140px"> <el-form
<el-form-item label="身份证号码"> label-width="140px"
:model="idNumberForm"
ref="idNumberFormRef"
:rules="idNumberFormRules"
>
<el-form-item label="身份证号码" prop="idNumber">
<el-input <el-input
v-model="idNumber"
placeholder="请输入身份证号码"
clearable clearable
style="width: 420px" style="width: 420px"
placeholder="请输入身份证号码"
v-model.trim="idNumberForm.idNumber"
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -101,6 +106,7 @@
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="name">
<el-input <el-input
clearable clearable
disabled
placeholder="请输入姓名" placeholder="请输入姓名"
v-model.trim="addEntryProjectForm.name" v-model.trim="addEntryProjectForm.name"
/> />
@ -108,6 +114,7 @@
<el-form-item label="身份证号" prop="idNumber"> <el-form-item label="身份证号" prop="idNumber">
<el-input <el-input
clearable clearable
disabled
placeholder="请输入身份证号" placeholder="请输入身份证号"
v-model.trim="addEntryProjectForm.idNumber" v-model.trim="addEntryProjectForm.idNumber"
/> />
@ -208,6 +215,11 @@
<script> <script>
import DialogModel from '@/components/DialogModel' import DialogModel from '@/components/DialogModel'
import {
getShanghaiProByIdNumberAPI,
getShanghaiProListByWorkerIdAPI,
addShanghaiProEinAPI,
} from '@/api/construction-person/entry-and-exit-manage/person-entry'
import { getPostTypeSelectListCommonFun } from '@/utils/getCommonData' import { getPostTypeSelectListCommonFun } from '@/utils/getCommonData'
import { import {
getSubSelectListByConditionAPI, getSubSelectListByConditionAPI,
@ -219,9 +231,14 @@ export default {
components: { components: {
DialogModel, DialogModel,
}, },
props: {
idNumber: {
type: String,
default: '',
},
},
data() { data() {
return { return {
idNumber: '',
currentStep: 1, currentStep: 1,
tableData: [], tableData: [],
columnsList: [ columnsList: [
@ -278,6 +295,7 @@ export default {
subId: '', subId: '',
proId: '', proId: '',
postId: '', postId: '',
id: '',
}, },
addEntryProjectFormRules: { addEntryProjectFormRules: {
@ -319,6 +337,21 @@ export default {
], ],
}, },
idNumberForm: {
idNumber: '',
},
idNumberFormRules: {
idNumber: [
{
required: true,
message: '请输入身份证号码',
},
],
},
workerId: '', // id
postTypeSelectList: [], // postTypeSelectList: [], //
lotProjectSelectList: [], // lotProjectSelectList: [], //
subSelectList: [], // subSelectList: [], //
@ -334,8 +367,6 @@ export default {
label: item.postName, label: item.postName,
} }
}) })
this.getLotProjectSelectList()
}, },
methods: { methods: {
@ -348,52 +379,99 @@ export default {
// //
onHandleNextStep() { onHandleNextStep() {
this.currentStep = 2 // this.currentStep = 2
this.$refs.idNumberFormRef.validate(async (valid) => {
if (valid) {
// this.currentStep = 2
const { data: res } = await getShanghaiProByIdNumberAPI({
idNumber: this.idNumberForm.idNumber,
})
if (res?.isShanghai == 0) {
this.$modal.msgError('该人员当前入场的工程非上海工程!')
return
}
this.currentStep = 2
this.workerId = res.id
this.addEntryProjectForm.name = res.name
this.addEntryProjectForm.idNumber = res.idNumber
this.addEntryProjectForm.id = res.id
this.getShanghaiProList()
}
})
},
//
async getShanghaiProList() {
const res = await getShanghaiProListByWorkerIdAPI({
workerId: this.workerId,
})
this.tableData = res?.rows
}, },
// //
onHandleAddEntryProject() { onHandleAddEntryProject() {
this.getLotProjectSelectList()
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
}, },
// //
handleCloseDialogOuter() { handleCloseDialogOuter() {
this.$refs.addEntryProjectFormRef.resetFields()
this.dialogConfig.outerVisible = false this.dialogConfig.outerVisible = false
}, },
// //
onHandleCloseDialogOuter() { onHandleCloseDialogOuter() {
this.$refs.addEntryProjectFormRef.resetFields()
this.dialogConfig.outerVisible = false this.dialogConfig.outerVisible = false
}, },
// //
onHandleConfirmAddEntryProject() { async onHandleConfirmAddEntryProject() {
// this.$emit('closeDialogOuter') const res = await this.addShanghaiProEin()
this.$refs.addEntryProjectFormRef.validate((valid) => { if (res) {
if (valid) { this.$emit('closeDialogOuter')
this.$emit('closeDialogOuter') }
}
})
}, },
// //
onHandleConfirmAddEntryProjectAndContinue() { async onHandleConfirmAddEntryProjectAndContinue() {
this.$refs.addEntryProjectFormRef.validate((valid) => { const res = await this.addShanghaiProEin()
if (valid) { if (res) {
this.tableData.push( this.$refs.addEntryProjectFormRef.resetFields()
JSON.parse(JSON.stringify(this.addEntryProjectForm)), this.dialogConfig.outerVisible = false
) this.getShanghaiProList()
this.$refs.addEntryProjectFormRef.resetFields() }
this.dialogConfig.outerVisible = false },
}
//
async addShanghaiProEin() {
return new Promise((resolve, reject) => {
this.$refs.addEntryProjectFormRef.validate(async (valid) => {
if (valid) {
const res = await addShanghaiProEinAPI(
this.addEntryProjectForm,
)
if (res.code === 200) {
this.$modal.msgSuccess('新增成功')
resolve(true)
} else {
reject(false)
}
} else {
reject(false)
}
})
}) })
}, },
// //
async getLotProjectSelectList() { async getLotProjectSelectList() {
const { data: res } = await getLotProjectSelectListByConditionAPI( const { data: res } = await getLotProjectSelectListByConditionAPI({
{}, workerId: this.workerId,
) })
this.lotProjectSelectList = res.map((item) => { this.lotProjectSelectList = res.map((item) => {
return { return {
value: item.id, value: item.id,
@ -473,6 +551,16 @@ export default {
).label ).label
}, },
}, },
watch: {
idNumber: {
handler(newVal) {
this.idNumberForm.idNumber = newVal
},
deep: true,
immediate: true,
},
},
} }
</script> </script>

View File

@ -96,7 +96,7 @@
v-model="contractInfoForm.wageApprovedWay" v-model="contractInfoForm.wageApprovedWay"
> >
<el-radio-button label="天" /> <el-radio-button label="天" />
<el-radio-button label="月" /> <!-- <el-radio-button label="月" /> -->
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>