Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

user5 1 vuosi sitten
vanhempi
commit
43c1bcbe66

+ 14 - 0
src/api/human/enrollment/EnrollmentRegistrationService.js

@@ -16,6 +16,13 @@ export default {
 			data: inputForm
 		})
 	},
+	save2 (inputForm) {
+		return request({
+			url: prefix +  `/enrollmentRegistration/save2`,
+			method: 'post',
+			data: inputForm
+		})
+	},
 	updateInfo (inputForm) {
 		return request({
 			url: prefix +  `/enrollmentRegistration/updateInfo`,
@@ -142,6 +149,13 @@ export default {
 			params: {mobilePhone: mobilePhone}
 		})
 	},
+	findByUserId (userId) {
+		return request({
+			url: prefix + '/enrollmentRegistration/findByUserId',
+			method: 'get',
+			params: {userId: userId}
+		})
+	},
 	downloadFile () {
 		return request({
 			url: prefix + '/enrollmentRegistration/downloadFile',

+ 7 - 0
src/api/sys/userService.js

@@ -175,6 +175,13 @@ export default {
 			method: "post",
 			params:params
 		});
+	},
+	getMobileById(id){
+		return request({
+			url: prefix + `/sys/user/getMobileById`,
+			method: "post",
+			params: { id: id },
+		});
 	}
 
 };

+ 20 - 14
src/views/cw/reimbursementApproval/info/ReimbursementForm.vue

@@ -574,21 +574,22 @@
 								<el-input v-model="scope.row.typeName" @focus="typePullForm6(scope.$rowIndex, scope.row.deptId)"></el-input>
 							</template>
 						</vxe-table-column>
-						<vxe-table-column field="reimbuserName" title="报销登记名称" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请填写报销登记名称', trigger:'blur'}]">
+						<vxe-table-column field="reimbuserName" title="报销详情" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请填写报销登记名称', trigger:'blur'}]">
 							<template v-slot:edit="scope">
-								<el-input v-model="scope.row.reimbuserName" @focus="openProgramPageForm6(scope.$rowIndex, scope.row)"></el-input>
+<!--								<el-input v-model="scope.row.reimbuserName" @focus="openProgramPageForm6(scope.$rowIndex, scope.row)"></el-input>-->
+								<el-input maxlength="15" v-model="scope.row.reimbuserName" ></el-input>
 							</template>
 						</vxe-table-column>
 						<vxe-table-column field="number" title="费用(元)" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请输入费用', trigger:'blur'}]">
 							<template v-slot:edit="scope">
-								<el-input maxlength="15" v-model="scope.row.number" @input="scope.row.number = twoDecimalPlaces(scope.row.number)"></el-input>
-							</template>
-						</vxe-table-column>
-						<vxe-table-column field="bankCardNumber" title="银行卡号" :edit-render="{}" show-overflow="title">
-							<template v-slot:edit="scope">
-								<el-input :disabled='true' v-model="scope.row.bankCardNumber" ></el-input>
+								<el-input v-model="scope.row.number" @focus="openProgramPageForm6(scope.$rowIndex, scope.row)"></el-input>
 							</template>
 						</vxe-table-column>
+<!--						<vxe-table-column field="bankCardNumber" title="银行卡号" :edit-render="{}" show-overflow="title">-->
+<!--							<template v-slot:edit="scope">-->
+<!--								<el-input :disabled='true' v-model="scope.row.bankCardNumber" ></el-input>-->
+<!--							</template>-->
+<!--						</vxe-table-column>-->
 						<vxe-table-column field="content" title="内容" :edit-render="{}" show-overflow="title">
 							<template v-slot:edit="scope">
 								<el-input v-model="scope.row.content" ></el-input>
@@ -750,7 +751,7 @@
       <CwProgramPageForm ref="cwProgramPageForm3" @getProgram="getProgram3"></CwProgramPageForm>
       <CwProgramPageForm ref="cwProgramPageForm4" @getProgram="getProgram4"></CwProgramPageForm>
       <CwProgramPageForm ref="cwProgramPageForm5" @getProgram="getProgram5"></CwProgramPageForm>
-      <ReimburseRegisterRadioChoose ref="cwProgramPageForm6" @getProgram="getProgram6"></ReimburseRegisterRadioChoose>
+      <ReimburseRegisterChoose ref="cwProgramPageForm6" @getProgram="getProgram6"></ReimburseRegisterChoose>
 <!--      <ReimbursementTypePullForm ref="reimbursementTypePullForm" @getProgramForType="getProgramForType"></ReimbursementTypePullForm>-->
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm" @getProgramForType="getProgramForType"></CwReimbursementTypePullForm>
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm2" @getProgramForType="getProgramForType2"></CwReimbursementTypePullForm>
@@ -789,7 +790,7 @@
   import XEUtils from 'xe-utils'
   // import ProgramPageForm from '@/views/modules/finance/invoice/ProgramPageForm'
   import CwProgramPageForm from './CwProgramPageForm'
-  import ReimburseRegisterRadioChoose from '@/views/human/practice/reimburseRegister/ReimburseRegisterRadioChoose'
+  import ReimburseRegisterChoose from '@/views/human/practice/reimburseRegister/ReimburseRegisterChoose'
   // import ReimbursementTypePullForm from '@/views/modules/finance/invoice/ReimbursementTypePullForm'
   import CwReimbursementTypePullForm from './CwReimbursementTypePullForm'
   import UserPullForm from '@/views/finance/invoice/UserPullForm'
@@ -949,7 +950,7 @@
 		UpLoadComponent,
       // ProgramPageForm,
       CwProgramPageForm,
-		ReimburseRegisterRadioChoose,
+		ReimburseRegisterChoose,
       // ReimbursementTypePullForm,
       CwReimbursementTypePullForm,
       UserPullForm,
@@ -1798,6 +1799,10 @@
         this.$refs.cwProgramPageForm5.init('2', false)
       },
 		openProgramPageForm6 (rowIndex, row) {
+			if (this.commonJS.isEmpty(row.typeName)) {
+				this.$message.error('请选择报销类型')
+				return
+			}
 			this.indexRow = rowIndex
 			this.$refs.cwProgramPageForm6.init()
 		},
@@ -1837,11 +1842,12 @@
 		getProgram6 (rows) {
 			console.log('rows', rows)
 			this.inputForm.humanInfoProcured[this.indexRow].humanReimburseRegisterId = rows.id
-			this.inputForm.humanInfoProcured[this.indexRow].reimbuserName = rows.reimbuserName
-			this.inputForm.humanInfoProcured[this.indexRow].number = rows.allReimbursementAmount
-			this.inputForm.humanInfoProcured[this.indexRow].bankCardNumber = rows.bankCardNumber
+			// this.inputForm.humanInfoProcured[this.indexRow].reimbuserName = rows.reimbuserName
+			this.inputForm.humanInfoProcured[this.indexRow].number = rows.totalNum
+			// this.inputForm.humanInfoProcured[this.indexRow].bankCardNumber = rows.bankCardNumber
 			this.indexRow = ''
 			this.$forceUpdate()
+			this.humanKeyProcured = Math.random()
 		},
       // 报销类型下拉弹窗
       typePullForm (rowIndex, deptName) {

+ 3 - 1
src/views/flowable/task/TaskForm.vue

@@ -709,6 +709,7 @@ export default {
 		// Process_1699926014064 备用金检查
 		// Process_1698129477831 离职申请
 		// Process_1701829547129 会计-复核及签章
+		// Process_1702005929963 完善个人信息
 
 		// 驳回
 		reject(vars) {
@@ -765,7 +766,8 @@ export default {
 				this.procDefId.includes('Process_1699321267272') ||
 				this.procDefId.includes('Process_1699926014064') ||
 				this.procDefId.includes('Process_1698129477831') ||
-				this.procDefId.includes('Process_1701829547129')
+				this.procDefId.includes('Process_1701829547129') ||
+				this.procDefId.includes('Process_1702005929963')
 			) {
 				console.log('进入新版驳回')
 				this.$confirm(`确定驳回流程吗?`, '提示', {

+ 10 - 8
src/views/human/depart/handover/HandoverAddForm.vue

@@ -40,14 +40,16 @@
 						<UserSelect2 :limit='1' :modelValue="inputForm.projectManager" @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelect2>
 					</el-form-item>
 				</el-col>
-				<el-col :span="12">
-					<el-form-item label="底稿管理员" prop="draftAdministrator"
-								  :rules="[
-								  	{required: true, message: '底稿管理员不能为空', trigger: 'change'}
-                   ]">
-						<UserSelectAll size="medium" :limit='1' :modelValue="inputForm.draftAdministrator" @update:modelValue='(value) => {inputForm.draftAdministrator = value}'></UserSelectAll>
-					</el-form-item>
-				</el-col>
+<!--				<el-col :span="12">-->
+<!--					<el-form-item label="底稿管理员" prop="draftAdministrator"-->
+<!--								  :rules="[-->
+<!--								  	{required: true, message: '底稿管理员不能为空', trigger: 'change'}-->
+<!--                   ]">-->
+<!--						<UserSelectAll size="medium" :limit='1' :modelValue="inputForm.draftAdministrator" @update:modelValue='(value) => {inputForm.draftAdministrator = value}'></UserSelectAll>-->
+<!--					</el-form-item>-->
+<!--				</el-col>-->
+			</el-row>
+			<el-row :gutter="26">
 				<el-col :span="12">
 					<el-form-item label="备注" prop="remarks" :rules="[]">
 						<el-input type="textarea" v-model="inputForm.remarks"></el-input>

+ 31 - 21
src/views/human/depart/registration/DepartRegistrationList.vue

@@ -170,6 +170,7 @@
 </template>
 
 <script>
+	import enrollmentRegistrationService from '@/api/human/enrollment/EnrollmentRegistrationService'
 	import SelectTree from '@/components/treeSelect/treeSelect.vue'
 	import handoverService from '@/api/human/depart/HandoverService'
   import departRegistrationService from '@/api/human/depart/DepartRegistrationService'
@@ -310,27 +311,36 @@
         this.refreshList()
       },
       start () {
-		  // 读取流程表单
-		  let tabTitle = `发起流程【离职申请】`
-		  let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了 [离职申请]`
-		  taskService.getTaskDef({ procDefId: this.processDefinitionAuditId,
-			  status: 'startAndHold'}).then((data) => {
-			  this.$router.push({
-				  path: '/flowable/task/TaskForm',
-				  query: {
-					  ...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
-					  procDefId: this.processDefinitionAuditId,
-					  procDefKey: this.procDefKey,
-					  status: 'startAndHold',
-					  title: tabTitle,
-					  formType: data.formType,
-					  formUrl: data.formUrl,
-					  formTitle: processTitle,
-					  businessId: 'false',
-					  isShow: false,
-					  routePath: '/human/depart/registration/DepartRegistrationList'
-				  }
-			  })
+		  //发起流程前判断是否已经完善了个人信息 及 入住登记表中是否有当然登录人的信息
+		  var userId = this.$store.state.user.id
+		  enrollmentRegistrationService.findByUserId(userId).then((data) => {
+			  if (data == 0) {
+				  this.$message.error('请先完善个人信息再发起离职申请!')
+				  throw new Error('请先完善个人信息再发起离职申请!')
+			  } else {
+				  // 读取流程表单
+				  let tabTitle = `发起流程【离职申请】`
+				  let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了 [离职申请]`
+				  taskService.getTaskDef({ procDefId: this.processDefinitionAuditId,
+					  status: 'startAndHold'}).then((data) => {
+					  this.$router.push({
+						  path: '/flowable/task/TaskForm',
+						  query: {
+							  ...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							  procDefId: this.processDefinitionAuditId,
+							  procDefKey: this.procDefKey,
+							  status: 'startAndHold',
+							  title: tabTitle,
+							  formType: data.formType,
+							  formUrl: data.formUrl,
+							  formTitle: processTitle,
+							  businessId: 'false',
+							  isShow: false,
+							  routePath: '/human/depart/registration/DepartRegistrationList'
+						  }
+					  })
+				  })
+			  }
 		  })
       },
 		editForm (row) {

+ 27 - 0
src/views/human/enrollment/registration/EnrollmentRegistrationAddForm.vue

@@ -258,6 +258,19 @@
 								</el-date-picker>
 							</el-form-item>
 						</el-col>
+						<el-col :span="12">
+							<el-form-item label="合同结束日期" prop="contractEndDate" :rules="[
+                  {required: true, message:'请填写合同结束日期', trigger: 'blur'}
+               ]">
+								<el-date-picker
+									style="width: 100%"
+									v-model="inputForm.contractEndDate"
+									value-format="YYYY-MM-DD"
+									placeholder="选择日期"
+								>
+								</el-date-picker>
+							</el-form-item>
+						</el-col>
 					</el-row>
 				</el-form>
 				<el-form v-else-if="inputForm.type !== '0'" style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
@@ -318,6 +331,18 @@
 								</el-date-picker>
 							</el-form-item>
 						</el-col>
+						<el-col :span="12">
+							<el-form-item label="合同结束日期" prop="contractEndDate" :rules="[
+               ]">
+								<el-date-picker
+									style="width: 100%"
+									v-model="inputForm.contractEndDate"
+									value-format="YYYY-MM-DD"
+									placeholder="选择日期"
+								>
+								</el-date-picker>
+							</el-form-item>
+						</el-col>
 					</el-row>
 				</el-form>
 			</el-row>
@@ -602,6 +627,7 @@
 					department: '',
 					entryDate: '',
 					contractStartDate: '',
+					contractEndDate: '',
 					remarks: '',
 					type: '',
 					onJobStatus: '',
@@ -740,6 +766,7 @@
 					department: '',
 					entryDate: '',
 					contractStartDate: '',
+					contractEndDate: '',
 					remarks: '',
 					type: '',
 					onJobStatus: '',

+ 752 - 0
src/views/human/enrollment/registration/EnrollmentRegistrationAddForm2.vue

@@ -0,0 +1,752 @@
+<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+	<div>
+		<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''" :disabled="(status === 'audit' || status === 'taskFormDetail') && testFlag"
+				 label-width="100px" @submit.native.prevent>
+
+			<el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
+			<el-row :gutter="26">
+				<el-col :span="12">
+					<el-form-item label="姓名" prop="name" :rules="[{required: true, message: '姓名不能为空', trigger: 'blur'}]">
+						<el-input v-model="inputForm.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="性别" prop="sex"
+								  :rules="[
+								  	{required: true, message: '性别不能为空', trigger: 'change'}
+                 ]">
+						<el-radio-group v-model="inputForm.sex">
+							<el-radio v-for="item in $dictUtils.getDictList('sex')" :label="item.value" :key="item.value">{{item.label}}</el-radio>
+						</el-radio-group>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="年龄" prop="age" :rules="[{required: true, message: '年龄不能为空', trigger: 'change'}]">
+						<el-input v-model="inputForm.age" type="number"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="出生日期" prop="birthday" :rules="[
+                  {required: true, message:'请填写出生日期', trigger: 'blur'}
+               ]">
+						<el-date-picker
+							style="width: 100%"
+							v-model="inputForm.birthday"
+							value-format="YYYY-MM-DD"
+							placeholder="选择日期"
+						>
+						</el-date-picker>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="政治面貌" prop="politicalOutlook" :rules="[]">
+<!--						<el-input v-model="inputForm.politicalOutlook"></el-input>-->
+						<el-select v-model="inputForm.politicalOutlook" placeholder="请选择政治面貌" style="width:100%;">
+							<el-option
+								v-for="item in $dictUtils.getDictList('political_outlook')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="籍贯" prop="nativePlace" :rules="[]">
+						<el-input v-model="inputForm.nativePlace"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="民族" prop="nation" :rules="[]">
+						<el-input v-model="inputForm.nation"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="婚姻状况" prop="maritalStatus" :rules="[]">
+						<el-select v-model="inputForm.maritalStatus" placeholder="请选择婚姻状况" clearable style="width: 100%;">
+							<el-option
+								v-for="item in $dictUtils.getDictList('marital_status')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+
+				</el-col>
+				<el-col :span="12" v-if="flagMobile">
+					<el-form-item label="联系电话" prop="mobilePhone" :rules="[{required: true, message: '联系电话不能为空', trigger: 'change'}]">
+						<el-input v-model="inputForm.mobilePhone" :disabled = true></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12" v-else>
+					<el-form-item label="联系电话" prop="mobilePhone" :rules="[{required: true, message: '联系电话不能为空', trigger: 'change'}]">
+						<el-input v-model="inputForm.mobilePhone" @blur="mobilePhoneOnly(inputForm.mobilePhone)"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="身份证号码" prop="idCard" :rules="[{required: true,validator: validator.isCardId, trigger:'blur'}]">
+						<el-input v-model="inputForm.idCard" @blur="idCardOnly(inputForm.idCard)"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="家庭住址" prop="homeAddress" :rules="[]">
+						<el-input v-model="inputForm.homeAddress"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="常住住址" prop="permanentAddress" :rules="[]">
+						<el-input v-model="inputForm.permanentAddress"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-divider content-position="left"><i class="el-icon-document"></i> 学历信息</el-divider>
+			<el-row :gutter="26">
+				<el-col :span="12">
+					<el-form-item label="毕业院校" prop="graduatedFrom" :rules="[]">
+						<el-input v-model="inputForm.graduatedFrom"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="专业" prop="speciality" :rules="[]">
+						<el-input v-model="inputForm.speciality"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="开始时间" prop="startTime" :rules="[
+               ]">
+						<el-date-picker
+							style="width: 100%"
+							v-model="inputForm.startTime"
+							value-format="YYYY-MM-DD"
+							placeholder="选择日期"
+						>
+						</el-date-picker>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="毕业时间" prop="endTime" :rules="[
+               ]">
+						<el-date-picker
+							style="width: 100%"
+							v-model="inputForm.endTime"
+							value-format="YYYY-MM-DD"
+							placeholder="选择日期"
+						>
+						</el-date-picker>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="学历" prop="education" :rules="[]">
+						<el-select v-model="inputForm.education" placeholder="请选择学历" clearable style="width: 100%;">
+							<el-option
+								v-for="item in $dictUtils.getDictList('education')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="学历性质" prop="educationNature" :rules="[]">
+						<el-select v-model="inputForm.educationNature" placeholder="请选择学历性质" clearable style="width: 100%;">
+							<el-option
+								v-for="item in $dictUtils.getDictList('education_nature')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="是否毕业" prop="graduatedOrNot" :rules="[]">
+						<el-radio-group v-model="inputForm.graduatedOrNot">
+							<el-radio v-for="item in $dictUtils.getDictList('graduated_or_not')" :label="item.value" :key="item.value">{{item.label}}</el-radio>
+						</el-radio-group>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="英语等级" prop="englishLevel" :rules="[]">
+						<el-select v-model="inputForm.englishLevel" placeholder="请选择英语等级" clearable style="width: 100%;">
+							<el-option
+								v-for="item in $dictUtils.getDictList('english_level')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="计算机等级" prop="ncre" :rules="[]">
+						<el-select v-model="inputForm.ncre" placeholder="请选择英语等级" clearable style="width: 100%;">
+							<el-option
+								v-for="item in $dictUtils.getDictList('computer_level')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row :gutter="26">
+				<el-col :span="12">
+					<el-form-item label="个人简介" prop="remarks" :rules="[]">
+						<el-input type="textarea" maxlength="200" show-word-limit v-model="inputForm.remarks"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-divider content-position="left" v-if="status === 'audit' && processName"><i class="el-icon-document"></i> 部门信息</el-divider>
+			<el-row :gutter="26">
+				<el-form v-if="status === 'audit' && processName" style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+						 label-width="110px" @submit.native.prevent>
+					<el-row :gutter="26">
+						<el-col :span="12">
+							<el-form-item label="所属部门" prop="department" :rules="[
+						{required: true, message:'请选择所属部门', trigger: 'blur'}
+					]">
+								<SelectTree
+									ref="officeTree"
+									:props="{
+										  value: 'id',             // ID字段名
+										  label: 'name',         // 显示名称
+										  children: 'children'    // 子级字段名
+										}"
+									:url="`/system-server/sys/office/treeData?type=2`"
+									:value="inputForm.department"
+									:accordion="true"
+									size="default"
+									@getValue="(value) => {inputForm.department=value}"/>
+							</el-form-item>
+						</el-col>
+						<el-col :span="12">
+							<el-form-item label="员工类型" prop="onJobStatus" :rules="[
+								{required: true, message:'请选择员工类型', trigger: 'blur'}
+							]">
+								<!--						<el-input v-model="inputForm.politicalOutlook"></el-input>-->
+								<el-select v-model="inputForm.onJobStatus" placeholder="请选择员工类型" style="width:100%;">
+									<el-option
+										v-for="item in $dictUtils.getDictList('on_job_status')"
+										:key="item.value"
+										:label="item.label"
+										:value="item.value">
+									</el-option>
+								</el-select>
+							</el-form-item>
+						</el-col>
+						<el-col :span="12">
+							<el-form-item label="进所日期" prop="entryDate" :rules="[
+                  {required: true, message:'请填写进所日期', trigger: 'blur'}
+               ]">
+								<el-date-picker
+									style="width: 100%"
+									v-model="inputForm.entryDate"
+									value-format="YYYY-MM-DD"
+									placeholder="选择日期"
+								>
+								</el-date-picker>
+							</el-form-item>
+						</el-col>
+						<el-col :span="12">
+							<el-form-item label="合同开始日期" prop="contractStartDate" :rules="[
+                  {required: true, message:'请填写合同开始日期', trigger: 'blur'}
+               ]">
+								<el-date-picker
+									style="width: 100%"
+									v-model="inputForm.contractStartDate"
+									value-format="YYYY-MM-DD"
+									placeholder="选择日期"
+								>
+								</el-date-picker>
+							</el-form-item>
+						</el-col>
+						<el-col :span="12">
+							<el-form-item label="合同结束日期" prop="contractEndDate" :rules="[
+                  {required: true, message:'请填写合同结束日期', trigger: 'blur'}
+               ]">
+								<el-date-picker
+									style="width: 100%"
+									v-model="inputForm.contractEndDate"
+									value-format="YYYY-MM-DD"
+									placeholder="选择日期"
+								>
+								</el-date-picker>
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+			</el-row>
+			<el-divider content-position="left" v-if="method === 'view' && processFlag"><i class="el-icon-document"></i> 部门信息</el-divider>
+			<el-row :gutter="26">
+				<el-form v-if="method === 'view' && processFlag" style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+						 :disabled="true"
+						 label-width="110px" @submit.native.prevent>
+					<el-row :gutter="26">
+						<el-col :span="12">
+							<el-form-item label="所属部门" prop="department" :rules="[
+					]">
+								<SelectTree
+									ref="officeTree"
+									:props="{
+										  value: 'id',             // ID字段名
+										  label: 'name',         // 显示名称
+										  children: 'children'    // 子级字段名
+										}"
+									:url="`/system-server/sys/office/treeData?type=2`"
+									:value="inputForm.department"
+									:accordion="true"
+									size="default"
+									@getValue="(value) => {inputForm.department=value}"/>
+							</el-form-item>
+						</el-col>
+						<el-col :span="12">
+							<el-form-item label="员工类型" prop="onJobStatus" :rules="[]">
+								<!--						<el-input v-model="inputForm.politicalOutlook"></el-input>-->
+								<el-select v-model="inputForm.onJobStatus" placeholder="请选择员工类型" style="width:100%;">
+									<el-option
+										v-for="item in $dictUtils.getDictList('on_job_status')"
+										:key="item.value"
+										:label="item.label"
+										:value="item.value">
+									</el-option>
+								</el-select>
+							</el-form-item>
+						</el-col>
+						<el-col :span="12">
+							<el-form-item label="进所日期" prop="entryDate" :rules="[
+               ]">
+								<el-date-picker
+									style="width: 100%"
+									v-model="inputForm.entryDate"
+									value-format="YYYY-MM-DD"
+									placeholder="选择日期"
+								>
+								</el-date-picker>
+							</el-form-item>
+						</el-col>
+						<el-col :span="12">
+							<el-form-item label="合同开始日期" prop="contractStartDate" :rules="[
+               ]">
+								<el-date-picker
+									style="width: 100%"
+									v-model="inputForm.contractStartDate"
+									value-format="YYYY-MM-DD"
+									placeholder="选择日期"
+								>
+								</el-date-picker>
+							</el-form-item>
+						</el-col>
+						<el-col :span="12">
+							<el-form-item label="合同结束日期" prop="contractEndDate" :rules="[
+               ]">
+								<el-date-picker
+									style="width: 100%"
+									v-model="inputForm.contractEndDate"
+									value-format="YYYY-MM-DD"
+									placeholder="选择日期"
+								>
+								</el-date-picker>
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+			</el-row>
+		</el-form>
+	</div>
+</template>
+
+<script>
+	import userService from '@/api/sys/UserService'
+	import CommonApi from '@/api/cw/common/CommonApi'
+	import SelectTree from '@/components/treeSelect/treeSelect.vue'
+	import enrollmentRegistrationService from '@/api/human/enrollment/EnrollmentRegistrationService'
+	import OSSSerivce, {
+		httpRequest,
+		fileName,
+		toHref,
+	} from '@/api/sys/OSSService'
+
+	export default {
+		props: {
+			businessId: {
+				type: String,
+				default: ''
+			},
+			formReadOnly: {
+				type: Boolean,
+				default: false
+			},
+			status: {
+				type: String,
+				default: ''
+			}
+		},
+		data () {
+			return {
+				processName: false,
+				processFlag: true,
+				testFlag: false,
+				flagMobile: false,
+				hideUploadEdit: false, //隐藏上传按钮
+				hideUploadEdit2: false, //隐藏上传按钮
+				limitNum: 1,
+				fileList: [],
+				fileList2: [],
+				dialogImageUrl: '',
+				dialogVisible: false,
+				dialogVisible2: false,
+				disabled: false,
+				title: '',
+				method: '',
+				visible: false,
+				loading: false,
+				showViewer: false,
+				inputForm: {
+					userId: this.$store.state.user.id,
+					name: this.$store.state.user.name,
+					sex: '',
+					age: '',
+					birthday: '',
+					politicalOutlook: '',
+					nativePlace: '',
+					nation: '',
+					maritalStatus: '',
+					mobilePhone: '',
+					idCard: '',
+					homeAddress: '',
+					permanentAddress: '',
+					graduatedFrom: '',
+					speciality: '',
+					startTime: '',
+					endTime: '',
+					education: '',
+					educationNature: '',
+					graduatedOrNot: '',
+					englishLevel: '',
+					ncre: '',
+					department: '',
+					entryDate: '',
+					contractStartDate: '',
+					contractEndDate: '',
+					remarks: '',
+					type: '',
+					onJobStatus: '',
+					procInsId: '',
+				},
+				keyWatch: '',
+			}
+		},
+		commonApi: null,
+		created () {
+			this.ossService = new OSSSerivce()
+			this.commonApi = new CommonApi()
+		},
+		components: {
+			SelectTree,
+		},
+		computed: {
+			bus: {
+				get () {
+					return this.businessId
+				},
+				set (val) {
+					this.businessId = val
+				}
+			},
+			name () {
+				return this.$store.state.user.name
+			},
+			userId () {
+				return this.$store.state.user.id
+			}
+		},
+		watch: {
+			'keyWatch': {
+				handler (newVal) {
+					if (this.commonJS.isNotEmpty(this.bus)) {
+						this.init('', this.bus)
+					} else {
+						this.$nextTick(() => {
+							this.$refs.inputForm.resetFields()
+						})
+					}
+				}
+			},
+			'loading': {
+				handler (newVal) {
+					this.$emit('changeLoading', newVal)
+				}
+			}
+		},
+		methods: {
+			async httpRequest (file) {
+				await httpRequest(file, fileName(file), this.directory, this.maxValue)
+			},
+
+			getKeyWatch (keyWatch) {
+				this.keyWatch = keyWatch
+			},
+			getUpload () {
+			},
+			init (method, id) {
+				console.log('this.status', this.status)
+				this.method = method
+				this.inputForm = {
+					userId: this.$store.state.user.id,
+					name: this.$store.state.user.name,
+					sex: '',
+					age: '',
+					birthday: '',
+					politicalOutlook: '',
+					nativePlace: '',
+					nation: '',
+					maritalStatus: '',
+					mobilePhone: '',
+					idCard: '',
+					homeAddress: '',
+					permanentAddress: '',
+					graduatedFrom: '',
+					speciality: '',
+					startTime: '',
+					endTime: '',
+					education: '',
+					educationNature: '',
+					graduatedOrNot: '',
+					englishLevel: '',
+					ncre: '',
+					department: '',
+					entryDate: '',
+					contractStartDate: '',
+					contractEndDate: '',
+					remarks: '',
+					type: '',
+					onJobStatus: '',
+					procInsId: '',
+				}
+				if (method === 'add') {
+					this.title = `新建入职登记`
+				} else if (method === 'edit') {
+					this.title = '修改报销类型'
+				}
+				this.inputForm.id = id
+				this.visible = true
+				this.loading = false
+				this.$nextTick(() => {
+					this.loading = true
+					enrollmentRegistrationService.findById(this.inputForm.id).then(async (data) => {
+						this.fileList = []
+						this.fileList2 = []
+						if (this.status === 'audit' || this.status === 'taskFormDetail') {
+							this.method = 'view'
+						}
+
+						console.log('method', method)
+						this.inputForm = this.recover(this.inputForm, data)
+						this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
+
+						if (this.commonJS.isNotEmpty(this.inputForm.name)) {
+							this.testFlag = true
+						}
+						this.getProcessName()
+
+						userService.getMobileById(this.$store.state.user.id).then(async (mo) => {
+							if (mo) {
+								this.inputForm.mobilePhone = mo
+								this.flagMobile = true
+							}
+						})
+						if (this.commonJS.isEmpty(this.inputForm.name)) {
+							this.inputForm.name = this.$store.state.user.name
+							this.inputForm.userId = this.$store.state.user.id
+						}
+						console.log('this.testFlag', this.testFlag)
+						this.loading = false
+					})
+				})
+			},
+			// 表单提交
+			doSubmit () {
+				this.$refs['inputForm'].validate((valid) => {
+					if (valid) {
+						this.loading = true
+						if (this.commonJS.isEmpty(this.inputForm.idCard)) {
+							this.loading = false
+							this.$message.error('身份证号码不能为空')
+							throw new Error('身份证号码不能为空')
+						}
+						this.inputForm.id = this.businessId
+						enrollmentRegistrationService.save2(this.inputForm).then((data) => {
+							this.close()
+							this.$message.success(data)
+							this.$emit('refreshDataList')
+							this.loading = false
+						}).catch(() => {
+							this.loading = false
+						})
+					}
+				})
+			},
+			close () {
+				this.$refs.inputForm.resetFields()
+				this.fileList = []
+				this.fileList2 = []
+				this.visible = false
+			},
+			reapplyForm (callback) {
+				this.loading = true
+				enrollmentRegistrationService.findById(this.inputForm.id).then((data) => {
+					if (data.type !== '4') { // 审核状态不是“驳回”,就弹出提示
+						this.loading = false
+						this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					} else {
+						this.startForm(callback)
+					}
+				})
+			},
+			// 送审
+			async startForm (callback) {
+				this.$refs['inputForm'].validate(async (valid) => {
+					if (valid) {
+						this.loading = true
+
+						if (this.commonJS.isEmpty(this.inputForm.idCard)) {
+							this.loading = false
+							this.$message.error('身份证号码不能为空')
+							throw new Error('身份证号码不能为空')
+						}
+						if (!this.validateXG.isPhoneOrMobile(this.inputForm.mobilePhone)) {
+							this.$message.error('”联系电话“填写不正确,请重新填写')
+							this.loading = false
+							this.inputForm.mobilePhone = ''
+							throw new Error('”联系电话“填写不正确,请重新填写')
+						}
+						this.inputForm.type = '2'
+						enrollmentRegistrationService.save2(this.inputForm).then((data) => {
+							this.inputForm.title = `${this.$store.state.user.name} 发起了 [${this.inputForm.name} - 入职登记]`
+							this.inputForm.id = data.businessId
+							callback(data.businessTable, data.businessId, this.inputForm)
+							this.$refs.inputForm.resetFields()
+							this.loading = false
+						}).catch(() => {
+							this.$refs.inputForm.resetFields()
+							this.loading = false
+						})
+					} else {
+						this.loading = false
+					}
+				})
+			},
+
+			// 通过
+			async agreeForm (callback) {
+				this.loading = true
+				enrollmentRegistrationService.findById(this.inputForm.id).then((data) => {
+					if (data.type !== '2') { // 审核状态不是“审核中”,就弹出提示
+						this.loading = false
+						this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					} else {
+						this.$refs['inputForm'].validate(async (valid) => {
+							if (valid) {
+								this.loading = true
+								if (this.commonJS.isNotEmpty(this.processName)) {
+									if (this.processName) {
+										this.inputForm.type = '5'
+									} else {
+										this.inputForm.type = '2'
+									}
+								}
+
+								console.log('this.inputForm',this.inputForm)
+								enrollmentRegistrationService.save2(this.inputForm).then((data) => {
+									callback(data.businessTable, data.businessId, this.inputForm)
+									this.loading = false
+								}).catch(() => {
+									this.loading = false
+								})
+							} else {
+								this.loading = false
+							}
+						})
+					}
+				})
+			},
+			// 修改状态
+			updateStatusById (type, callback) {
+				if (type === 'reject') {
+					this.loading = true
+					enrollmentRegistrationService.findById(this.inputForm.id).then((data) => {
+						if (data.type !== '2') { // 审核状态不是“审核中”,就弹出提示
+							this.loading = false
+							this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+							throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						} else {
+							this.inputForm.type = '4'
+							enrollmentRegistrationService.updateStatusById(this.inputForm).then(() => {
+								this.loading = false
+								callback()
+							})
+						}
+					})
+				} else if (type === 'hold') {
+					this.loading = true
+					enrollmentRegistrationService.findById(this.inputForm.id).then((data) => {
+						if (data.type !== '4') { // 审核状态不是“驳回”,就弹出提示
+							this.loading = false
+							this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+							throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						} else {
+							this.inputForm.type = '1'
+							enrollmentRegistrationService.updateStatusById(this.inputForm).then(() => {
+								this.loading = false
+								callback()
+							})
+						}
+					})
+				}
+			},
+			//身份证号码唯一性判断
+			idCardOnly(idCard) {
+				enrollmentRegistrationService.findIdCardOnly(idCard).then((data) => {
+					if (data !== 0) {
+						this.$message.error('身份证号码已存在,请重新确认')
+						this.inputForm.idCard = ''
+						throw new Error('身份证号码已存在,请重新确认')
+					}
+				})
+			},
+			//联系电话唯一性判断
+			mobilePhoneOnly(mobilePhone) {
+				if (!this.validateXG.isPhoneOrMobile(mobilePhone)) {
+					this.$message.error('”联系电话“填写不正确,请重新填写')
+					this.loading = false
+					this.inputForm.mobilePhone = ''
+					throw new Error('”联系电话“填写不正确,请重新填写')
+				}
+				enrollmentRegistrationService.findMobilePhoneOnly(mobilePhone).then((data) => {
+					if (data !== 0) {
+						this.$message.error('联系电话已存在,请重新确认')
+						this.inputForm.mobilePhone = ''
+						throw new Error('联系电话已存在,请重新确认')
+					}
+				})
+
+			},
+			getProcessName() {
+				this.commonApi.getTaskNameByProcInsId(this.inputForm.procInsId).then((data) => {
+					if (this.commonJS.isNotEmpty(data)) {
+						if (data === '信息审核') {
+							this.processName = true
+							this.processFlag = false
+						}
+
+					}
+				})
+			}
+		}
+	}
+</script>

+ 30 - 2
src/views/human/enrollment/registration/EnrollmentRegistrationEditForm.vue

@@ -269,10 +269,23 @@
 											</el-date-picker>
 										</el-form-item>
 									</el-col>
+									<el-col :span="12">
+										<el-form-item label="合同结束日期" prop="contractEndDate" :rules="[
+                  {required: true, message:'请填写合同结束日期', trigger: 'blur'}
+               ]">
+											<el-date-picker
+												style="width: 100%"
+												v-model="inputForm.contractEndDate"
+												value-format="YYYY-MM-DD"
+												placeholder="选择日期"
+											>
+											</el-date-picker>
+										</el-form-item>
+									</el-col>
 								</el-row>
 							</el-form>
 							<el-form v-else-if="inputForm.type !== '0'" style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
-									 :disabled="true"
+
 									 label-width="110px" @submit.native.prevent>
 								<el-row :gutter="26">
 									<el-col :span="12">
@@ -330,6 +343,19 @@
 											</el-date-picker>
 										</el-form-item>
 									</el-col>
+									<el-col :span="12">
+										<el-form-item label="合同结束日期" prop="contractEndDate" :rules="[
+                  {required: true, message:'请填写合同结束日期', trigger: 'blur'}
+               ]">
+											<el-date-picker
+												style="width: 100%"
+												v-model="inputForm.contractEndDate"
+												value-format="YYYY-MM-DD"
+												placeholder="选择日期"
+											>
+											</el-date-picker>
+										</el-form-item>
+									</el-col>
 								</el-row>
 							</el-form>
 						</el-row>
@@ -623,6 +649,7 @@
 					department: '',
 					entryDate: '',
 					contractStartDate: '',
+					contractEndDate: '',
 					remarks: '',
 					type: '',
 					onJobStatus: '',
@@ -762,6 +789,7 @@
 					department: '',
 					entryDate: '',
 					contractStartDate: '',
+					contractEndDate: '',
 					remarks: '',
 					type: '',
 					onJobStatus: '',
@@ -1037,7 +1065,7 @@
 			handleAvatarSuccess2 (res, file, fileList, index, val) {
 				console.log('foleList', fileList)
 				if (val === 'front') {
-					this.inputForm.socialSecurityPictureOpposite = res.url
+					this.inputForm.socialSecurityPictureOpposite = '/' + res.url
 					this.inputForm.socialSecurityPictureOppositeUrl = res.lsUrl
 				}
 				this.hideUploadEdit = true

+ 51 - 18
src/views/human/enrollment/registration/EnrollmentRegistrationList.vue

@@ -77,7 +77,8 @@
           <vxe-column min-width="160" align="center" title="毕业院校" field="graduatedFrom"></vxe-column>
 			<vxe-column min-width="100" title="状态" fixed="right" align="center" field="type">
 				<template #default="scope">
-					<el-button @click="detail(scope.row)" :type="$dictUtils.getDictLabel('human_status_info', scope.row.type, '')" effect="dark" >{{$dictUtils.getDictLabel("human_status", scope.row.type, '未开始')}} </el-button>
+					<el-button v-if="scope.row.processType === '1'" @click="detail(scope.row)" :type="$dictUtils.getDictLabel('status_info', scope.row.type, '')" effect="dark" >{{$dictUtils.getDictLabel("status", scope.row.type, '未开始')}} </el-button>
+					<el-button v-else @click="detail(scope.row)" :type="$dictUtils.getDictLabel('human_status_info', scope.row.type, '')" effect="dark" >{{$dictUtils.getDictLabel("human_status", scope.row.type, '未开始')}} </el-button>
 				</template>
 			</vxe-column>
 
@@ -135,6 +136,8 @@
         loading: false,
         processDefinitionAuditId: '',
         procDefAuditKey: '',
+		processDefinitionAuditId2: '',
+        procDefAuditKey2: '',
         isAdmin: false,
         create: '',
         haveProjectIds: ''
@@ -209,6 +212,12 @@
             this.procDefAuditKey = data.key
           }
         })
+		  processService.getByName('完善个人信息').then((data) => {
+			  if (!this.commonJS.isEmpty(data.id)) {
+				  this.processDefinitionAuditId2 = data.id
+				  this.procDefAuditKey2 = data.key
+			  }
+		  })
       },
       // 当前页
       currentChangeHandle ({ currentPage, pageSize }) {
@@ -255,24 +264,48 @@
 		// 查看员工入职流程结果
 		detail (row) {
 			if (row.reviewStatus !== '0' && row.reviewStatus !== '1') {
-				// eslint-disable-next-line eqeqeq
-				taskService.getTaskDef({
-					procInsId: row.procInsId,
-					procDefId: this.processDefinitionAuditId
-				}).then((data) => {
-					this.$router.push({
-						path: '/flowable/task/TaskFormDetail',
-						query: {
-							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
-							isShow: 'false',
-							readOnly: true,
-							title: '员工入职' + '流程详情',
-							formTitle: '员工入职' + '流程详情',
-							businessId: row.id,
-							status: 'reback'
-						}
+
+				if (this.commonJS.isNotEmpty(row.processType) && row.processType == '1') {
+					//信息完善流程
+					taskService.getTaskDef({
+						procInsId: row.procInsId,
+						procDefId: this.processDefinitionAuditId2
+					}).then((data) => {
+						this.$router.push({
+							path: '/flowable/task/TaskFormDetail',
+							query: {
+								...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+								isShow: 'false',
+								readOnly: true,
+								title: '个人信息完善' + '流程详情',
+								formTitle: '个人信息完善' + '流程详情',
+								businessId: row.id,
+								status: 'reback'
+							}
+						})
 					})
-				})
+				} else {
+					// eslint-disable-next-line eqeqeq
+					taskService.getTaskDef({
+						procInsId: row.procInsId,
+						procDefId: this.processDefinitionAuditId
+					}).then((data) => {
+						this.$router.push({
+							path: '/flowable/task/TaskFormDetail',
+							query: {
+								...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+								isShow: 'false',
+								readOnly: true,
+								title: '员工入职' + '流程详情',
+								formTitle: '员工入职' + '流程详情',
+								businessId: row.id,
+								status: 'reback'
+							}
+						})
+					})
+				}
+
+
 			}
 		},
       // 自定义服务端导出

+ 12 - 4
src/views/human/enrollment/registration/SocialSecurityInfoAddForm.vue

@@ -120,17 +120,23 @@
 			</el-row>
 			<el-row :gutter="26" v-else>
 				<el-col :span="12">
-					<el-form-item label="社保编号" prop="socialSecurityNumber" :rules="[]">
+					<el-form-item label="社保编号" prop="socialSecurityNumber" :rules="[
+						{required: true, message: '社保编号不能为空', trigger: 'blur'}
+					]">
 						<el-input v-model="inputForm.socialSecurityNumber" maxlength="10" @input="validateInput"></el-input>
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="社保银行卡号" prop="socialSecurityBankNumber" :rules="[]">
+					<el-form-item label="社保银行卡号" prop="socialSecurityBankNumber" :rules="[
+						{required: true, message: '社保银行卡号不能为空', trigger: 'blur'}
+					]">
 						<el-input v-model="inputForm.socialSecurityBankNumber" @change="checkBankNumber(inputForm.socialSecurityBankNumber)" maxlength="19"></el-input>
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="社保卡照片正面" prop="socialSecurityPictureFront" :rules="[]">
+					<el-form-item label="社保卡照片正面" prop="socialSecurityPictureFront" :rules="[
+						{required: true, message: '社保卡照片正面不能为空', trigger: 'blur'}
+					]">
 						<el-upload :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
 								   :limit="limitNum"
 								   :disabled="hideUploadEdit"
@@ -176,7 +182,9 @@
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="社保卡照片反面" prop="socialSecurityPictureOpposite" :rules="[]">
+					<el-form-item label="社保卡照片反面" prop="socialSecurityPictureOpposite" :rules="[
+						{required: true, message: '社保卡照片反面不能为空', trigger: 'blur'}
+					]">
 						<el-upload :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
 								   :limit="limitNum"
 								   :disabled="hideUploadEdit2"

+ 14 - 4
src/views/human/enrollment/registration/WageCardInfoAddForm.vue

@@ -16,7 +16,9 @@
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="银行卡正面" prop="accountHolderFront" :rules="[]">
+					<el-form-item label="银行卡正面" prop="accountHolderFront" :rules="[
+						{required: true, message: '银行卡正面不能为空', trigger: 'blur'}
+					]">
 						<!--<el-upload
 							class="avatar-uploader"
 							:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
@@ -70,7 +72,9 @@
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="银行卡反面" prop="accountHolderOpposite" :rules="[]">
+					<el-form-item label="银行卡反面" prop="accountHolderOpposite" :rules="[
+						{required: true, message: '银行卡反面不能为空', trigger: 'blur'}
+					]">
 						<!--<el-upload
 							class="avatar-uploader"
 							:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
@@ -137,7 +141,9 @@
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="银行卡正面" prop="gsAccountHolderFront" :rules="[]">
+					<el-form-item label="银行卡正面" prop="gsAccountHolderFront" :rules="[
+						{required: true, message: '银行卡正面不能为空', trigger: 'blur'}
+					]">
 						<!--<el-upload
 							class="avatar-uploader"
 							:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
@@ -191,7 +197,9 @@
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="银行卡反面" prop="gsAccountHolderOpposite" :rules="[]">
+					<el-form-item label="银行卡反面" prop="gsAccountHolderOpposite" :rules="[
+						{required: true, message: '银行卡反面不能为空', trigger: 'blur'}
+					]">
 						<!--<el-upload
 							class="avatar-uploader"
 							:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
@@ -586,6 +594,8 @@
 				this.$refs.inputForm.resetFields()
 				this.fileList = []
 				this.fileList2 = []
+				this.gsFileList = []
+				this.gsFileList2 = []
 				this.visible = false
 			},
 			reapplyForm (callback) {

+ 11 - 0
src/views/human/practice/register/RegistrationEditForm.vue

@@ -144,6 +144,15 @@
 											</el-date-picker>
 										</el-form-item>
 									</el-col>
+									<el-col :span="12">
+										<el-form-item label="实习状态" prop="practiceStatus"
+													  :rules="[
+                 ]">
+											<el-radio-group v-model="inputForm.practiceStatus">
+												<el-radio v-for="item in $dictUtils.getDictList('practice_type')" :label="item.value" :key="item.value">{{item.label}}</el-radio>
+											</el-radio-group>
+										</el-form-item>
+									</el-col>
 								</el-row>
 							</el-form>
 						</el-row>
@@ -306,6 +315,7 @@
 					practiceUnitName: '',
 					qqNum: '',
 					sex: '',
+					practiceStatus: '',
 					politicalOutlook: '',
 					nativePlace: '',
 					nation: '',
@@ -381,6 +391,7 @@
 					practiceUnitName: '',
 					qqNum: '',
 					sex: '',
+					practiceStatus: '',
 					politicalOutlook: '',
 					nativePlace: '',
 					nation: '',

+ 39 - 2
src/views/human/practice/reimburseRegister/ReimburseRegisterChoose.vue

@@ -43,7 +43,7 @@
 							:sort-config="{remote:true}"
 							:data="dataList">
 							<vxe-column type="seq" width="60" title="序号"></vxe-column>
-							<vxe-column type="radio" width="60px"></vxe-column>
+							<vxe-column type="checkbox" width="60px"></vxe-column>
 							<vxe-column min-width="160" align="center" title="报销登记名称" field="reimbuserName"></vxe-column>
 							<vxe-column min-width="160" align="center" title="项目经理" field="projectManagerName"></vxe-column>
 							<vxe-column min-width="160" align="center" title="创建人" field="createName"></vxe-column>
@@ -77,7 +77,7 @@
 			<template #footer>
 			<span class="dialog-footer">
 			  <el-button  @click="close()">关闭</el-button>
-			  <el-button  type="primary" v-if="method != 'view'" @click="getProgram()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+			  <el-button  type="primary" v-if="method != 'view'" @click="getProgram()" icon="el-icon-circle-check" v-noMoreClick>确定({{allNum}})</el-button>
 			</span>
 			</template>
 		</el-dialog>
@@ -106,6 +106,7 @@
 					type: ''
 				},
 				detail: '',
+				allNum: '',
 				dataListAllSelections: [],
 				rowId: 'id',
 			}
@@ -228,6 +229,15 @@
 						this.dataListAllSelections.push(thisPageDate[i])
 					}
 				}
+
+				let rows = this.dataListAllSelections
+				let totalNum = 0; // 初始化总报销金额为0
+				for (let i = 0; i < rows.length; i++) {
+					let row = rows[i];
+					let reimbursementAmount = parseFloat(row.allReimbursementAmount); // 获取当前行的总报销金额
+					totalNum += reimbursementAmount; // 累加到总报销金额
+				}
+				this.allNum = totalNum
 			},
 			// 当前页“选中/取消选中”数据时,“新增/删除”右侧tag标签
 			selectionChangeHandle (event) {
@@ -241,6 +251,16 @@
 					if (this.commonJS.isNotEmpty(delIndex) && delIndex === -1) {
 						this.dataListAllSelections.push(event.row)
 					}
+
+					let rows = this.dataListAllSelections
+					let totalNum = 0; // 初始化总报销金额为0
+					for (let i = 0; i < rows.length; i++) {
+						let row = rows[i];
+						let reimbursementAmount = parseFloat(row.allReimbursementAmount); // 获取当前行的总报销金额
+						totalNum += reimbursementAmount; // 累加到总报销金额
+					}
+					this.allNum = totalNum
+
 				} else { // 取消选中触发
 					let delIndex = -1
 					for (let i = 0; i < this.dataListAllSelections.length; i++) {
@@ -251,6 +271,15 @@
 					if (this.commonJS.isNotEmpty(delIndex) && delIndex !== -1) {
 						this.dataListAllSelections.splice(delIndex, 1)
 					}
+
+					let rows = this.dataListAllSelections
+					let totalNum = 0; // 初始化总报销金额为0
+					for (let i = 0; i < rows.length; i++) {
+						let row = rows[i];
+						let reimbursementAmount = parseFloat(row.allReimbursementAmount); // 获取当前行的总报销金额
+						totalNum += reimbursementAmount; // 累加到总报销金额
+					}
+					this.allNum = totalNum
 				}
 			},
 			// 删除tag标签时,取消勾选当前页对应的数据
@@ -265,6 +294,14 @@
 						}
 					}
 				}
+				let rows2 = this.dataListAllSelections
+				let totalNum = 0; // 初始化总报销金额为0
+				for (let i = 0; i < rows2.length; i++) {
+					let row = rows2[i];
+					let reimbursementAmount = parseFloat(row.allReimbursementAmount); // 获取当前行的总报销金额
+					totalNum += reimbursementAmount; // 累加到总报销金额
+				}
+				this.allNum = totalNum
 			}
 		}
 	}