This commit is contained in:
BianLzhaoMin 2025-10-30 16:47:51 +08:00
parent 7308366adc
commit ff5304db60
2 changed files with 336 additions and 13 deletions

View File

@ -21,8 +21,9 @@ export const deleteEntryPersonAPI = (data) => {
// 人员入场 获取人员详情接口
export const getEntryPersonDetailAPI = (data) => {
return request({
url: `/bmw/worker/select/${data.id}/${data.proId}`,
url: `/bmw/worker/select`,
method: 'post',
data,
})
}
// 人员入场 修改人员接口
@ -98,7 +99,7 @@ export const getShanghaiProListByWorkerIdAPI = (data) => {
// 上海人员入场新工程接口
export const addShanghaiProEinAPI = (data) => {
return request({
return requestFormData({
url: '/bmw/worker/insertProEin',
method: 'POST',
data,

View File

@ -187,6 +187,166 @@
/>
</el-select>
</el-form-item>
<el-row>
<el-col :span="24">
<el-form-item
label="合同见证照片"
prop="businessLicense"
>
<div style="display: flex; gap: 10px">
<div
:key="item.title"
class="contract-img-box"
v-for="item in contractImageList"
>
<UploadImgFormData
:limit="3"
:file-size="10"
:multiple="true"
v-if="item.type != 6"
:file-list.sync="item.fileList"
:file-type="['jpg', 'png', 'jpeg']"
:is-uploaded="
item.fileList.length >= 3
"
/>
<span v-if="item.type != 6">
{{ item.title }}
</span>
</div>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="合同编号" prop="contractCode">
<el-input
clearable
maxlength="50"
show-word-limit
placeholder="请输入合同编号"
v-model.trim="
addEntryProjectForm.contractCode
"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="合同期限类型"
prop="contractTermType"
>
<el-radio-group
size="mini"
v-model="
addEntryProjectForm.contractTermType
"
>
<el-radio-button
label="以完成一定工作为期限的合同"
/>
<el-radio-button label="固定期限合同" />
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item
label="合同签订日期"
prop="contractStartDate"
>
<el-date-picker
type="date"
style="width: 100%"
value-format="yyyy-MM-dd"
placeholder="请选择合同签订日期"
v-model.trim="
addEntryProjectForm.contractStartDate
"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="合同终止日期"
prop="contractStopDate"
>
<el-date-picker
type="date"
style="width: 100%"
value-format="yyyy-MM-dd"
placeholder="请选择合同终止日期"
v-model.trim="
addEntryProjectForm.contractStopDate
"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item
label="工资核定方式"
prop="wageApprovedWay"
>
<el-radio-group
size="mini"
v-model="
addEntryProjectForm.wageApprovedWay
"
>
<el-radio-button label="天" />
<!-- <el-radio-button label="月" /> -->
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="工资核定标准"
prop="wageCriterion"
>
<el-input
clearable
maxlength="10"
show-word-limit
placeholder="请输入工资核定标准"
v-model.trim="
addEntryProjectForm.wageCriterion
"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="附件">
<UploadFileFormData
:limit="3"
:file-size="20"
:multiple="true"
uploadTip="身份证、银行卡扫描件,承诺书、劳动合同或用工协议扫描件"
:file-list.sync="
contractImageList[1].fileList
"
:file-type="[
'jpg',
'png',
'jpeg',
'pdf',
'doc',
'docx',
]"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row class="dialog-footer-btn">
@ -215,6 +375,8 @@
<script>
import DialogModel from '@/components/DialogModel'
import UploadImgFormData from '@/components/UploadImgFormData'
import UploadFileFormData from '@/components/UploadFileFormData'
import {
getShanghaiProByIdNumberAPI,
getShanghaiProListByWorkerIdAPI,
@ -231,6 +393,8 @@ export default {
name: 'ShanghaiProSetting',
components: {
DialogModel,
UploadFileFormData,
UploadImgFormData,
},
props: {
idNumber: {
@ -239,9 +403,44 @@ export default {
},
},
data() {
const validateContractStartDate = (rule, value, callback) => {
if (!value) {
return callback()
}
if (value >= this.addEntryProjectForm.contractStopDate) {
callback(new Error('合同签订日期不能大于合同终止日期'))
}
callback()
}
const validateContractStopDate = (rule, value, callback) => {
if (!value) {
return callback()
}
if (value <= this.addEntryProjectForm.contractStartDate) {
callback(new Error('合同终止日期不能小于合同签订日期'))
}
callback()
}
return {
currentStep: 1,
tableData: [],
//
contractImageList: [
{
type: 1,
fileList: [],
name: 'wageCard',
title: '手持银行卡、承诺书',
},
{
type: 6,
title: '附件',
fileList: [],
name: 'wageCard',
},
],
columnsList: [
{
prop: 'name',
@ -280,9 +479,9 @@ export default {
dialogConfig: {
outerVisible: false,
outerTitle: '新增入场工程',
outerWidth: '40%',
outerWidth: '60%',
// minHeight: '78vh',
// maxHeight: '78vh',
maxHeight: '90vh',
},
addEntryProjectForm: {
@ -297,6 +496,12 @@ export default {
proId: '',
postId: '',
id: '',
contractCode: '',
contractTermType: '以完成一定工作为期限的合同',
contractStartDate: null,
contractStopDate: null,
wageApprovedWay: '天',
wageCriterion: '',
},
addEntryProjectFormRules: {
@ -336,6 +541,34 @@ export default {
message: '请输入入场班组',
},
],
contractStartDate: [
{
required: false,
},
{
trigger: ['change', 'blur'],
validator: validateContractStartDate,
},
],
contractStopDate: [
{
required: false,
},
{
trigger: ['change', 'blur'],
validator: validateContractStopDate,
},
],
wageCriterion: [
{
required: false,
},
{
trigger: 'blur',
pattern: /^[1-9]\d{0,5}$/,
message: '请输入1-999999之间的正整数',
},
],
},
idNumberForm: {
@ -452,20 +685,109 @@ export default {
}
},
//
checkFormStatus() {
//
let fieldsList = [
// 'contractCode', //
'wageCriterion', //
'contractStopDate', //
'contractStartDate', //
]
if (
this.addEntryProjectForm.contractTermType ===
'以完成一定工作为期限的合同'
) {
fieldsList = fieldsList.filter(
(item) => item !== 'contractStopDate',
)
}
const imageFieldsToCheck = this.contractImageList.slice(0, -1) //
//
let emptyFieldCount = 0
let filledFieldCount = 0
//
fieldsList.forEach((field) => {
if (!this.addEntryProjectForm[field]) {
emptyFieldCount++
} else {
filledFieldCount++
}
})
//
imageFieldsToCheck.forEach((item) => {
if (item.fileList.length === 0) {
emptyFieldCount++
} else {
filledFieldCount++
}
})
//
if (
emptyFieldCount ===
fieldsList.length + imageFieldsToCheck.length
) {
return 'all_empty' //
} else if (
filledFieldCount ===
fieldsList.length + imageFieldsToCheck.length
) {
return 'all_filled' //
} else {
return 'partial' //
}
},
//
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)
await updatePersonLightStatusAPI(this.workerId)
} else {
reject(false)
const status = this.checkFormStatus()
const filesList = []
const formData = new FormData()
const params = {
...this.addEntryProjectForm,
}
console.log('status', status)
if (status === 'partial') {
this.$modal.msgError(
'请完善合同见证中的必填信息(除附件外)后再提交',
)
return reject(new Error('合同信息未完善'))
}
this.contractImageList.forEach((item) => {
item.fileList.forEach((file) => {
filesList.push({
type: item.type,
name: 'contract',
})
formData.append('files', file.raw)
})
})
formData.append('params', JSON.stringify(params))
formData.append('fileMsg', JSON.stringify(filesList))
try {
// const res = await uploadContractAPI(formData)
const res = await addShanghaiProEinAPI(formData)
if (res.code === 200) {
this.$modal.msgSuccess('新增成功')
resolve(true)
await updatePersonLightStatusAPI(this.workerId)
} else {
reject(false)
}
} catch (err) {
this.$modal.msgError('合同上传失败,请重试')
reject(err)
}
} else {
reject(false)