Browse Source

入离职与报销调整

wangqiang 1 year ago
parent
commit
fb1e593a4c
31 changed files with 1641 additions and 139 deletions
  1. 26 0
      src/api/human/register/RegisterBankService.js
  2. 8 1
      src/api/human/register/RegisterService.js
  3. 7 0
      src/api/human/register/ReimburseRegisterService.js
  4. 1 0
      src/api/sys/OSSService.js
  5. 2 2
      src/api/sys/areaService.js
  6. 141 0
      src/views/cw/reimbursementApproval/info/InfoUpdateForm.vue
  7. 143 0
      src/views/cw/reimbursementApproval/info/ReimbursementForm.vue
  8. 5 2
      src/views/flowable/task/TaskForm.vue
  9. 7 1
      src/views/human/depart/handover/ComputerArrearsAddForm.vue
  10. 7 1
      src/views/human/depart/handover/HandoverAccountsAddForm.vue
  11. 7 1
      src/views/human/depart/handover/HandoverImprestAddForm.vue
  12. 7 1
      src/views/human/depart/handover/HandoverSocialSecurityAddForm.vue
  13. 14 10
      src/views/human/depart/registration/DepartRegistrationAddForm.vue
  14. 10 10
      src/views/human/depart/registration/DepartRegistrationEditForm.vue
  15. 26 3
      src/views/human/depart/registration/DepartRegistrationList.vue
  16. 250 18
      src/views/human/enrollment/registration/EnrollmentRegistrationAddForm.vue
  17. 5 1
      src/views/human/enrollment/registration/EnrollmentRegistrationList.vue
  18. 32 15
      src/views/human/practice/logwrite/LocationPullForm.vue
  19. 110 8
      src/views/human/practice/logwrite/LogWriteAddForm.vue
  20. 104 7
      src/views/human/practice/logwrite/LogWriteEditForm.vue
  21. 32 4
      src/views/human/practice/logwrite/LogWriteList.vue
  22. 36 5
      src/views/human/practice/register/RegistrationAddForm.vue
  23. 286 0
      src/views/human/practice/register/RegistrationBankAddForm.vue
  24. 74 14
      src/views/human/practice/register/RegistrationEditForm.vue
  25. 44 9
      src/views/human/practice/register/RegistrationList.vue
  26. 1 0
      src/views/human/practice/reimburseRegister/ProgramPageForm.vue
  27. 15 3
      src/views/human/practice/reimburseRegister/ReimburseRegisterAddForm.vue
  28. 3 3
      src/views/human/practice/reimburseRegister/ReimburseRegisterChoose.vue
  29. 32 16
      src/views/human/practice/reimburseRegister/ReimburseRegisterEditForm.vue
  30. 57 4
      src/views/human/practice/reimburseRegister/ReimburseRegisterList.vue
  31. 149 0
      src/views/human/practice/reimburseRegister/ReimburseRegisterRadioChoose.vue

+ 26 - 0
src/api/human/register/RegisterBankService.js

@@ -0,0 +1,26 @@
+import request from "@/utils/httpRequest";
+import { REGISTER_PATH as prefix } from "../../AppPath";
+
+export default {
+	save (inputForm) {
+		return request({
+			url: prefix +  `/registerBank/save`,
+			method: 'post',
+			data: inputForm
+		})
+	},
+	findById (id) {
+		return request({
+			url: prefix + '/registerBank/findById',
+			method: 'get',
+			params: {id: id}
+		})
+	},
+	updateStatusById (param) {
+		return request({
+			url: prefix + '/registerBank/updateStatusById',
+			method: 'post',
+			data: param
+		})
+	},
+}

+ 8 - 1
src/api/human/register/RegisterService.js

@@ -43,5 +43,12 @@ export default {
 			method: 'get',
 			params: {id: id}
 		})
-	}
+	},
+	findIdCardOnly (idCard) {
+		return request({
+			url: prefix + '/register/findIdCardOnly',
+			method: 'get',
+			params: {idCard: idCard}
+		})
+	},
 }

+ 7 - 0
src/api/human/register/ReimburseRegisterService.js

@@ -9,6 +9,13 @@ export default {
 			params: params
 		})
 	},
+	list2: function (params) {
+		return request({
+			url: prefix + '/reimburseRegister/list2',
+			method: 'get',
+			params: params
+		})
+	},
 	save (inputForm) {
 		return request({
 			url: prefix +  `/reimburseRegister/save`,

+ 1 - 0
src/api/sys/OSSService.js

@@ -245,6 +245,7 @@ export async function toHref (row) {
   const link = document.createElement('a')
   await getTemporaryByUrl(row.url).then((data) => {
     const url = data // 完整的url则直接使用
+	  console.log('导出uel0', url)
     // 这里是将url转成blob地址,
     fetch(url).then(res => res.blob()).then(blob => { // 将链接地址字符内容转变成blob地址
       link.href = URL.createObjectURL(blob)

+ 2 - 2
src/api/sys/areaService.js

@@ -42,11 +42,11 @@ export default {
 		});
 	},
 
-	getAllArea: function (extId) {
+	getAllArea: function (name) {
 		return request({
 			url: prefix + "/sys/area/getAllArea",
 			method: "get",
-			params: { extId: extId },
+			params: { name: name },
 		});
 	},
 };

+ 141 - 0
src/views/cw/reimbursementApproval/info/InfoUpdateForm.vue

@@ -497,6 +497,73 @@
 		  </el-col>
         </el-row>
       </div>
+		<div v-if="inputForm.sourceType === '6'">
+			<el-divider content-position="left"><i class="el-icon-document"></i>
+				实习报销详情
+				<el-button size="default" style="margin-left: 20px" type="primary" :disabled="method==='view' || status === 'audit' || status === 'taskFormDetail' || this.formReadOnly" @click="insertEvent('human')" plain>
+					新增
+				</el-button>
+			</el-divider>
+			<el-row  :gutter="15" >
+				<el-col :span="24">
+					<vxe-table
+						border
+						show-footer
+						show-overflow
+						:footer-method="footerMethod"
+						ref="humanTableProcured"
+						class="vxe-table-element"
+						:data="inputForm.humanInfoProcured"
+						style="margin-left: 5em"
+						:key="humanKeyProcured"
+						highlight-current-row
+						:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+						:edit-rules="validRules"
+					>
+						<vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+							<template v-slot:edit="scope">
+								<el-input v-model="scope.row.userName" @focus="userPullListForm6(scope.$rowIndex)"></el-input>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
+							<template v-slot:edit="scope">
+								<el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+							<template #edit="scope">
+								<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'}]">
+							<template v-slot:edit="scope">
+								<el-input v-model="scope.row.reimbuserName" @focus="openProgramPageForm6(scope.$rowIndex, scope.row)"></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>
+							</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>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column title="操作" width="100">
+							<template v-slot="scope">
+								<el-button size="default" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'procured')">删除</el-button>
+							</template>
+						</vxe-table-column>
+					</vxe-table>
+				</el-col>
+			</el-row>
+		</div>
       <el-divider content-position="left"><i class="el-icon-document"></i>
         专用发票信息
         <el-button style="margin-left: 20px" type="primary" :disabled="method==='view' " @click="insertEvent('amount')" plain>
@@ -556,17 +623,20 @@
       <CwProgramPageForm ref="cwProgramPageForm3" @getProgram="getProgram3"></CwProgramPageForm>
       <CwProgramPageForm ref="cwProgramPageForm4" @getProgram="getProgram4"></CwProgramPageForm>
       <CwProgramPageForm ref="cwProgramPageForm5" @getProgram="getProgram5"></CwProgramPageForm>
+		<ReimburseRegisterRadioChoose ref="cwProgramPageForm6" @getProgram="getProgram6"></ReimburseRegisterRadioChoose>
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm" @getProgramForType="getProgramForType"></CwReimbursementTypePullForm>
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm2" @getProgramForType="getProgramForType2"></CwReimbursementTypePullForm>
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm3" @getProgramForType="getProgramForType3"></CwReimbursementTypePullForm>
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm4" @getProgramForType="getProgramForType4"></CwReimbursementTypePullForm>
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm5" @getProgramForType="getProgramForType5"></CwReimbursementTypePullForm>
+		<CwReimbursementTypePullForm ref="cwReimbursementTypePullForm6" @getProgramForType="getProgramForType6"></CwReimbursementTypePullForm>
 
       <UserPullForm ref="userPullForm" @getProgramForUser="getProgramForUser"></UserPullForm>
       <UserPullForm ref="userPullForm2" @getProgramForUser="getProgramForUser2"></UserPullForm>
       <UserPullForm ref="userPullForm3" @getProgramForUser="getProgramForUser3"></UserPullForm>
       <UserPullForm ref="userPullForm4" @getProgramForUser="getProgramForUser4"></UserPullForm>
       <UserPullForm ref="userPullForm5" @getProgramForUser="getProgramForUser5"></UserPullForm>
+		<UserPullForm ref="userPullForm6" @getProgramForUser="getProgramForUser6"></UserPullForm>
 
     </el-form>
     <WorkContractChooseCom ref="workContractChooseCom" @getContract="getContract"></WorkContractChooseCom>
@@ -585,6 +655,7 @@
 </template>
 
 <script>
+	import ReimburseRegisterRadioChoose from '@/views/human/practice/reimburseRegister/ReimburseRegisterRadioChoose'
   import ReportNoChooseRadio from './ReportNoChooseRadio'
   import ReimbursementApprovalService from '@/api/cw/reimbursementApproval/ReimbursementApprovalService'
   import ReimbursementApprovalTypeService from '@/api/cw/reimbursementApproval/ReimbursementApprovalTypeService'
@@ -648,6 +719,7 @@
         detailKeyReport: '',
         detailKeyOthers: '',
         detailKeyProcured: '',
+		  humanKeyProcured: '',
         inputForm: {
           userId: '',
           userName: '',
@@ -660,6 +732,7 @@
           detailInfoReports: [],
           detailInfoOthers: [],
           detailInfoProcured: [],
+			humanInfoProcured: [],
           amountInfos: [],
           files: [], // 附件信息
           procInsId: '',
@@ -686,6 +759,7 @@
     },
     components: {
       UpLoadComponent,
+		ReimburseRegisterRadioChoose,
       CwProgramPageForm,
       CwReimbursementTypePullForm,
       UserPullForm,
@@ -754,6 +828,7 @@
           detailInfoReports: [],
           detailInfoOthers: [],
           detailInfoProcured: [],
+			humanInfoProcured: [],
           amountInfos: [],
           files: [], // 附件信息
           procInsId: '',
@@ -964,6 +1039,20 @@
           this.inputForm.detailInfoProcured.push(d)
           this.detailKeyProcured = Math.random()
         }
+		  if (type === 'human') {
+			  let d = {
+				  userName: this.$store.state.user.name,
+				  deptName: this.$store.state.user.office.name,
+				  userId: this.$store.state.user.id,
+				  deptId: this.$store.state.user.office.id
+			  }
+			  if (this.commonJS.isEmpty(this.inputForm.humanInfoProcured)) {
+				  this.inputForm.humanInfoProcured = []
+			  }
+			  this.$refs.humanTableProcured.insertAt(d)
+			  this.inputForm.humanInfoProcured.push(d)
+			  this.humanKeyProcured = Math.random()
+		  }
       },
       // 暂存
       async saveForm (callback) {
@@ -1261,6 +1350,10 @@
         this.indexRow = rowIndex
         this.$refs.cwProgramPageForm5.init('2', false)
       },
+		openProgramPageForm6 (rowIndex, row) {
+			this.indexRow = rowIndex
+			this.$refs.cwProgramPageForm6.init()
+		},
       openContractForm (rowIndex, row) {
         this.$refs.workContractChooseCom.init(rowIndex)
       },
@@ -1292,6 +1385,15 @@
         this.indexRow = ''
         this.$forceUpdate()
       },
+		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.indexRow = ''
+			this.$forceUpdate()
+		},
       // 报销类型下拉弹窗
       typePullForm (rowIndex, deptName) {
         this.indexRow = rowIndex
@@ -1313,6 +1415,11 @@
         this.indexRow = rowIndex
         this.$refs.cwReimbursementTypePullForm5.init('2', deptName)
       },
+		typePullForm6 (rowIndex, deptName) {
+			this.indexRow = rowIndex
+			// this.$refs.reimbursementTypePullForm.init()
+			this.$refs.cwReimbursementTypePullForm6.init('2', deptName)
+		},
       // 报销内容详情
       getProgramForType (rows) {
         this.inputForm.detailInfos[this.indexRow].typeId = rows.id
@@ -1344,6 +1451,12 @@
         this.indexRow = ''
         this.$forceUpdate()
       },
+		getProgramForType6 (rows) {
+			this.inputForm.humanInfoProcured[this.indexRow].typeId = rows.id
+			this.inputForm.humanInfoProcured[this.indexRow].typeName = rows.name
+			this.indexRow = ''
+			this.$forceUpdate()
+		},
       // 报销人下拉弹窗
       userPullListForm (rowIndex) {
         this.indexRow = rowIndex
@@ -1365,6 +1478,10 @@
         this.indexRow = rowIndex
         this.$refs.userPullForm5.init()
       },
+		userPullListForm6 (rowIndex) {
+			this.indexRow = rowIndex
+			this.$refs.userPullForm6.init()
+		},
       getProgramForUser (rows) {
         this.inputForm.detailInfos[this.indexRow].userId = rows[0].id
         this.inputForm.detailInfos[this.indexRow].userName = rows[0].name
@@ -1405,6 +1522,14 @@
         this.indexRow = ''
         this.$forceUpdate()
       },
+		getProgramForUser6 (rows) {
+			this.inputForm.humanInfoProcured[this.indexRow].userId = rows[0].id
+			this.inputForm.humanInfoProcured[this.indexRow].userName = rows[0].name
+			this.inputForm.humanInfoProcured[this.indexRow].deptId = rows[0].parentId
+			this.inputForm.humanInfoProcured[this.indexRow].deptName = rows[0].officeName
+			this.indexRow = ''
+			this.$forceUpdate()
+		},
       getWorkClientChoose2 (list) {
         this.inputForm.detailInfoReports[this.indexRow].reportNumber = list.reportNo
         this.indexRow = ''
@@ -1621,6 +1746,22 @@
         this.inputForm.purchaseId = row.id
         this.startPur(row.id)
       },
+		footerMethod666 ({ columns, data }) {
+			const footerData = [
+				columns.map((column, columnIndex) => {
+					if (columnIndex === 0) {
+						return '商品总价'
+					}
+					if (['priceSum'].includes(column.property)) {
+						// eslint-disable-next-line no-undef
+						this.inputForm.tradeTotalPrice = XEUtils.sum(data, column.property)
+						return XEUtils.sum(data, column.property)
+					}
+					return null
+				})
+			]
+			return footerData
+		},
       footerMethod555 ({ columns, data }) {
         const footerData = [
           columns.map((column, columnIndex) => {

+ 143 - 0
src/views/cw/reimbursementApproval/info/ReimbursementForm.vue

@@ -536,6 +536,73 @@
 		  </el-col>
         </el-row>
       </div>
+		<div v-if="inputForm.sourceType === '6'">
+			<el-divider content-position="left"><i class="el-icon-document"></i>
+				实习报销详情
+				<el-button size="default" style="margin-left: 20px" type="primary" :disabled="method==='view' || status === 'audit' || status === 'taskFormDetail' || this.formReadOnly" @click="insertEvent('human')" plain>
+					新增
+				</el-button>
+			</el-divider>
+			<el-row  :gutter="15" >
+				<el-col :span="24">
+					<vxe-table
+						border
+						show-footer
+						show-overflow
+						:footer-method="footerMethod"
+						ref="humanTableProcured"
+						class="vxe-table-element"
+						:data="inputForm.humanInfoProcured"
+						style="margin-left: 5em"
+						:key="humanKeyProcured"
+						highlight-current-row
+						:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+						:edit-rules="validRules"
+					>
+						<vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销人', trigger:'blur'}]">
+							<template v-slot:edit="scope">
+								<el-input v-model="scope.row.userName" @focus="userPullListForm6(scope.$rowIndex)"></el-input>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column field="deptName" title="报销部门" :edit-render="{}" show-overflow="title">
+							<template v-slot:edit="scope">
+								<el-input :disabled='true' v-model="scope.row.deptName" ></el-input>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column field="typeName" title="报销类别" :edit-render="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+							<template #edit="scope">
+								<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'}]">
+							<template v-slot:edit="scope">
+								<el-input v-model="scope.row.reimbuserName" @focus="openProgramPageForm6(scope.$rowIndex, scope.row)"></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>
+							</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>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column title="操作" width="100">
+							<template v-slot="scope">
+								<el-button size="default" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'procured')">删除</el-button>
+							</template>
+						</vxe-table-column>
+					</vxe-table>
+				</el-col>
+			</el-row>
+		</div>
 
 		<div v-if="inputForm.reimbursementType === '0'">
 			  <el-divider content-position="left"><i class="el-icon-document"></i>
@@ -683,18 +750,21 @@
       <CwProgramPageForm ref="cwProgramPageForm3" @getProgram="getProgram3"></CwProgramPageForm>
       <CwProgramPageForm ref="cwProgramPageForm4" @getProgram="getProgram4"></CwProgramPageForm>
       <CwProgramPageForm ref="cwProgramPageForm5" @getProgram="getProgram5"></CwProgramPageForm>
+      <ReimburseRegisterRadioChoose ref="cwProgramPageForm6" @getProgram="getProgram6"></ReimburseRegisterRadioChoose>
 <!--      <ReimbursementTypePullForm ref="reimbursementTypePullForm" @getProgramForType="getProgramForType"></ReimbursementTypePullForm>-->
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm" @getProgramForType="getProgramForType"></CwReimbursementTypePullForm>
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm2" @getProgramForType="getProgramForType2"></CwReimbursementTypePullForm>
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm3" @getProgramForType="getProgramForType3"></CwReimbursementTypePullForm>
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm4" @getProgramForType="getProgramForType4"></CwReimbursementTypePullForm>
       <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm5" @getProgramForType="getProgramForType5"></CwReimbursementTypePullForm>
+      <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm6" @getProgramForType="getProgramForType6"></CwReimbursementTypePullForm>
 
       <UserPullForm ref="userPullForm" @getProgramForUser="getProgramForUser"></UserPullForm>
       <UserPullForm ref="userPullForm2" @getProgramForUser="getProgramForUser2"></UserPullForm>
       <UserPullForm ref="userPullForm3" @getProgramForUser="getProgramForUser3"></UserPullForm>
       <UserPullForm ref="userPullForm4" @getProgramForUser="getProgramForUser4"></UserPullForm>
       <UserPullForm ref="userPullForm5" @getProgramForUser="getProgramForUser5"></UserPullForm>
+      <UserPullForm ref="userPullForm6" @getProgramForUser="getProgramForUser6"></UserPullForm>
 
     </el-form>
 	  <!-- 附件 -->
@@ -719,6 +789,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 ReimbursementTypePullForm from '@/views/modules/finance/invoice/ReimbursementTypePullForm'
   import CwReimbursementTypePullForm from './CwReimbursementTypePullForm'
   import UserPullForm from '@/views/finance/invoice/UserPullForm'
@@ -816,6 +887,7 @@
         detailKeyReport: '',
         detailKeyOthers: '',
         detailKeyProcured: '',
+        humanKeyProcured: '',
         inputForm: {
 			reimbursementType: '0',
           userId: '',
@@ -829,6 +901,7 @@
           detailInfoReports: [],
           detailInfoOthers: [],
           detailInfoProcured: [],
+          humanInfoProcured: [],
           amountInfos: [],
 			invoiceReimbursements: [],
 			invoiceReimbursementFiles: [], // 电子发票附件信息
@@ -876,6 +949,7 @@
 		UpLoadComponent,
       // ProgramPageForm,
       CwProgramPageForm,
+		ReimburseRegisterRadioChoose,
       // ReimbursementTypePullForm,
       CwReimbursementTypePullForm,
       UserPullForm,
@@ -947,6 +1021,7 @@
           detailInfoReports: [],
           detailInfoOthers: [],
           detailInfoProcured: [],
+			humanInfoProcured: [],
           amountInfos: [],
 			invoiceReimbursements: [],
 			invoiceReimbursementFiles: [], // 电子发票附件信息
@@ -1269,6 +1344,20 @@
           this.inputForm.detailInfoProcured.push(d)
           this.detailKeyProcured = Math.random()
         }
+		  if (type === 'human') {
+			  let d = {
+				  userName: this.$store.state.user.name,
+				  deptName: this.$store.state.user.office.name,
+				  userId: this.$store.state.user.id,
+				  deptId: this.$store.state.user.office.id
+			  }
+			  if (this.commonJS.isEmpty(this.inputForm.humanInfoProcured)) {
+				  this.inputForm.humanInfoProcured = []
+			  }
+			  this.$refs.humanTableProcured.insertAt(d)
+			  this.inputForm.humanInfoProcured.push(d)
+			  this.humanKeyProcured = Math.random()
+		  }
       },
 		insertInvoiceReimbursementEvent (type,value) {
 			if (type === 'invoiceReimbursement') {
@@ -1704,6 +1793,10 @@
         this.indexRow = rowIndex
         this.$refs.cwProgramPageForm5.init('2', false)
       },
+		openProgramPageForm6 (rowIndex, row) {
+			this.indexRow = rowIndex
+			this.$refs.cwProgramPageForm6.init()
+		},
       openContractForm (rowIndex, row) {
         this.$refs.workContractChooseCom.init(rowIndex)
       },
@@ -1737,6 +1830,15 @@
         this.indexRow = ''
         this.$forceUpdate()
       },
+		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.indexRow = ''
+			this.$forceUpdate()
+		},
       // 报销类型下拉弹窗
       typePullForm (rowIndex, deptName) {
         this.indexRow = rowIndex
@@ -1763,6 +1865,11 @@
         // this.$refs.reimbursementTypePullForm.init()
         this.$refs.cwReimbursementTypePullForm5.init('2', deptName)
       },
+		typePullForm6 (rowIndex, deptName) {
+			this.indexRow = rowIndex
+			// this.$refs.reimbursementTypePullForm.init()
+			this.$refs.cwReimbursementTypePullForm6.init('2', deptName)
+		},
       // 报销内容详情
       getProgramForType (rows) {
         this.inputForm.detailInfos[this.indexRow].typeId = rows.id
@@ -1794,6 +1901,12 @@
         this.indexRow = ''
         this.$forceUpdate()
       },
+		getProgramForType6 (rows) {
+			this.inputForm.humanInfoProcured[this.indexRow].typeId = rows.id
+			this.inputForm.humanInfoProcured[this.indexRow].typeName = rows.name
+			this.indexRow = ''
+			this.$forceUpdate()
+		},
       // 报销人下拉弹窗
       userPullListForm (rowIndex) {
         this.indexRow = rowIndex
@@ -1815,6 +1928,10 @@
         this.indexRow = rowIndex
         this.$refs.userPullForm5.init()
       },
+		userPullListForm6 (rowIndex) {
+			this.indexRow = rowIndex
+			this.$refs.userPullForm6.init()
+		},
       getProgramForUser (rows) {
         this.inputForm.detailInfos[this.indexRow].userId = rows[0].id
         this.inputForm.detailInfos[this.indexRow].userName = rows[0].name
@@ -1855,6 +1972,14 @@
         this.indexRow = ''
         this.$forceUpdate()
       },
+		getProgramForUser6 (rows) {
+			this.inputForm.humanInfoProcured[this.indexRow].userId = rows[0].id
+			this.inputForm.humanInfoProcured[this.indexRow].userName = rows[0].name
+			this.inputForm.humanInfoProcured[this.indexRow].deptId = rows[0].parentId
+			this.inputForm.humanInfoProcured[this.indexRow].deptName = rows[0].officeName
+			this.indexRow = ''
+			this.$forceUpdate()
+		},
       getWorkClientChoose2 (list) {
         this.inputForm.detailInfoReports[this.indexRow].reportNumber = list.reportNo
         this.indexRow = ''
@@ -2081,6 +2206,24 @@
         this.inputForm.purchaseId = row.id
         this.startPur(row.id)
       },
+		footerMethod666 ({ columns, data }) {
+			const footerData = [
+				columns.map((column, columnIndex) => {
+					if (columnIndex === 0) {
+						return '商品总价'
+					}
+					if (['priceSum'].includes(column.property)) {
+						// eslint-disable-next-line no-undef
+						this.inputForm.tradeTotalPrice = XEUtils.sum(data, column.property)
+						return XEUtils.sum(data, column.property)
+					}
+					return null
+				})
+			]
+			return footerData
+		},
+
+
       footerMethod555 ({ columns, data }) {
         const footerData = [
           columns.map((column, columnIndex) => {

+ 5 - 2
src/views/flowable/task/TaskForm.vue

@@ -707,6 +707,7 @@ export default {
 		// Process_1699256313120 应收账款检查
 		// Process_1699321267272 社保账款检查
 		// Process_1699926014064 备用金检查
+		// Process_1698129477831 离职申请
 
 		// 驳回
 		reject(vars) {
@@ -761,7 +762,8 @@ export default {
 				this.procDefId.includes('Process_1698387196829') ||
 				this.procDefId.includes('Process_1699256313120') ||
 				this.procDefId.includes('Process_1699321267272') ||
-				this.procDefId.includes('Process_1699926014064')
+				this.procDefId.includes('Process_1699926014064') ||
+				this.procDefId.includes('Process_1698129477831')
 			) {
 				console.log('进入新版驳回')
 				this.$confirm(`确定驳回流程吗?`, '提示', {
@@ -906,7 +908,8 @@ export default {
 				this.procDefId.includes('Process_1698387196829') ||
 				this.procDefId.includes('Process_1699256313120') ||
 				this.procDefId.includes('Process_1699321267272') ||
-				this.procDefId.includes('Process_1699926014064')
+				this.procDefId.includes('Process_1699926014064') ||
+				this.procDefId.includes('Process_1698129477831')
 			) {
 				if (this.formType === '2') {
 					vars = {...vars, agree: false}

+ 7 - 1
src/views/human/depart/handover/ComputerArrearsAddForm.vue

@@ -2,7 +2,7 @@
 	<div>
 		<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
 				 label-width="100px" @submit.native.prevent>
-
+			<span v-if="showFlag" style="color: red">若对欠款金额无疑问,请在点击确认后,到财务侯媛媛处结清欠款!(仅可用现金)</span>
 			<el-divider content-position="left"><i class="el-icon-document"></i> 基本信息</el-divider>
 			<el-row :gutter="26">
 				<el-col :span="12">
@@ -67,6 +67,7 @@
 		data () {
 			return {
 				disabledTest: false,
+				showFlag: false,
 				title: '',
 				method: '',
 				visible: false,
@@ -323,6 +324,11 @@
 								this.disabledTest = false
 							}
 						}
+					if (data === '欠款确认') {
+						this.showFlag = true;
+					} else {
+						this.showFlag = false;
+					}
 					} else {
 						this.disabledTest = true
 					}

+ 7 - 1
src/views/human/depart/handover/HandoverAccountsAddForm.vue

@@ -2,7 +2,7 @@
 	<div>
 		<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
 				 label-width="100px" @submit.native.prevent>
-
+			<span v-if="showFlag" style="color: red">若对欠款金额无疑问,请在点击确认后,到财务侯媛媛处结清欠款!(仅可用现金)</span>
 			<el-divider content-position="left"><i class="el-icon-document"></i> 基本信息</el-divider>
 			<el-row :gutter="26">
 				<el-col :span="12">
@@ -67,6 +67,7 @@
 		data () {
 			return {
 				disabledTest: false,
+				showFlag: false,
 				title: '',
 				method: '',
 				visible: false,
@@ -329,6 +330,11 @@
 								this.disabledTest = false
 							}
 						}
+						if (data === '欠款确认') {
+							this.showFlag = true;
+						} else {
+							this.showFlag = false;
+						}
 					} else {
 						this.disabledTest = true
 					}

+ 7 - 1
src/views/human/depart/handover/HandoverImprestAddForm.vue

@@ -2,7 +2,7 @@
 	<div>
 		<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
 				 label-width="100px" @submit.native.prevent>
-
+			<span v-if="showFlag" style="color: red">若对欠款金额无疑问,请在点击确认后,到财务侯媛媛处结清欠款!(仅可用现金)</span>
 			<el-divider content-position="left"><i class="el-icon-document"></i> 基本信息</el-divider>
 			<el-row :gutter="26">
 				<el-col :span="12">
@@ -67,6 +67,7 @@
 		data () {
 			return {
 				disabledTest: false,
+				showFlag: false,
 				title: '',
 				method: '',
 				visible: false,
@@ -323,6 +324,11 @@
 								this.disabledTest = false
 							}
 						}
+						if (data === '欠款确认') {
+							this.showFlag = true;
+						} else {
+							this.showFlag = false;
+						}
 					} else {
 						this.disabledTest = true
 					}

+ 7 - 1
src/views/human/depart/handover/HandoverSocialSecurityAddForm.vue

@@ -2,7 +2,7 @@
 	<div>
 		<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
 				 label-width="100px" @submit.native.prevent>
-
+			<span v-if="showFlag" style="color: red">若对欠款金额无疑问,请在点击确认后,到财务侯媛媛处结清欠款!(仅可用现金)</span>
 			<el-divider content-position="left"><i class="el-icon-document"></i> 基本信息</el-divider>
 			<el-row :gutter="26">
 				<el-col :span="12">
@@ -67,6 +67,7 @@
 		data () {
 			return {
 				disabledTest: false,
+				showFlag: false,
 				title: '',
 				method: '',
 				visible: false,
@@ -324,6 +325,11 @@
 								this.disabledTest = false
 							}
 						}
+						if (data === '欠款确认') {
+							this.showFlag = true;
+						} else {
+							this.showFlag = false;
+						}
 					} else {
 						this.disabledTest = true
 					}

+ 14 - 10
src/views/human/depart/registration/DepartRegistrationAddForm.vue

@@ -28,16 +28,16 @@
 							@getValue="(value) => {inputForm.department=value}"/>
 					</el-form-item>
 				</el-col>
-				<el-col :span="12">
-					<el-form-item label="项目经理" prop="projectManager"
-								  :rules="[
-								  	{required: true, message: '项目经理不能为空', trigger: 'change'}
-                   ]">
-						<UserSelectSignatory style="width: 100%" ref="userSelect1"
-											 :readonly="true" :limit='1' :modelValue="inputForm.projectManager"
-											 @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelectSignatory>
-					</el-form-item>
-				</el-col>
+<!--				<el-col :span="12">-->
+<!--					<el-form-item label="项目经理" prop="projectManager"-->
+<!--								  :rules="[-->
+<!--								  	{required: true, message: '项目经理不能为空', trigger: 'change'}-->
+<!--                   ]">-->
+<!--						<UserSelectSignatory style="width: 100%" ref="userSelect1"-->
+<!--											 :readonly="true" :limit='1' :modelValue="inputForm.projectManager"-->
+<!--											 @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelectSignatory>-->
+<!--					</el-form-item>-->
+<!--				</el-col>-->
 				<el-col :span="12">
 					<el-form-item label="到岗日期" prop="arrivalDate" :rules="[{required: true, message: '到岗日期不能为空', trigger: 'change'}]">
 						<el-date-picker
@@ -113,6 +113,7 @@
 					arrivalDate: '',
 					departResignationDate: '',
 					remarks: '',
+					type: '',
 				},
 				keyWatch: '',
 			}
@@ -174,6 +175,7 @@
 					arrivalDate: '',
 					departResignationDate: '',
 					remarks: '',
+					type: '',
 				}
 				if (method === 'add') {
 					this.title = `新建离职申请`
@@ -326,6 +328,8 @@
 								if (this.commonJS.isNotEmpty(data)) {
 									if (data === '部门主任审批') {
 										this.inputForm.type = '4'
+									} else {
+										this.inputForm.type = '2'
 									}
 								}
 							})

+ 10 - 10
src/views/human/depart/registration/DepartRegistrationEditForm.vue

@@ -39,16 +39,16 @@
 										@getValue="(value) => {inputForm.department=value}"/>
 								</el-form-item>
 							</el-col>
-							<el-col :span="12">
-								<el-form-item label="项目经理" prop="projectManager"
-											  :rules="[
-								  	{required: true, message: '项目经理不能为空', trigger: 'change'}
-                   ]">
-									<UserSelectSignatory style="width: 100%" ref="userSelect1"
-														 :readonly="true" :limit='1' :modelValue="inputForm.projectManager"
-														 @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelectSignatory>
-								</el-form-item>
-							</el-col>
+<!--							<el-col :span="12">-->
+<!--								<el-form-item label="项目经理" prop="projectManager"-->
+<!--											  :rules="[-->
+<!--								  	{required: true, message: '项目经理不能为空', trigger: 'change'}-->
+<!--                   ]">-->
+<!--									<UserSelectSignatory style="width: 100%" ref="userSelect1"-->
+<!--														 :readonly="true" :limit='1' :modelValue="inputForm.projectManager"-->
+<!--														 @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelectSignatory>-->
+<!--								</el-form-item>-->
+<!--							</el-col>-->
 							<el-col :span="12">
 								<el-form-item label="到岗日期" prop="arrivalDate" :rules="[{required: true, message: '到岗日期不能为空', trigger: 'change'}]">
 									<el-date-picker

+ 26 - 3
src/views/human/depart/registration/DepartRegistrationList.vue

@@ -2,9 +2,27 @@
   <div class="page">
     <el-form :inline="true" class="query-form m-b-10" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
       <!-- 搜索框-->
-      <el-form-item label="项目编号" prop="projectNumber">
-        <el-input v-model="searchForm.projectNumber" placeholder="请输入项目编号" clearable></el-input>
+      <el-form-item label="姓名" prop="name">
+        <el-input v-model="searchForm.name" placeholder="请输入姓名" clearable></el-input>
       </el-form-item>
+		<el-form-item label="归属部门" prop="department">
+			<SelectTree
+				ref="officeTree"
+				:props="{
+                value: 'id',             // ID字段名
+                label: 'name',         // 显示名称
+                children: 'children'    // 子级字段名
+              }"
+				:url="`/system-server/sys/office/treeData?type=2`"
+				:value="searchForm.department"
+				:clearable="true"
+				:accordion="true"
+				size="default"
+				@getValue="(value,label) => {searchForm.department=label}"/>
+		</el-form-item>
+		<el-form-item label="联系电话" prop="mobile">
+			<el-input v-model="searchForm.mobile" placeholder="请输入联系电话" clearable></el-input>
+		</el-form-item>
 
       <el-form-item>
         <el-button type="primary" @click="refreshList()" icon="el-icon-search">查询</el-button>
@@ -16,6 +34,7 @@
         <template #buttons>
 <!--          <el-button v-if="!haveComplete" type="primary" icon="el-icon-plus" @click="start()">新建</el-button>-->
           <el-button v-if="!haveComplete" type="primary" icon="el-icon-plus" @click="start()">新建</el-button>
+			<span v-if="haveComplete" style="color: red">已存在离职申请,无法多次提交</span>
         </template>
       </vxe-toolbar>
       <div style="height: calc(100% - 90px)">
@@ -133,6 +152,7 @@
 </template>
 
 <script>
+	import SelectTree from '@/components/treeSelect/treeSelect.vue'
 	import handoverService from '@/api/human/depart/HandoverService'
   import departRegistrationService from '@/api/human/depart/DepartRegistrationService'
   import processService from '@/api/flowable/ProcessService'
@@ -146,7 +166,9 @@
 		  haveComplete: false,
         num: 0,
         searchForm: {
-          projectNumber: '',
+			name: '',
+			department: '',
+			mobile: '',
         },
         dataList: [],
         tablePage: {
@@ -168,6 +190,7 @@
     created () {
     },
     components: {
+		SelectTree,
 		DepartRegistrationEditForm
     },
     computed: {

+ 250 - 18
src/views/human/enrollment/registration/EnrollmentRegistrationAddForm.vue

@@ -40,7 +40,15 @@
 				</el-col>
 				<el-col :span="12">
 					<el-form-item label="政治面貌" prop="politicalOutlook" :rules="[]">
-						<el-input v-model="inputForm.politicalOutlook"></el-input>
+<!--						<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">
@@ -55,8 +63,16 @@
 				</el-col>
 				<el-col :span="12">
 					<el-form-item label="婚姻状况" prop="maritalStatus" :rules="[]">
-						<el-input v-model="inputForm.maritalStatus"></el-input>
+						<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">
 					<el-form-item label="联系电话" prop="mobilePhone" :rules="[{required: true, message: '联系电话不能为空', trigger: 'change'}]">
@@ -78,6 +94,9 @@
 						<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>
@@ -116,34 +135,69 @@
 				</el-col>
 				<el-col :span="12">
 					<el-form-item label="学历" prop="education" :rules="[]">
-						<el-input v-model="inputForm.education"></el-input>
+						<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-input v-model="inputForm.educationNature"></el-input>
+						<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-input v-model="inputForm.graduatedOrNot"></el-input>
+						<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-input v-model="inputForm.englishLevel"></el-input>
+						<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-input v-model="inputForm.ncre"></el-input>
+						<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" v-model="inputForm.remarks"></el-input>
+						<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"><i class="el-icon-document"></i> 部门信息</el-divider>
+			<el-row :gutter="26">
 				<el-form v-if="status === 'audit'" style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
 						 label-width="110px" @submit.native.prevent>
 					<el-row :gutter="26">
@@ -161,7 +215,7 @@
 									:url="`/system-server/sys/office/treeData?type=2`"
 									:value="inputForm.department"
 									:accordion="true"
-									size="large"
+									size="default"
 									@getValue="(value) => {inputForm.department=value}"/>
 							</el-form-item>
 						</el-col>
@@ -193,13 +247,165 @@
 						</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">
+							<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="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-row>
+				</el-form>
 			</el-row>
 			<el-divider content-position="left"><i class="el-icon-document"></i> 社保信息(选填)</el-divider>
-			<el-row :gutter="26">
+			<el-row :gutter="26" v-if="status === 'audit' || status === 'taskFormDetail'">
 				<el-col :span="12">
 					<el-form-item label="社保编号" prop="socialSecurityNumber" :rules="[]">
-						<el-input v-model="inputForm.socialSecurityNumber" maxlength="10"></el-input>
+						<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-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-upload :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
+								   :limit="limitNum"
+								   :disabled="hideUploadEdit"
+								   list-type="picture-card"
+								   :auto-upload="true"
+								   :on-success="handleUploadSuccess"
+								   v-model:file-list="fileList"
+						>
+							<el-icon><Plus /></el-icon>
+
+							<template #file="{ file }">
+								<div>
+									<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
+									<span class="el-upload-list__item-actions">
+										  <span
+											  class="el-upload-list__item-preview"
+											  @click="handlePictureCardPreview(file)"
+										  >
+											<el-icon><zoom-in /></el-icon>
+										  </span>
+										  <span
+											  v-if="!disabled"
+											  class="el-upload-list__item-delete"
+											  @click="handleDownload(file)"
+										  >
+											<el-icon><Download /></el-icon>
+										  </span>
+										  <span
+											  v-if="!disabled"
+											  style="display:none;"
+											  class="el-upload-list__item-delete"
+											  @click="handleRemove(file,fileList)"
+										  >
+											<el-icon><Delete /></el-icon>
+										  </span>
+									</span>
+								</div>
+							</template>
+						</el-upload>
+						<el-dialog v-model="dialogVisible">
+							<img w-full :src="inputForm.socialSecurityPictureFrontUrl" alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }"/>
+						</el-dialog>
+
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="社保卡照片反面" prop="socialSecurityPictureOpposite" :rules="[]">
+						<el-upload :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
+								   :limit="limitNum"
+								   :disabled="hideUploadEdit2"
+								   list-type="picture-card"
+								   :auto-upload="true"
+								   :on-success="handleUploadSuccess2"
+								   v-model:file-list="fileList2"
+						>
+							<el-icon><Plus /></el-icon>
+
+							<template #file="{ file }">
+								<div>
+									<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
+									<span class="el-upload-list__item-actions">
+										  <span
+											  class="el-upload-list__item-preview"
+											  @click="handlePictureCardPreview2(file)"
+										  >
+											<el-icon><zoom-in /></el-icon>
+										  </span>
+										  <span
+											  v-if="!disabled"
+											  class="el-upload-list__item-delete"
+											  @click="handleDownload2(file)"
+										  >
+											<el-icon><Download /></el-icon>
+										  </span>
+										  <span
+											  v-if="!disabled"
+											  style="display:none;"
+											  class="el-upload-list__item-delete"
+											  @click="handleRemove2(file,fileList2)"
+										  >
+											<el-icon><Delete /></el-icon>
+										  </span>
+									</span>
+								</div>
+							</template>
+						</el-upload>
+						<el-dialog v-model="dialogVisible2">
+							<img w-full :src="inputForm.socialSecurityPictureOppositeUrl" alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }"/>
+						</el-dialog>
+
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row :gutter="26" v-else>
+				<el-col :span="12">
+					<el-form-item label="社保编号" prop="socialSecurityNumber" :rules="[]">
+						<el-input v-model="inputForm.socialSecurityNumber" maxlength="10" @input="validateInput"></el-input>
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
@@ -448,17 +654,26 @@
 				}
 			},
 			handleDownload(file) {
-				toHref(file)
+				let file2 = {
+					url: this.inputForm.socialSecurityPictureFront
+				}
+				toHref(file2)
 			},
 			handleDownload2(file) {
-				toHref(file)
+				let file2 = {
+					url: this.inputForm.socialSecurityPictureOpposite
+				}
+				toHref(file2)
 			},
 			handlePictureCardPreview(file) {
 				this.dialogImageUrl = file.url;
+				this.inputForm.socialSecurityPictureFrontUrl = file.url
+				console.log('file.url1', file.url)
 				this.dialogVisible = true;
 			},
 			handlePictureCardPreview2(file) {
 				this.dialogImageUrl = file.url;
+				this.inputForm.socialSecurityPictureOppositeUrl = file.url
 				this.dialogVisible2 = true;
 			},
 			async httpRequest (file) {
@@ -600,6 +815,12 @@
 							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('”联系电话“填写不正确,请重新填写')
+						}
 
 						if (this.commonJS.isNotEmpty(this.inputForm.socialSecurityNumber) && (this.commonJS.isEmpty(this.inputForm.socialSecurityBankNumber) || this.commonJS.isEmpty(this.inputForm.socialSecurityPictureFront))) {
 							this.loading = false
@@ -618,7 +839,7 @@
 						}
 						this.inputForm.type = '2'
 						enrollmentRegistrationService.save(this.inputForm).then((data) => {
-							this.inputForm.title = `${this.$store.state.user.name} 发起了 [入职登记]`
+							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()
@@ -703,13 +924,18 @@
 						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.$message.error('联系电话已存在,请重新确认')
 						this.inputForm.mobilePhone = ''
 						throw new Error('联系电话已存在,请重新确认')
 					}
@@ -726,8 +952,10 @@
 			handleAvatarSuccess (res, file, fileList, index, val) {
 				console.log('foleList', fileList)
 				if (val === 'front') {
-					this.inputForm.socialSecurityPictureFront = res.url
+					this.inputForm.socialSecurityPictureFront = '/' + res.url
 					this.inputForm.socialSecurityPictureFrontUrl = res.lsUrl
+					console.log('res.url', res.url)
+					console.log('res.lsUrl', res.lsUrl)
 				}
 				this.hideUploadEdit = true
 				this.$forceUpdate()
@@ -750,6 +978,10 @@
 			checkIsPic (file) {
 				return this.commonJS.isPic(file)
 			},
+			validateInput() {
+				// 使用正则表达式验证输入内容,禁止中文
+				this.inputForm.socialSecurityNumber = this.inputForm.socialSecurityNumber.replace(/[\u4e00-\u9fa5]/g, '');
+			}
 		}
 	}
 </script>

+ 5 - 1
src/views/human/enrollment/registration/EnrollmentRegistrationList.vue

@@ -44,7 +44,11 @@
           :checkbox-config="{}">
           <vxe-column type="seq" width="60" title="序号"></vxe-column>
           <vxe-column min-width="160" align="center" title="姓名" field="name"></vxe-column>
-          <vxe-column min-width="160" align="center" title="政治面貌" field="politicalOutlook"></vxe-column>
+          <vxe-column min-width="160" align="center" title="政治面貌" field="politicalOutlook">
+			  <template #default="scope">
+				  {{$dictUtils.getDictLabel('political_outlook', scope.row.politicalOutlook, '')}}
+			  </template>
+		  </vxe-column>
           <vxe-column min-width="160" align="center" title="民族" field="nation"></vxe-column>
           <vxe-column min-width="160" align="center" title="联系电话" field="mobilePhone"></vxe-column>
           <vxe-column min-width="160" align="center" title="毕业院校" field="graduatedFrom"></vxe-column>

+ 32 - 15
src/views/human/practice/logwrite/LocationPullForm.vue

@@ -9,7 +9,11 @@
       @close="close"
       append-to-body
 	  v-model="visible">
-      <div style="height: calc(100% - 80px);">
+		<div v-if="isShow">
+			<el-radio v-model="checkType" label="1" style="margin-right: 20px">所内</el-radio>
+			<el-radio v-model="checkType" label="2" style="margin-right: 20px">所外</el-radio>
+		</div>
+      <div style="height: calc(100% - 80px);" v-if="checkType === '2'">
         <el-form :inline="true" class="query-form" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
           <!-- 搜索框-->
           <el-form-item label="" prop="name">
@@ -62,6 +66,8 @@
       return {
         title: '',
         method: '',
+		  checkType: '',
+		  isShow: true,
         visible: false,
         loading: false,
 		  dataList: [],
@@ -76,26 +82,37 @@
     },
     methods: {
       init () {
+		  this.checkType = '1'
         this.title = '地区选择'
         this.visible = true
         this.list()
       },
       // 表单提交
       getProgramForUser () {
-        let rows = []
-        if (this.commonJS.isEmpty(this.$refs.userTable.getRadioRecord())) {
-          this.$message.error('请选择一条数据')
-          return
-        }
-        let row = this.$refs.userTable.getRadioRecord()
-		  console.log('row.code', row.code)
-		  if (row.code === '100000' || row.code === 100000) {
-			  this.$message.error('请选择子集数据')
-			  return
-		  }
-        this.close()
-        rows.push(row)
-        this.$emit('getProgramForUser', rows)
+		  if (this.checkType === '1') {
+			  let rows = []
+			  rows.bj1 = 'bj1'
+			  rows.checkType = this.checkType
+			  this.close()
+			  this.$emit('getProgramForUser', rows)
+		  }else if (this.checkType === '2') {
+			let rows = []
+			if (this.commonJS.isEmpty(this.$refs.userTable.getRadioRecord())) {
+				this.$message.error('请选择一条数据')
+				return
+			}
+			let row = this.$refs.userTable.getRadioRecord()
+			console.log('row.code', row.code)
+			if (row.code === '100000' || row.code === 100000) {
+				this.$message.error('请选择子集数据')
+				return
+			}
+			this.close()
+			rows.push(row)
+			  rows.checkType = this.checkType
+			this.$emit('getProgramForUser', rows)
+		}
+
       },
       list () {
         this.loading = true

+ 110 - 8
src/views/human/practice/logwrite/LogWriteAddForm.vue

@@ -55,14 +55,19 @@
 								  :rules="[
 								  	{required: true, message: '项目经理不能为空', trigger: 'change'}
                    ]">
-						<UserSelectSignatory style="width: 100%" ref="userSelect1" :disabled="status === 'audit' || status === 'taskFormDetail'"
-											 :readonly="true" :limit='1' :modelValue="inputForm.projectManager"
-											 @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelectSignatory>
+<!--						<UserSelectSignatory style="width: 100%" ref="userSelect1" :disabled="status === 'audit' || status === 'taskFormDetail'"-->
+<!--											 :readonly="true" :limit='1' :modelValue="inputForm.projectManager"-->
+<!--											 @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelectSignatory>-->
+						<UserSelect2 :limit='1' :modelValue="inputForm.projectManager" @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelect2>
 					</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>
+						<el-input type="textarea"
+								  maxlength="200" placeholder="请输入备注"
+								  show-word-limit v-model="inputForm.remarks"></el-input>
 					</el-form-item>
 				</el-col>
 			</el-row>
@@ -84,6 +89,7 @@
 						style="margin-left: 5em"
 						:key="amountKey"
 						highlight-current-row
+						:edit-rules="tableRules"
 						:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 					>
 						<vxe-table-column field="year" title="年" :edit-render="{}">
@@ -136,7 +142,8 @@
 
 <script>
 	import workLogService from '@/api/human/register/WorkLogService'
-	import UserSelectSignatory from '@/views/cw/workClientInfo/clientUserSelect'
+	// import UserSelectSignatory from '@/views/cw/workClientInfo/clientUserSelect'
+	import UserSelect2 from '@/components/userSelect'
 	import LocationPullForm from './LocationPullForm'
 
 	export default {
@@ -156,6 +163,26 @@
 		},
 		data () {
 			return {
+				tableRules: {
+					year: [
+						{ required: true, message: '请填写“年”' }
+					],
+					month: [
+						{ required: true, message: '请填写“月”' }
+					],
+					day: [
+						{ required: true, message: '请填写“日”' }
+					],
+					week: [
+						{ required: true, message: '请填写“星期”' }
+					],
+					auditProjectUnitName: [
+						{ required: true, message: '请填写“审计项目单位名称”' }
+					],
+					location: [
+						{ required: true, message: '请填写“地点”' }
+					]
+				},
 				workDay: '',
 				title: '',
 				method: '',
@@ -170,6 +197,7 @@
 					internshipDays: '',
 					remarks: '',
 					projectManager: '',
+					allMoney: '',
 					amountInfos: [],
 				},
 				keyWatch: '',
@@ -179,8 +207,9 @@
 		created () {
 		},
 		components: {
-			UserSelectSignatory,
+			// UserSelectSignatory,
 			LocationPullForm,
+			UserSelect2,
 		},
 		computed: {
 			bus: {
@@ -224,8 +253,16 @@
 				this.$refs.locationPullForm.init()
 			},
 			getProgramForUser (rows) {
-				this.inputForm.amountInfos[this.indexRow].locationId = rows[0].id
-				this.inputForm.amountInfos[this.indexRow].location = rows[0].name
+
+				if (rows.bj1 == 'bj1') {
+					this.inputForm.amountInfos[this.indexRow].locationId = ''
+					this.inputForm.amountInfos[this.indexRow].location = '所内'
+					this.inputForm.amountInfos[this.indexRow].checkType = rows.checkType
+				} else {
+					this.inputForm.amountInfos[this.indexRow].locationId = rows[0].id
+					this.inputForm.amountInfos[this.indexRow].location = rows[0].name
+					this.inputForm.amountInfos[this.indexRow].checkType = rows.checkType
+				}
 				this.$forceUpdate()
 				this.indexRow = ''
 			},
@@ -263,6 +300,20 @@
 					workLogService.findById(this.inputForm.id).then((data) => {
 						this.inputForm = this.recover(this.inputForm, data)
 						this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
+
+						if (this.commonJS.isNotEmpty(this.inputForm.amountInfos)){
+							this.inputForm.amountInfos.forEach((item, index) => {
+								console.log('item', item)
+								if (this.commonJS.isNotEmpty(item.checkType)) {
+									if (item.checkType === '1') {
+										console.log('建立了')
+										this.inputForm.amountInfos[index].location = '所内'
+									}
+								}
+							});
+						}
+
+
 						if (this.status === 'audit'){
 							//将开始时间与结束时间传入后台查询后台的实际工作时间接口,
 							workLogService.getWorkDay(this.inputForm.startTime,this.inputForm.endTime).then((data) => {
@@ -336,6 +387,45 @@
 						}
 						this.loading = true
 						this.inputForm.type = '2'
+						if (this.inputForm.amountInfos.length < this.inputForm.internshipDays) {
+							this.loading = false
+							this.$message.error('日志明细行数要与实习天数一致')
+							throw new Error('日志明细行数要与实习天数一致')
+						}
+						this.inputForm.amountInfos.forEach((item, index) => {
+							if (this.commonJS.isEmpty(item.year)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “年” 为空')
+								throw new Error()
+							}
+							if (this.commonJS.isEmpty(item.month)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “月” 为空')
+								throw new Error()
+							}
+							if (this.commonJS.isEmpty(item.day)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “日” 为空')
+								throw new Error()
+							}
+							if (this.commonJS.isEmpty(item.week)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “星期” 为空')
+								throw new Error()
+							}
+							if (this.commonJS.isEmpty(item.auditProjectUnitName)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “审计项目单位名称” 为空')
+								throw new Error()
+							}
+							if (this.commonJS.isEmpty(item.location)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “地点” 为空')
+								throw new Error()
+							}
+							// 在这里执行对每个元素的操作
+						});
+						console.log('this.inputForm.amountInfos',this.inputForm.amountInfos)
 						workLogService.save(this.inputForm).then((data) => {
 							this.inputForm.title = `${this.$store.state.user.name} 发起了 - [实习-工作日志]`
 							this.inputForm.id = data.businessId
@@ -363,6 +453,18 @@
 					} else {
 						this.$refs['inputForm'].validate(async (valid) => {
 							if (valid) {
+								var allMoney = 0;
+								console.log('klasd')
+								this.inputForm.amountInfos.forEach((item, index) => {
+									this.inputForm.amountInfos[index].location = item.locationId
+									this.$dictUtils.getDictList('type_for_money').forEach((money) => {
+										console.log('money.value', money.value)
+										if (item.checkType == money.label) {
+											allMoney += Number(money.value);
+										}
+									})
+								});
+								this.inputForm.allMoney = allMoney
 								this.loading = true
 								this.inputForm.type = '5'
 								console.log('this.inputForm',this.inputForm)

+ 104 - 7
src/views/human/practice/logwrite/LogWriteEditForm.vue

@@ -65,14 +65,19 @@
 											  :rules="[
 								  	{required: true, message: '项目经理不能为空', trigger: 'change'}
                    ]">
-									<UserSelectSignatory style="width: 100%" ref="userSelect1" :disabled="status === 'audit' || status === 'taskFormDetail'"
-														 :readonly="true" :limit='1' :modelValue="inputForm.projectManager"
-														 @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelectSignatory>
+<!--									<UserSelectSignatory style="width: 100%" ref="userSelect1" :disabled="status === 'audit' || status === 'taskFormDetail'"-->
+<!--														 :readonly="true" :limit='1' :modelValue="inputForm.projectManager"-->
+<!--														 @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelectSignatory>-->
+									<UserSelect2 :limit='1' :modelValue="inputForm.projectManager" @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelect2>
 								</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>
+									<el-input type="textarea"
+											  maxlength="200" placeholder="请输入备注"
+											  show-word-limit v-model="inputForm.remarks"></el-input>
 								</el-form-item>
 							</el-col>
 						</el-row>
@@ -93,6 +98,7 @@
 									style="margin-left: 5em"
 									:key="amountKey"
 									highlight-current-row
+									:edit-rules="tableRules"
 									:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
 								>
 									<vxe-table-column field="year" title="年" :edit-render="{}">
@@ -122,7 +128,7 @@
 									</vxe-table-column>
 									<vxe-table-column field="location" title="地点" :edit-render="{}">
 										<template v-slot:edit="scope">
-											<el-input v-model="scope.row.location" ></el-input>
+											<el-input v-model="scope.row.location" @focus="locationListForm(scope.$rowIndex)"></el-input>
 										</template>
 									</vxe-table-column>
 									<vxe-table-column field="auditWorkContent" title="审计工作内容" :edit-render="{}">
@@ -150,11 +156,13 @@
 			</template>
 		</el-dialog>
 	</div>
+	<LocationPullForm ref="locationPullForm" @getProgramForUser="getProgramForUser"></LocationPullForm>
 </template>
 
 <script>
 	import workLogService from '@/api/human/register/WorkLogService'
-	import SelectTree from '@/components/treeSelect/treeSelect.vue'
+	import UserSelect2 from '@/components/userSelect'
+	import LocationPullForm from './LocationPullForm'
 
 	export default {
 		props: {
@@ -173,6 +181,26 @@
 		},
 		data () {
 			return {
+				tableRules: {
+					year: [
+						{ required: true, message: '请填写“年”' }
+					],
+					month: [
+						{ required: true, message: '请填写“月”' }
+					],
+					day: [
+						{ required: true, message: '请填写“日”' }
+					],
+					week: [
+						{ required: true, message: '请填写“星期”' }
+					],
+					auditProjectUnitName: [
+						{ required: true, message: '请填写“审计项目单位名称”' }
+					],
+					location: [
+						{ required: true, message: '请填写“地点”' }
+					]
+				},
 				title: '',
 				method: '',
 				visible: false,
@@ -194,7 +222,8 @@
 		created () {
 		},
 		components: {
-			SelectTree
+			LocationPullForm,
+			UserSelect2,
 		},
 		computed: {
 			bus: {
@@ -267,6 +296,16 @@
 						}
 						this.inputForm = this.recover(this.inputForm, data)
 						this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
+
+						this.inputForm.amountInfos.forEach((item, index) => {
+							console.log('item', item)
+							if (this.commonJS.isNotEmpty(item.checkType)) {
+								if (item.checkType === '1') {
+									this.inputForm.amountInfos[index].location = '所内'
+								}
+							}
+						});
+
 						this.loading = false
 					})
 				})
@@ -276,6 +315,46 @@
 				this.$refs['inputForm'].validate((valid) => {
 					if (valid) {
 						this.loading = true
+
+						if (this.inputForm.amountInfos.length < this.inputForm.internshipDays) {
+							this.loading = false
+							this.$message.error('日志明细行数要与实习天数一致')
+							throw new Error('日志明细行数要与实习天数一致')
+						}
+						this.inputForm.amountInfos.forEach((item, index) => {
+							if (this.commonJS.isEmpty(item.year)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “年” 为空')
+								throw new Error()
+							}
+							if (this.commonJS.isEmpty(item.month)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “月” 为空')
+								throw new Error()
+							}
+							if (this.commonJS.isEmpty(item.day)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “日” 为空')
+								throw new Error()
+							}
+							if (this.commonJS.isEmpty(item.week)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “星期” 为空')
+								throw new Error()
+							}
+							if (this.commonJS.isEmpty(item.auditProjectUnitName)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “审计项目单位名称” 为空')
+								throw new Error()
+							}
+							if (this.commonJS.isEmpty(item.location)) {
+								this.loading = false
+								this.$message.warning('日志明细中第 ' + (index + 1) + ' 条数据的 “地点” 为空')
+								throw new Error()
+							}
+							// 在这里执行对每个元素的操作
+						});
+
 						workLogService.save(this.inputForm).then((data) => {
 							this.close()
 							this.$message.success(data)
@@ -310,6 +389,24 @@
 					this.inputForm.amountInfos.splice(rowIndex, 1)
 				}
 			},
+			// 地点下拉弹窗
+			locationListForm (rowIndex) {
+				this.indexRow = rowIndex
+				this.$refs.locationPullForm.init()
+			},
+			getProgramForUser (rows) {
+
+				if (rows.bj1 == 'bj1') {
+					this.inputForm.amountInfos[this.indexRow].location = '所内'
+					this.inputForm.amountInfos[this.indexRow].checkType = rows.checkType
+				} else {
+					this.inputForm.amountInfos[this.indexRow].locationId = rows[0].id
+					this.inputForm.amountInfos[this.indexRow].location = rows[0].name
+					this.inputForm.amountInfos[this.indexRow].checkType = rows.checkType
+				}
+				this.$forceUpdate()
+				this.indexRow = ''
+			},
 		}
 	}
 </script>

+ 32 - 4
src/views/human/practice/logwrite/LogWriteList.vue

@@ -2,9 +2,25 @@
   <div class="page">
     <el-form :inline="true" class="query-form m-b-10" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
       <!-- 搜索框-->
-      <el-form-item label="项目编号" prop="projectNumber">
-        <el-input v-model="searchForm.projectNumber" placeholder="请输入项目编号" clearable></el-input>
+      <el-form-item label="工作日志名称" prop="workName">
+        <el-input v-model="searchForm.workName" placeholder="请输入工作日志名称" clearable></el-input>
       </el-form-item>
+		<el-form-item label="开始时间" prop="createDates">
+			<el-date-picker
+				placement="bottom-start"
+				format="YYYY-MM-DD"
+				value-format="YYYY-MM-DD"
+				v-model="searchForm.createDates"
+				type="datetimerange"
+				range-separator="至"
+				start-placeholder="开始日期"
+				end-placeholder="结束日期">
+			</el-date-picker>
+		</el-form-item>
+		<el-form-item label="项目经理" prop="projectManager">
+			<!--        <el-input  v-model="searchForm.createBy.name" placeholder="请输入创建人" clearable></el-input>-->
+			<UserSelect2 :limit='1' :modelValue="searchForm.projectManager" @update:modelValue='(value, label) => {searchForm.projectManager = value}'></UserSelect2>
+		</el-form-item>
 
       <el-form-item>
         <el-button type="primary" @click="refreshList()" icon="el-icon-search">查询</el-button>
@@ -43,7 +59,11 @@
           :data="dataList"
           :checkbox-config="{}">
           <vxe-column type="seq" width="60" title="序号"></vxe-column>
-			<vxe-column min-width="160" align="center" title="工作日志名称" field="workName"></vxe-column>
+			<vxe-column min-width="160" align="center" title="工作日志名称" field="workName">
+				<template #default="scope">
+					<el-link  type="primary" :underline="false" @click="view(scope.row.id)">{{scope.row.workName}}</el-link>
+				</template>
+			</vxe-column>
           <vxe-column min-width="160" align="center" title="开始时间" field="startTime"></vxe-column>
           <vxe-column min-width="160" align="center" title="结束时间" field="endTime"></vxe-column>
           <vxe-column min-width="160" align="center" title="实习天数" field="internshipDays"></vxe-column>
@@ -92,6 +112,7 @@
 </template>
 
 <script>
+	import UserSelect2 from '@/components/userSelect'
   import workLogService from '@/api/human/register/WorkLogService'
   import processService from '@/api/flowable/ProcessService'
   import userService from '@/api/sys/UserService'
@@ -103,7 +124,9 @@
       return {
         num: 0,
         searchForm: {
-          projectNumber: '',
+			workName: '',
+			projectManager: '',
+			createDates: [],
         },
         dataList: [],
         tablePage: {
@@ -123,6 +146,7 @@
     created () {
     },
     components: {
+		UserSelect2,
 		LogWriteEditForm
     },
     computed: {
@@ -150,6 +174,10 @@
       // 新增
       add () {
       },
+		// 查看
+		view (id) {
+			this.$refs.logWriteEditForm.init('view', id)
+		},
       // 修改
       editForm (id) {
         id = id || this.$refs.clientTable.getCheckboxRecords().map(item => {

+ 36 - 5
src/views/human/practice/register/RegistrationAddForm.vue

@@ -22,7 +22,7 @@
 				</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"></el-input>
+						<el-input v-model="inputForm.idCard" @blur="idCardOnly(inputForm.idCard)"></el-input>
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
@@ -59,7 +59,7 @@
 				</el-col>
 				<el-col :span="12">
 					<el-form-item label="联系电话" prop="mobilePhone" :rules="[{required: true, message: '联系电话不能为空', trigger: 'change'}]">
-						<el-input v-model="inputForm.mobilePhone"></el-input>
+						<el-input v-model="inputForm.mobilePhone" @blur="mobilePhoneOnly(inputForm.mobilePhone)"></el-input>
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
@@ -97,7 +97,7 @@
 									:url="`/system-server/sys/office/treeData?type=2`"
 									:value="inputForm.practiceOffice"
 									:accordion="true"
-									size="large"
+									size="default"
 									@getValue="(value) => {inputForm.practiceOffice=value}"/>
 							</el-form-item>
 						</el-col>
@@ -255,6 +255,7 @@
 </template>
 
 <script>
+	import enrollmentRegistrationService from '@/api/human/enrollment/EnrollmentRegistrationService'
 	import registerService from '@/api/human/register/RegisterService'
 	import SelectTree from '@/components/treeSelect/treeSelect.vue'
 	import UserSelect2 from '@/components/userSelect'
@@ -410,6 +411,7 @@
 						if (!this.validateXG.isPhoneOrMobile(this.inputForm.mobilePhone)) {
 							this.$message.error('”联系电话“填写不正确,请重新填写')
 							this.loading = false
+							this.inputForm.mobilePhone = ''
 							throw new Error('”联系电话“填写不正确,请重新填写')
 						}
 						if (this.commonJS.isNotEmpty(this.inputForm.qqNum)){
@@ -479,6 +481,7 @@
 						if (!this.validateXG.isPhoneOrMobile(this.inputForm.mobilePhone)) {
 							this.$message.error('”联系电话“填写不正确,请重新填写')
 							this.loading = false
+							this.inputForm.mobilePhone = ''
 							throw new Error('”联系电话“填写不正确,请重新填写')
 						}
 						if (this.commonJS.isNotEmpty(this.inputForm.qqNum)){
@@ -492,7 +495,7 @@
 						}
 						this.inputForm.type = '2'
 						registerService.save(this.inputForm).then((data) => {
-							this.inputForm.title = `${this.$store.state.user.name} 发起了 [${data.no}] - [实习登记]`
+							this.inputForm.title = `${this.inputForm.name} - [实习登记]`
 							this.inputForm.id = data.businessId
 							callback(data.businessTable, data.businessId, this.inputForm)
 							this.$refs.inputForm.resetFields()
@@ -599,7 +602,35 @@
 					this.$refs.familyTable.remove(row)
 					this.inputForm.familyMembers.splice(rowIndex, 1)
 				}
-			}
+			},
+			//联系电话唯一性判断
+			mobilePhoneOnly(mobilePhone) {
+				if (!this.validateXG.isPhoneOrMobile(this.inputForm.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('联系电话已存在,请重新确认')
+					}
+				})
+
+			},
+			//身份证号码唯一性判断
+			idCardOnly(idCard) {
+				registerService.findIdCardOnly(idCard).then((data) => {
+					if (data !== 0) {
+						this.$message.error('身份证号码已存在,请重新确认')
+						this.inputForm.idCard = ''
+						throw new Error('身份证号码已存在,请重新确认')
+					}
+				})
+
+			},
 		}
 	}
 </script>

+ 286 - 0
src/views/human/practice/register/RegistrationBankAddForm.vue

@@ -0,0 +1,286 @@
+<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':''"
+				 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="bankCardNumber" :rules="[{required: true, message: '银行卡号不能为空', trigger: 'blur'}]">
+						<el-input v-model="inputForm.bankCardNumber" @change="checkBankNumber(inputForm.bankCardNumber)"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="简介" prop="remarks" :rules="[]">
+						<el-input type="textarea"
+								  maxlength="200" placeholder="请输入简介"
+								  show-word-limit v-model="inputForm.remarks"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+	</div>
+</template>
+
+<script>
+	import registerBankService from '@/api/human/register/RegisterBankService'
+
+	export default {
+		props: {
+			businessId: {
+				type: String,
+				default: ''
+			},
+			formReadOnly: {
+				type: Boolean,
+				default: false
+			},
+			status: {
+				type: String,
+				default: ''
+			}
+		},
+		data () {
+			return {
+				title: '',
+				method: '',
+				visible: false,
+				loading: false,
+				inputForm: {
+					userId: '',
+					remarks: '',
+					type: '',
+					bankCardNumber: '',
+					name: '',
+				},
+				keyWatch: '',
+				amountKey: '',
+				membersKey: ''
+			}
+		},
+		created () {
+		},
+		components: {
+		},
+		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: {
+			checkBankNumber(bankNumber) {
+				if (!this.validateXG.isBankNum(bankNumber)) {
+					this.$message.error('请输入正确的社保银行卡号')
+					this.inputForm.bankCardNumber = ''
+					throw new Error('请输入正确的社保银行卡号')
+				}
+			},
+			getKeyWatch (keyWatch) {
+				this.keyWatch = keyWatch
+			},
+			getUpload () {
+			},
+			init (method, id) {
+				this.method = method
+				this.inputForm = {
+					userId: '',
+					remarks: '',
+					type: '',
+					bankCardNumber: '',
+					name: '',
+				}
+				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
+					registerBankService.findById(this.inputForm.id).then((data) => {
+						if (this.status === 'audit' || this.status === 'taskFormDetail') {
+							method = 'view'
+						}
+						this.inputForm = this.recover(this.inputForm, data)
+						this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
+
+						if (this.commonJS.isEmpty(this.inputForm.name)) {
+							this.inputForm.name = this.$store.state.user.name
+						}
+
+						this.loading = false
+					})
+				})
+			},
+			// 表单提交
+			doSubmit () {
+				this.$refs['inputForm'].validate((valid) => {
+					if (valid) {
+						this.loading = true
+
+						this.inputForm.id = this.businessId
+						registerBankService.save(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.inputForm.experiences = []
+				this.inputForm.familyMembers = []
+				this.visible = false
+			},
+			reapplyForm (callback) {
+				this.loading = true
+				registerBankService.findById(this.inputForm.id).then((data) => {
+					if (data.type !== '4') { // 审核状态不是“驳回”,就弹出提示
+						this.loading = false
+						this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					} else {
+						this.startForm(callback)
+					}
+				})
+			},
+
+			// 暂存
+			async saveForm (callback) {
+				this.loading = true
+				this.inputForm.type = '1'
+				registerBankService.save(this.inputForm).then((data) => {
+					callback()
+					this.$refs.inputForm.resetFields()
+					this.loading = false
+				}).catch(() => {
+					this.$refs.inputForm.resetFields()
+					this.loading = false
+				})
+			},
+			// 送审
+			async startForm (callback) {
+				this.$refs['inputForm'].validate(async (valid) => {
+					if (valid) {
+						this.loading = true
+						this.inputForm.type = '2'
+						registerBankService.save(this.inputForm).then((data) => {
+							this.inputForm.title = `${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
+				registerBankService.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
+								this.inputForm.type = '5'
+								console.log('this.inputForm',this.inputForm)
+								registerBankService.save(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
+					registerBankService.findById(this.inputForm.id).then((data) => {
+						if (data.type !== '2') { // 审核状态不是“审核中”,就弹出提示
+							this.loading = false
+							this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+							throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						} else {
+							this.inputForm.type = '4'
+							registerBankService.updateStatusById(this.inputForm).then(() => {
+								this.loading = false
+								callback()
+							})
+						}
+					})
+				} else if (type === 'hold') {
+					this.loading = true
+					registerBankService.findById(this.inputForm.id).then((data) => {
+						if (data.type !== '4') { // 审核状态不是“驳回”,就弹出提示
+							this.loading = false
+							this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+							throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						} else {
+							this.inputForm.type = '1'
+							registerBankService.updateStatusById(this.inputForm).then(() => {
+								this.loading = false
+								callback()
+							})
+						}
+					})
+				}
+			},
+		}
+	}
+</script>

+ 74 - 14
src/views/human/practice/register/RegistrationEditForm.vue

@@ -11,7 +11,7 @@
 			v-model="visible">
 			<el-row>
 				<el-row>
-					<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''" :disabled="status === 'audit' || status === 'taskFormDetail'"
+					<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''" :disabled="status === 'audit' || status === 'taskFormDetail' || method === 'view'"
 							 label-width="100px" @submit.native.prevent>
 
 						<el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
@@ -32,8 +32,8 @@
 								</el-form-item>
 							</el-col>
 							<el-col :span="12">
-								<el-form-item label="身份证号码" prop="idCard" :rules="[{required: true, message: '身份证号码不能为空', trigger: 'change'}]">
-									<el-input v-model="inputForm.idCard"></el-input>
+								<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">
@@ -48,7 +48,14 @@
 							</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">
@@ -63,20 +70,22 @@
 							</el-col>
 							<el-col :span="12">
 								<el-form-item label="联系电话" prop="mobilePhone" :rules="[{required: true, message: '联系电话不能为空', trigger: 'change'}]">
-									<el-input v-model="inputForm.mobilePhone"></el-input>
+									<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="QQ号/微信号" prop="qqNum" :rules="[]">
-									<el-input v-model="inputForm.qqNum"></el-input>
+									<el-input v-model="inputForm.qqNum" :maxlength="20" :minlength="5"></el-input>
 								</el-form-item>
 							</el-col>
 							<el-col :span="12">
 								<el-form-item label="简介" prop="remarks" :rules="[]">
-									<el-input type="textarea" v-model="inputForm.remarks"></el-input>
+									<el-input type="textarea"
+											  maxlength="200" placeholder="请输入简介"
+											  show-word-limit v-model="inputForm.remarks"></el-input>
 								</el-form-item>
 							</el-col>
-							<el-form style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+							<el-form style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''" :disabled="method === 'view'"
 									 label-width="110px" @submit.native.prevent>
 								<el-row :gutter="15">
 									<el-col :span="12">
@@ -99,7 +108,7 @@
 												:url="`/system-server/sys/office/treeData?type=2`"
 												:value="inputForm.practiceOffice"
 												:accordion="true"
-												size="large"
+												size="default"
 												@getValue="(value) => {inputForm.practiceOffice=value}"/>
 										</el-form-item>
 									</el-col>
@@ -118,8 +127,8 @@
 											<el-date-picker
 												style="width: 100%;"
 												v-model="inputForm.practiceStartDay"
-												type="datetime"
-												value-format="YYYY-MM-DD HH:mm:ss"
+												type="date"
+												value-format="YYYY-MM-DD"
 												placeholder="选择实习开始日期">
 											</el-date-picker>
 										</el-form-item>
@@ -129,8 +138,8 @@
 											<el-date-picker
 												style="width: 100%;"
 												v-model="inputForm.practiceCompleteDay"
-												type="datetime"
-												value-format="YYYY-MM-DD HH:mm:ss"
+												type="date"
+												value-format="YYYY-MM-DD"
 												placeholder="选择实习结束日期">
 											</el-date-picker>
 										</el-form-item>
@@ -264,6 +273,7 @@
 </template>
 
 <script>
+	import enrollmentRegistrationService from '@/api/human/enrollment/EnrollmentRegistrationService'
 	import registerService from '@/api/human/register/RegisterService'
 	import SelectTree from '@/components/treeSelect/treeSelect.vue'
 	import UserSelectSignatory from '@/views/cw/workClientInfo/clientUserSelect'
@@ -390,6 +400,8 @@
 					this.title = `新建实习登记`
 				} else if (method === 'edit') {
 					this.title = '修改实习登记'
+				} else if (method === 'view') {
+					this.title = '查看实习登记信息'
 				}
 				this.inputForm.id = id
 				this.visible = true
@@ -412,6 +424,26 @@
 				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('身份证号码不能为空')
+						}
+						if (!this.validateXG.isPhoneOrMobile(this.inputForm.mobilePhone)) {
+							this.$message.error('”联系电话“填写不正确,请重新填写')
+							this.loading = false
+							this.inputForm.mobilePhone = ''
+							throw new Error('”联系电话“填写不正确,请重新填写')
+						}
+						if (this.commonJS.isNotEmpty(this.inputForm.qqNum)){
+							//判断是否是汉字
+							const chineseRegex = /[\u4e00-\u9fa5]/;
+							if (chineseRegex.test(this.inputForm.qqNum)){
+								this.$message.error('QQ号/微信号填写不正确,请重新填写')
+								this.loading = false
+								throw new Error('QQ号/微信号填写不正确,请重新填写')
+							}
+						}
 						registerService.save(this.inputForm).then((data) => {
 							this.close()
 							this.$message.success(data)
@@ -448,7 +480,7 @@
 						this.loading = true
 						this.inputForm.type = '2'
 						registerService.save(this.inputForm).then((data) => {
-							this.inputForm.title = `${this.$store.state.user.name} 发起了 [${data.no}] - [实习登记]`
+							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()
@@ -556,6 +588,34 @@
 					this.inputForm.familyMembers.splice(rowIndex, 1)
 				}
 			},
+			//联系电话唯一性判断
+			mobilePhoneOnly(mobilePhone) {
+				if (!this.validateXG.isPhoneOrMobile(this.inputForm.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('联系电话已存在,请重新确认')
+					}
+				})
+
+			},
+			//身份证号码唯一性判断
+			idCardOnly(idCard) {
+				registerService.findIdCardOnly(idCard).then((data) => {
+					if (data !== 0) {
+						this.$message.error('身份证号码已存在,请重新确认')
+						this.inputForm.idCard = ''
+						throw new Error('身份证号码已存在,请重新确认')
+					}
+				})
+
+			},
 		}
 	}
 </script>

+ 44 - 9
src/views/human/practice/register/RegistrationList.vue

@@ -2,9 +2,27 @@
   <div class="page">
     <el-form :inline="true" class="query-form m-b-10" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
       <!-- 搜索框-->
-      <el-form-item label="项目编号" prop="projectNumber">
-        <el-input v-model="searchForm.projectNumber" placeholder="请输入项目编号" clearable></el-input>
-      </el-form-item>
+		<el-form-item label="姓名" prop="name">
+			<el-input v-model="searchForm.name" placeholder="请输入姓名" clearable></el-input>
+		</el-form-item>
+		<el-form-item label="归属部门" prop="department">
+			<SelectTree
+				ref="officeTree"
+				:props="{
+                value: 'id',             // ID字段名
+                label: 'name',         // 显示名称
+                children: 'children'    // 子级字段名
+              }"
+				:url="`/system-server/sys/office/treeData?type=2`"
+				:value="searchForm.department"
+				:clearable="true"
+				:accordion="true"
+				size="default"
+				@getValue="(value,label) => {searchForm.department=label}"/>
+		</el-form-item>
+		<el-form-item label="联系电话" prop="mobilePhone">
+			<el-input v-model="searchForm.mobilePhone" placeholder="请输入联系电话" clearable></el-input>
+		</el-form-item>
 
       <el-form-item>
         <el-button type="primary" @click="refreshList()" icon="el-icon-search">查询</el-button>
@@ -14,7 +32,7 @@
     <div class="jp-table top" style="">
       <vxe-toolbar :refresh="{query: refreshList}" ref="toolbarRef" export custom>
         <template #buttons>
-          <el-button type="primary" icon="el-icon-plus" @click="start()">新建</el-button>
+<!--          <el-button type="primary" icon="el-icon-plus" @click="start()">新建</el-button>-->
         </template>
       </vxe-toolbar>
       <div style="height: calc(100% - 90px)">
@@ -43,11 +61,20 @@
           :data="dataList"
           :checkbox-config="{}">
           <vxe-column type="seq" width="60" title="序号"></vxe-column>
-          <vxe-column min-width="160" align="center" title="姓名" field="name"></vxe-column>
-          <vxe-column min-width="160" align="center" title="政治面貌" field="politicalOutlook"></vxe-column>
+          <vxe-column min-width="160" align="center" title="姓名" field="name">
+			  <template #default="scope">
+				  <el-link  type="primary" :underline="false" @click="view(scope.row.id)">{{scope.row.name}}</el-link>
+			  </template>
+		  </vxe-column>
+          <vxe-column min-width="160" align="center" title="政治面貌" field="politicalOutlook">
+			  <template #default="scope">
+				  {{$dictUtils.getDictLabel('political_outlook', scope.row.politicalOutlook, '')}}
+			  </template>
+		  </vxe-column>
           <vxe-column min-width="160" align="center" title="民族" field="nation"></vxe-column>
           <vxe-column min-width="160" align="center" title="联系电话" field="mobilePhone"></vxe-column>
           <vxe-column min-width="160" align="center" title="毕业院校" field="graduatedFrom"></vxe-column>
+          <vxe-column min-width="160" align="center" title="所属部门" field="departmentName"></vxe-column>
           <vxe-column min-width="160" align="center" title="项目经理" field="projectManagerName"></vxe-column>
 			<vxe-column min-width="100" title="状态" fixed="right" align="center" field="type">
 				<template #default="scope">
@@ -63,8 +90,8 @@
                 <el-button v-if="
                       scope.row.type === '5' || scope.row.type === '4' || scope.row.type === '3'" text type="primary" @click="del(scope.row.id)">删除</el-button>
               </div>
-				<el-button v-if="hasPermission('reimburseRegister:edit') && scope.row.createById === $store.state.user.id && (scope.row.type === '1' || scope.row.type === '3' )" text type="primary"   @click="editForm(scope.row)">修改</el-button>
-				<el-button v-if="hasPermission('reimburseRegister:edit') && scope.row.createById === $store.state.user.id && (scope.row.type === '2')" text type="primary"  @click="reback(scope.row)">撤回</el-button>
+<!--				<el-button v-if="hasPermission('reimburseRegister:edit') && scope.row.createById === $store.state.user.id && (scope.row.type === '1' || scope.row.type === '3' )" text type="primary"   @click="editForm(scope.row)">修改</el-button>-->
+<!--				<el-button v-if="hasPermission('reimburseRegister:edit') && scope.row.createById === $store.state.user.id && (scope.row.type === '2')" text type="primary"  @click="reback(scope.row)">撤回</el-button>-->
             </template>
           </vxe-column>
         </vxe-table>
@@ -84,6 +111,7 @@
 </template>
 
 <script>
+	import SelectTree from '@/components/treeSelect/treeSelect.vue'
   import registerService from '@/api/human/register/RegisterService'
   import processService from '@/api/flowable/ProcessService'
   import userService from '@/api/sys/UserService'
@@ -95,7 +123,9 @@
       return {
         num: 0,
         searchForm: {
-          projectNumber: '',
+			name: '',
+			department: '',
+			mobilePhone: '',
         },
         dataList: [],
         tablePage: {
@@ -116,6 +146,7 @@
     created () {
     },
     components: {
+		SelectTree,
 		RegistrationEditForm
     },
     computed: {
@@ -143,6 +174,10 @@
       // 新增
       add () {
       },
+		// 查看
+		view (id) {
+			this.$refs.registrationEditForm.init('view', id)
+		},
       // 修改
       edit (id) {
         id = id || this.$refs.clientTable.getCheckboxRecords().map(item => {

+ 1 - 0
src/views/human/practice/reimburseRegister/ProgramPageForm.vue

@@ -48,6 +48,7 @@
 			  <vxe-column min-width="160" align="center" title="实习天数" field="internshipDays"></vxe-column>
 			  <vxe-column min-width="160" align="center" title="备注" field="remarks"></vxe-column>
 			  <vxe-column min-width="160" align="center" title="项目经理" field="projectManagerName"></vxe-column>
+			  <vxe-column min-width="160" align="center" style="display: none" title="总金额" field="allMoney"></vxe-column>
           </vxe-table>
           <vxe-pager
             background

+ 15 - 3
src/views/human/practice/reimburseRegister/ReimburseRegisterAddForm.vue

@@ -32,11 +32,23 @@
 				</el-col>
 				<el-col :span="12">
 					<el-form-item label="备注" prop="remarks" :rules="[]">
-						<el-input type="textarea" v-model="inputForm.remarks"></el-input>
+						<el-input type="textarea"
+								  maxlength="200" placeholder="请输入简介"
+								  show-word-limit v-model="inputForm.remarks"></el-input>
 					</el-form-item>
 				</el-col>
-				<el-form v-if="status === 'audit' || status === 'taskFormDetail'" style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
-						 :disabled="status !== 'audit'" label-width="110px" @submit.native.prevent>
+				<el-form v-if="status === 'audit'" style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+						 label-width="110px" @submit.native.prevent>
+					<el-col :span="12">
+						<el-form-item label="是否实习结束" prop="completePractice" :rules="[{required: true, message: '是否实习结束不能为空', trigger: 'change'}]">
+							<el-radio-group v-model="inputForm.completePractice">
+								<el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" >{{item.label}}</el-radio>
+							</el-radio-group>
+						</el-form-item>
+					</el-col>
+				</el-form>
+				<el-form v-else style="width: 100%" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+						 :disabled="true" label-width="110px" @submit.native.prevent>
 					<el-col :span="12">
 						<el-form-item label="是否实习结束" prop="completePractice" :rules="[{required: true, message: '是否实习结束不能为空', trigger: 'change'}]">
 							<el-radio-group v-model="inputForm.completePractice">

+ 3 - 3
src/views/human/practice/reimburseRegister/ReimburseRegisterChoose.vue

@@ -23,7 +23,7 @@
 								<el-button @click="resetSearch()" icon="el-icon-refresh-right">重置</el-button>
 							</el-form-item>
 						</el-form>
-						<div style="margin-bottom: 10px"><span style="color: #F56C6C">注:最多选择 10 条数据</span></div>
+<!--						<div style="margin-bottom: 10px"><span style="color: #F56C6C">注:最多选择 10 条数据</span></div>-->
 						<vxe-table
 							border="inner"
 							auto-resize
@@ -43,7 +43,7 @@
 							:sort-config="{remote:true}"
 							:data="dataList">
 							<vxe-column type="seq" width="60" title="序号"></vxe-column>
-							<vxe-column type="checkbox" width="60px"></vxe-column>
+							<vxe-column type="radio" 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>
@@ -155,7 +155,7 @@
 			list () {
 				this.loading = true
 				this.searchForm.type = '5'
-				reimburseRegisterService.list({
+				reimburseRegisterService.list2({
 					'current': this.tablePage.currentPage,
 					'size': this.tablePage.pageSize,
 					'orders': this.tablePage.orders,

+ 32 - 16
src/views/human/practice/reimburseRegister/ReimburseRegisterEditForm.vue

@@ -11,13 +11,13 @@
 			v-model="visible">
 			<el-row>
 				<el-row>
-					<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''" :disabled="status === 'audit' || status === 'taskFormDetail'"
+					<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''" :disabled="status === 'audit' || status === 'taskFormDetail' || method==='view'"
 							 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="reimbuserName" :rules="[{required: true, message: '登记名称不能为空', trigger: 'blur'}]">
+								<el-form-item label="报销登记描述" prop="reimbuserName" :rules="[{required: true, message: '报销登记描述不能为空', trigger: 'blur'}]">
 									<el-input v-model="inputForm.reimbuserName"></el-input>
 								</el-form-item>
 							</el-col>
@@ -26,16 +26,17 @@
 											  :rules="[
 								  	{required: true, message: '项目经理不能为空', trigger: 'change'}
                    ]">
-									<UserSelectSignatory style="width: 100%" ref="userSelect1" :disabled="status === 'audit' || status === 'taskFormDetail'"
-														 :readonly="true" :limit='1' :modelValue="inputForm.projectManager"
-														 @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelectSignatory>
-								</el-form-item>
-							</el-col>
-							<el-col :span="12">
-								<el-form-item label="银行卡号" prop="bankCardNumber" :rules="[{required: true, message: '银行卡号不能为空', trigger: 'blur'}]">
-									<el-input v-model="inputForm.bankCardNumber"></el-input>
+<!--									<UserSelectSignatory style="width: 100%" ref="userSelect1" :disabled="status === 'audit' || status === 'taskFormDetail'"-->
+<!--														 :readonly="true" :limit='1' :modelValue="inputForm.projectManager"-->
+<!--														 @update:modelValue='(value, label) => {inputForm.projectManager = value}'></UserSelectSignatory>-->
+									<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="bankCardNumber" :rules="[{required: true, message: '银行卡号不能为空', trigger: 'blur'}]">-->
+<!--									<el-input v-model="inputForm.bankCardNumber"></el-input>-->
+<!--								</el-form-item>-->
+<!--							</el-col>-->
 							<el-col :span="12">
 								<el-form-item label="总报销金额" prop="allReimbursementAmount" :rules="[{required: true, message: '总报销金额不能为空', trigger: 'blur'}]">
 									<el-input v-model="inputForm.allReimbursementAmount" :disabled="true"></el-input>
@@ -43,7 +44,16 @@
 							</el-col>
 							<el-col :span="12">
 								<el-form-item label="备注" prop="remarks" :rules="[]">
-									<el-input type="textarea" v-model="inputForm.remarks"></el-input>
+									<el-input type="textarea"
+											  maxlength="200" placeholder="请输入简介"
+											  show-word-limit v-model="inputForm.remarks"></el-input>
+								</el-form-item>
+							</el-col>
+							<el-col :span="12">
+								<el-form-item label="是否实习结束" prop="completePractice" :rules="[{required: true, message: '是否实习结束不能为空', trigger: 'change'}]">
+									<el-radio-group v-model="inputForm.completePractice">
+										<el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" >{{item.label}}</el-radio>
+									</el-radio-group>
 								</el-form-item>
 							</el-col>
 						</el-row>
@@ -77,12 +87,12 @@
 									</vxe-table-column>
 									<vxe-table-column field="createName" align="center" title="创建人" :edit-render="{}">
 										<template v-slot:edit="scope">
-											<el-input :readonly="true" placeholder="请填写创建人" v-model="scope.row.createName"/>
+											<el-input :readonly="true" placeholder="请填写创建人" :disabled="true" v-model="scope.row.createName"/>
 										</template>
 									</vxe-table-column>
-									<vxe-table-column field="internshipDays" align="center" title="实习天数" :edit-render="{}">
+									<vxe-table-column field="internshipDays" align="center" :disabled="true" title="实习天数" :edit-render="{}">
 										<template v-slot:edit="scope">
-											<el-input
+											<el-input :disabled="true"
 												v-on:input="scope.row.internshipDays=scope.row.internshipDays.replace(/[^\d.]/g,'')
 							  .replace(/^\./g,'')
 							  .replace(/\.{2,}/g,'.')
@@ -100,7 +110,7 @@
 									</vxe-table-column>
 									<vxe-table-column   field="reimbursementAmount" align="center"   title="报销金额(元)" :edit-render="{}">
 										<template v-slot:edit="scope">
-											<el-input
+											<el-input :disabled="true"
 												v-on:input="scope.row.reimbursementAmount=scope.row.reimbursementAmount.replace(/[^\d.]/g,'')
 							  .replace(/^\./g,'')
 							  .replace(/\.{2,}/g,'.')
@@ -140,6 +150,7 @@
 </template>
 
 <script>
+	import UserSelect2 from '@/components/userSelect'
 	import ProgramPageForm from './ProgramPageForm'
 	import reimburseRegisterService from '@/api/human/register/ReimburseRegisterService'
 	import UserSelectSignatory from '@/views/cw/workClientInfo/clientUserSelect'
@@ -189,7 +200,7 @@
 		created () {
 		},
 		components: {
-			UserSelectSignatory,
+			UserSelect2,
 			ProgramPageForm,
 		},
 		computed: {
@@ -248,6 +259,8 @@
 					this.title = `实习报销登记`
 				} else if (method === 'edit') {
 					this.title = '实习报销登记修改'
+				} else if (method === 'view') {
+					this.title = '查看实习报销登记'
 				}
 				this.inputForm.id = id
 				this.visible = true
@@ -336,13 +349,16 @@
 						r.createName = item.createName
 						r.internshipDays = item.internshipDays
 						r.workLogId = item.id
+						r.reimbursementAmount = item.allMoney
 						this.inputForm.detailList[this.programRow] = r
+						this.baseKey = Math.random()
 					} else {
 						let r = {
 							workName: item.workName,
 							createName: item.createName,
 							internshipDays: item.internshipDays,
 							workLogId: item.id,
+							reimbursementAmount: item.allMoney
 						}
 						this.$refs.baseTable.insertAt(r)
 						this.inputForm.detailList.push(r)

+ 57 - 4
src/views/human/practice/reimburseRegister/ReimburseRegisterList.vue

@@ -2,11 +2,35 @@
 	<div class="page">
 		<el-form :inline="true" class="query-form m-b-10" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
 			<!-- 搜索框-->
-			<el-form-item label="项目编号" prop="projectNumber">
-				<el-input v-model="searchForm.projectNumber" placeholder="请输入项目编号" clearable></el-input>
+			<el-form-item label="报销登记名称" prop="reimbuserName">
+				<el-input v-model="searchForm.reimbuserName" placeholder="请输入报销登记名称" clearable></el-input>
+			</el-form-item>
+			<el-form-item label="报销人" prop="createById">
+				<!--        <el-input  v-model="searchForm.createBy.name" placeholder="请输入创建人" clearable></el-input>-->
+				<UserSelect2 :limit='1' :modelValue="searchForm.createById"
+							 @update:modelValue='(value, label) => {searchForm.createById = value}'></UserSelect2>
+			</el-form-item>
+			<el-form-item v-if="showHideItem" label="报销金额" prop="amounts">
+				<InputNumber :disabled="false" :precision="num" :value="searchForm.amounts"
+							 @changefrom="(val)=>{searchForm.amounts[0]=val}"
+							 @changeto="(val)=>{searchForm.amounts[1]=val}"
+				></InputNumber>
+			</el-form-item>
+			<el-form-item v-if="showHideItem" label="创建时间" prop="createDates">
+				<el-date-picker
+					placement="bottom-start"
+					format="YYYY-MM-DD"
+					value-format="YYYY-MM-DD"
+					v-model="searchForm.createDates"
+					type="datetimerange"
+					range-separator="至"
+					start-placeholder="开始日期"
+					end-placeholder="结束日期">
+				</el-date-picker>
 			</el-form-item>
 
 			<el-form-item>
+				<el-button type="default" @click="showHide" :icon="showHideIcon">{{showHideName}}</el-button>
 				<el-button type="primary" @click="refreshList()" icon="el-icon-search">查询</el-button>
 				<el-button @click="resetSearch()" icon="el-icon-refresh-right">重置</el-button>
 			</el-form-item>
@@ -43,7 +67,11 @@
 					:data="dataList"
 					:checkbox-config="{}">
 					<vxe-column type="seq" width="60" title="序号"></vxe-column>
-					<vxe-column min-width="160" align="center" title="报销登记名称" field="reimbuserName"></vxe-column>
+					<vxe-column min-width="160" align="center" title="报销登记名称" field="reimbuserName">
+						<template #default="scope">
+							<el-link  type="primary" :underline="false" @click="view(scope.row.id)">{{scope.row.reimbuserName}}</el-link>
+						</template>
+					</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>
 					<vxe-column min-width="160" align="center" title="总报销金额" field="allReimbursementAmount"></vxe-column>
@@ -89,6 +117,8 @@
 </template>
 
 <script>
+	import InputNumber from '@/views/workContract/InputNumber.vue'
+	import UserSelect2 from '@/components/userSelect'
 	import reimburseRegisterService from '@/api/human/register/ReimburseRegisterService'
 	import processService from '@/api/flowable/ProcessService'
 	import userService from '@/api/sys/UserService'
@@ -98,9 +128,16 @@
 	export default {
 		data () {
 			return {
+				searchVisible: true,
+				showHideItem: false,
+				showHideIcon: 'el-icon-arrow-down',
+				showHideName: '展示',
 				num: 0,
 				searchForm: {
-					projectNumber: '',
+					reimbuserName: '',
+					createById: '',
+					amounts: [],
+					createDates: [],
 				},
 				dataList: [],
 				tablePage: {
@@ -120,6 +157,8 @@
 		created () {
 		},
 		components: {
+			InputNumber,
+			UserSelect2,
 			ReimburseRegisterEditForm
 		},
 		computed: {
@@ -144,9 +183,23 @@
 			this.refreshList()
 		},
 		methods: {
+			showHide () {
+				if (this.showHideItem === false) {
+					this.showHideItem = true
+					this.showHideIcon = 'el-icon-arrow-up'
+					this.showHideName = '隐藏'
+				} else {
+					this.showHideItem = false
+					this.showHideIcon = 'el-icon-arrow-down'
+					this.showHideName = '展示'
+				}
+			},
 			// 新增
 			add () {
 			},
+			view (id) {
+				this.$refs.reimburseRegisterEditForm.init('view', id)
+			},
 			// 修改
 			editForm (id) {
 				id = id || this.$refs.clientTable.getCheckboxRecords().map(item => {

+ 149 - 0
src/views/human/practice/reimburseRegister/ReimburseRegisterRadioChoose.vue

@@ -0,0 +1,149 @@
+<template>
+	<div>
+		<el-dialog
+			title="选择项目"
+			:close-on-click-modal="false"
+			draggable
+			width="1100px"
+			height="500px"
+			@close="close"
+			append-to-body
+			v-model="visible">
+			<div style="height: calc(100% - 80px);">
+				<el-form :inline="true" class="query-form" ref="searchForm" :model="searchForm" @submit.native.prevent>
+					<!-- 搜索框-->
+					<el-form-item label="项目名称" prop="projectName">
+						<el-input v-model="searchForm.projectName" placeholder="请输入项目名称" clearable></el-input>
+					</el-form-item>
+
+					<el-form-item>
+						<el-button type="primary" @click="list()" icon="el-icon-search">查询</el-button>
+						<el-button @click="resetSearch()" icon="el-icon-refresh-right">重置</el-button>
+					</el-form-item>
+				</el-form>
+
+				<vxe-table
+					border="inner"
+					auto-resize
+					resizable
+					height="400px"
+					:loading="loading"
+					ref="projectTable"
+					show-header-overflow
+					show-overflow
+					highlight-hover-row
+					:menu-config="{}"
+					:print-config="{}"
+					:sort-config="{remote:true}"
+					:data="dataList"
+					:row-config="{isCurrent: true}"
+					:radio-config="{trigger: 'row'}"
+				>
+					<vxe-column type="seq" width="60" title="序号"></vxe-column>
+					<vxe-column type="radio" 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>
+					<vxe-column min-width="160" align="center" title="总报销金额" field="allReimbursementAmount"></vxe-column>
+					<vxe-column min-width="160" align="center" title="银行卡号" field="bankCardNumber"></vxe-column>
+					<vxe-column min-width="160" align="center" title="创建时间" field="createTime"></vxe-column>
+
+				</vxe-table>
+				<vxe-pager
+					background
+					:current-page="tablePage.currentPage"
+					:page-size="tablePage.pageSize"
+					:total="tablePage.total"
+					:page-sizes="[10, 20, 100, 1000, {label: '全量数据', value: 1000000}]"
+					:layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
+					@page-change="currentChangeHandle">
+				</vxe-pager>
+			</div>
+			<template #footer>
+			<span class="dialog-footer">
+			  <el-button @click="close()" icon="el-icon-circle-close">关闭</el-button>
+			  <el-button type="primary" v-if="method != 'view'" @click="getProject()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+			</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import reimburseRegisterService from '@/api/human/register/ReimburseRegisterService'
+	export default {
+		data () {
+			return {
+				title: '',
+				method: '',
+				visible: false,
+				loading: false,
+				tablePage: {
+					total: 0,
+					currentPage: 1,
+					pageSize: 10,
+					orders: []
+				},
+				dataList: [],
+				searchForm: {
+					projectName: '',
+				}
+			}
+		},
+		created () {
+		},
+		components: {
+		},
+		methods: {
+			init () {
+				this.visible = true
+				this.list()
+			},
+			// 表单提交
+			getProject () {
+				let row = this.$refs.projectTable.getRadioRecord()
+				if (this.commonJS.isEmpty(row)) {
+					this.$message.error('请选择一条数据')
+					return
+				}
+				this.close()
+				this.$emit('getProgram', row)
+			},
+			list () {
+				this.loading = true
+				// this.searchForm.createId = this.$store.state.user.id
+				this.searchForm.status = '5'
+				reimburseRegisterService.list2({
+					'current': this.tablePage.currentPage,
+					'size': this.tablePage.pageSize,
+					'orders': this.tablePage.orders,
+					...this.searchForm
+				}).then((data) => {
+					this.dataList = data.records
+					this.tablePage.total = data.total
+					this.loading = false
+				})
+			},
+			// 当前页
+			currentChangeHandle ({currentPage, pageSize}) {
+				this.tablePage.currentPage = currentPage
+				this.tablePage.pageSize = pageSize
+				this.list()
+			},
+			resetSearch () {
+				this.$refs.searchForm.resetFields()
+				this.list()
+			},
+			close () {
+				this.$refs.searchForm.resetFields()
+				this.visible = false
+			}
+		}
+	}
+</script>
+<style scoped>
+	/deep/ .el-dialog__body {
+		padding-top: 0px;
+		padding-bottom: 15px;
+	}
+</style>