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

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) => {
return request({
url: `/bmw/worker/select/${data.id}`,
url: `/bmw/worker/select/${data.id}/${data.proId}`,
method: 'post',
})
}
@ -68,3 +68,30 @@ export const checkFaceImageAPI = (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()
},
//
getTableListByParams(data) {
Object.assign(this.queryParams, data)
this.getTableList()
},
/** 重置按钮 */
resetQuery() {
this.$refs.queryFormRef.resetFields()

View File

@ -436,7 +436,7 @@
v-model="contractInfoForm.wageApprovedWay"
>
<el-radio-button label="天" />
<el-radio-button label="月" />
<!-- <el-radio-button label="月" /> -->
</el-radio-group>
</el-form-item>
</el-col>
@ -605,6 +605,7 @@ import {
editEntryPersonAPI,
getEntryPersonDetailAPI,
updatePersonLightStatusAPI,
getShanghaiProByIdNumberAPI,
} from '@/api/construction-person/entry-and-exit-manage/person-entry'
import {
getSubSelectListByConditionAPI,
@ -627,6 +628,10 @@ export default {
type: Number,
default: 1,
},
proId: {
type: [String, Number],
default: '',
},
},
components: {
UploadImgFormData,
@ -1439,6 +1444,7 @@ export default {
async getEntryPersonDetail() {
const { data: res } = await getEntryPersonDetailAPI({
id: this.queryDetailsId,
proId: this.proId,
})
//
@ -1612,6 +1618,47 @@ export default {
//
const age = new Date().getFullYear() - birthday.slice(0, 4)
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
@ -1661,6 +1708,7 @@ export default {
const birthdayYear = Birthday.slice(0, 4)
const currentYear = new Date().getFullYear()
_this.idCardInfoForm.age = currentYear - birthdayYear
_this.checkShanghaiPro()
}
}
this.webSocket.onerror = function (evt) {

View File

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

View File

@ -2,13 +2,18 @@
<!-- 施工人员 ---- 出入场管理 ---- 上海人员多工程设置 -->
<div class="container">
<div class="shanghai-pro-setting-step1" v-if="currentStep === 1">
<el-form label-width="140px">
<el-form-item label="身份证号码">
<el-form
label-width="140px"
:model="idNumberForm"
ref="idNumberFormRef"
:rules="idNumberFormRules"
>
<el-form-item label="身份证号码" prop="idNumber">
<el-input
v-model="idNumber"
placeholder="请输入身份证号码"
clearable
style="width: 420px"
placeholder="请输入身份证号码"
v-model.trim="idNumberForm.idNumber"
/>
</el-form-item>
</el-form>
@ -101,6 +106,7 @@
<el-form-item label="姓名" prop="name">
<el-input
clearable
disabled
placeholder="请输入姓名"
v-model.trim="addEntryProjectForm.name"
/>
@ -108,6 +114,7 @@
<el-form-item label="身份证号" prop="idNumber">
<el-input
clearable
disabled
placeholder="请输入身份证号"
v-model.trim="addEntryProjectForm.idNumber"
/>
@ -208,6 +215,11 @@
<script>
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 {
getSubSelectListByConditionAPI,
@ -219,9 +231,14 @@ export default {
components: {
DialogModel,
},
props: {
idNumber: {
type: String,
default: '',
},
},
data() {
return {
idNumber: '',
currentStep: 1,
tableData: [],
columnsList: [
@ -278,6 +295,7 @@ export default {
subId: '',
proId: '',
postId: '',
id: '',
},
addEntryProjectFormRules: {
@ -319,6 +337,21 @@ export default {
],
},
idNumberForm: {
idNumber: '',
},
idNumberFormRules: {
idNumber: [
{
required: true,
message: '请输入身份证号码',
},
],
},
workerId: '', // id
postTypeSelectList: [], //
lotProjectSelectList: [], //
subSelectList: [], //
@ -334,8 +367,6 @@ export default {
label: item.postName,
}
})
this.getLotProjectSelectList()
},
methods: {
@ -348,52 +379,99 @@ export default {
//
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() {
this.getLotProjectSelectList()
this.dialogConfig.outerVisible = true
},
//
handleCloseDialogOuter() {
this.$refs.addEntryProjectFormRef.resetFields()
this.dialogConfig.outerVisible = false
},
//
onHandleCloseDialogOuter() {
this.$refs.addEntryProjectFormRef.resetFields()
this.dialogConfig.outerVisible = false
},
//
onHandleConfirmAddEntryProject() {
// this.$emit('closeDialogOuter')
this.$refs.addEntryProjectFormRef.validate((valid) => {
if (valid) {
this.$emit('closeDialogOuter')
}
})
async onHandleConfirmAddEntryProject() {
const res = await this.addShanghaiProEin()
if (res) {
this.$emit('closeDialogOuter')
}
},
//
onHandleConfirmAddEntryProjectAndContinue() {
this.$refs.addEntryProjectFormRef.validate((valid) => {
if (valid) {
this.tableData.push(
JSON.parse(JSON.stringify(this.addEntryProjectForm)),
)
this.$refs.addEntryProjectFormRef.resetFields()
this.dialogConfig.outerVisible = false
}
async onHandleConfirmAddEntryProjectAndContinue() {
const res = await this.addShanghaiProEin()
if (res) {
this.$refs.addEntryProjectFormRef.resetFields()
this.dialogConfig.outerVisible = false
this.getShanghaiProList()
}
},
//
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() {
const { data: res } = await getLotProjectSelectListByConditionAPI(
{},
)
const { data: res } = await getLotProjectSelectListByConditionAPI({
workerId: this.workerId,
})
this.lotProjectSelectList = res.map((item) => {
return {
value: item.id,
@ -473,6 +551,16 @@ export default {
).label
},
},
watch: {
idNumber: {
handler(newVal) {
this.idNumberForm.idNumber = newVal
},
deep: true,
immediate: true,
},
},
}
</script>

View File

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