浏览代码

报销调整

huangguoce 4 月之前
父节点
当前提交
07fcd3793c

+ 22 - 5
src/views/ccpm/reimbursement/info/InfoList.vue

@@ -136,9 +136,9 @@
 					<vxe-column width="130" title="报销编号" field="no" align="center">
 						<template #default="scope">
 							<el-link type="primary" :underline="false" v-if="hasPermission('ccpm:info:view')"
-								@click="view(scope.row.id)">{{ scope.row.no }}</el-link>
+								@click="view(scope.row)">{{ scope.row.no }}</el-link>
 							<el-link type="primary" :underline="false" v-else-if="hasPermission('ccpm:info:view')"
-								@click="view(scope.row.id)">{{ scope.row.no }}</el-link>
+								@click="view(scope.row)">{{ scope.row.no }}</el-link>
 							<span v-else>{{ scope.row.no }}</span>
 						</template>
 					</vxe-column>
@@ -253,6 +253,9 @@
 				<!--        <ProgramPageForm ref="programPageForm" @getProgram="getProgram"></ProgramPageForm>-->
 				<ProjectChooseForm ref="projectChooseForm" @getProgram="getProgram"></ProjectChooseForm>
 				<InfoForm ref="infoForm" @refreshDataList="refreshList"></InfoForm>
+				<NewInfoForm ref="newInfoForm" @refreshDataList="refreshList"></NewInfoForm>
+
+
 				<!--        <ProjectForm ref="projectForm" @refreshDataList="refreshList"></ProjectForm>-->
 				<ProjectRecordsForm ref="projectRecordsForm" @refreshDataList="refreshList"></ProjectRecordsForm>
 				<ContractNameForm ref="contractNameForm"></ContractNameForm>
@@ -271,6 +274,7 @@ import UserSelect from '@/components/userSelect'
 import SelectTree from '@/components/treeSelect/treeSelect.vue'
 import ProjectChooseForm from '../projectInfo/ProjectChooseForm'
 import InfoForm from './InfoUpdateForm'
+import NewInfoForm from './NewInfoUpdateForm'
 import taskService from '@/api/flowable/taskService'
 import processService from '@/api/flowable/processService'
 import pick from 'lodash.pick'
@@ -355,6 +359,7 @@ export default {
 		// ProgramPageForm,
 		ProjectChooseForm,
 		InfoForm,
+		NewInfoForm,
 		// ProjectForm,
 		ProjectRecordsForm,
 		UserSelect,
@@ -756,12 +761,24 @@ export default {
 			})
 		},
 		// 查看
-		view(id) {
-			this.$refs.infoForm.init('view', id)
+		view(row) {
+			let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
+			let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
+			if (newVersionFlag) {
+				this.$refs.newInfoForm.init('view', row.id)
+			} else {
+				this.$refs.infoForm.init('view', row.id)
+			}
 		},
 		//管理员修改
 		editForm(row) {
-			this.$refs.infoForm.init('edit', row.id)
+			let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
+			let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
+			if (newVersionFlag) {
+				this.$refs.newInfoForm.init('edit', row.id)
+			} else {
+				this.$refs.infoForm.init('edit', row.id)
+			}
 		},
 		// 查看报销项目
 		viewProject(id) {

文件差异内容过多而无法显示
+ 2464 - 0
src/views/ccpm/reimbursement/info/NewInfoUpdateForm.vue


+ 41 - 3
src/views/ccpm/reimbursement/info/NewReimbursementForm.vue

@@ -356,7 +356,8 @@
               class="vxe-table-element" :data="inputForm.detailInfoOthers" style="margin-left: 5em"
               :key="detailKeyOthers" highlight-current-row
               :edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-              :edit-rules="validRules" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+              :edit-rules="validRules"
+              :expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
               <vxe-column type="expand" width="80">
                 <template #content="{ row, rowIndex }">
                   <InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -860,7 +861,9 @@ export default {
       isKjsz: false,
       isXdj: false,
       payment: '',
-      isConfirm: ""
+      isConfirm: "",
+      tableRef: null,
+      tableData: [],
     }
   },
   provide() {
@@ -1023,11 +1026,16 @@ export default {
           //  获取当前审核节点
           this.commonApi.getTaskNameByProcInsId(this.inputForm.procInsId).then(name => {
             this.currentNodeName = name
-            if (name == "综合管理部主任审核") {
+
+            if (name == "综合管理部主任审核" && this.status != "taskFormDetail") {
               this.isConfirm = 1
             } else {
               this.isConfirm = 2
             }
+
+            if (this.status == "startAndHold" || this.method == "add") {
+              this.isConfirm = 3
+            }
           })
           // 获取文件确认状态
           this.reimbursementService.getListByUser(this.inputForm.id).then(data => {
@@ -2524,6 +2532,36 @@ export default {
         this.inputForm.files.push(...files)
       }
     },
+    handleCheckAmount() {
+      let countFlag = false
+      let countIndex = 0
+      this.handleTableInfo(this.inputForm.sourceType)
+      this.tableData.forEach((element, index) => {
+
+        if (element.reimbursementType == 1) {
+          let files = this.inputForm.invoiceReimbursementFiles.filter(item => {
+            return item.remarks == element.uniqueId
+          })
+          let count = 0
+          files.forEach((item) => {
+            if (this.commonJS.isNotEmpty(item.count)) {
+              count += Number(item.count)
+            }
+          });
+          if (count != element.number) {
+            countFlag = true
+            countIndex = index
+          }
+        }
+      })
+      if (countFlag) {
+        this.$message.warning(`第${countIndex + 1}行报销费用与发票金额不一致`);
+        this.loading = false
+        throw new Error(`第${countIndex + 1}行报销费用与发票金额不一致`);
+      } else {
+        this.loading = false
+      }
+    }
   }
 }
 </script>

+ 8 - 7
src/views/common/NewDigitalInvoiceUploadComponent.vue

@@ -2,13 +2,14 @@
 <template>
 	<div :key="uploadKey">
 		<!-- <el-divider v-if="showDivider" content-position="left"><i class="el-icon-document"></i> {{ dividerName }} -->
-		<el-upload ref="upload" style="display: inline-block;" :show-header="'status'" action="" :limit="999"
+		<el-upload ref="upload" style="display: inline-block; " :show-header="'status'" action="" :limit="999"
 			:on-success="handleSuccessUpload" :http-request="httpRequest" multiple :on-exceed="(files, fileList) => {
 				$message.warning(`当前限制选择 999 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
 			}" :show-file-list="false" :before-upload="beforeUpload" :on-change="changes" :on-progress="uploadVideoProcess"
 			:file-list="fileList">
 			<template v-if="auth === 'view' && uploadFlag === false" #tip>
-				<el-button :loading="loading" type="primary" size="default" :disabled="true"> 点击上传 </el-button>
+				<el-button v-show="false" :loading="loading" type="primary" size="default" :disabled="true"> 点击上传
+				</el-button>
 			</template>
 			<template v-else #trigger>
 				<el-button v-show="false" class="upload-btn" :loading="loading" type="primary" size="default"> 点击上传
@@ -23,7 +24,7 @@
 				@click="allSelect('1')">全部确认</el-button> -->
 		<!-- </el-divider> -->
 
-		<div style="height: calc(100% - 80px);margin-top: 10px">
+		<div style="height: calc(100% - 80px);margin-top: -20px">
 			<!-- 进度条 -->
 			<el-progress style="margin-left: 5em" v-if="progressFlag" :percentage="loadProgress"></el-progress>
 			<el-table :row-class-name="tableRowClassName" ref="uploadTable" v-loading="loading" :key="tableKey"
@@ -129,11 +130,11 @@
 								text type="primary" key="btn01" icon="el-icon-check" size="small"
 								@click="changeStatus(scope.row, '1')" style="margin-right: 12px;">确认</el-button>
 							<el-button v-if="isConfirm == 1 && scope.row.confirmStatus == '1'" text type="danger"
-								key="btn02" icon="el-icon-close" size="small" @click="changeStatus(scope.row, '0')"
-								style="margin-right: 12px;">取消确认</el-button>
+								key="btn02" icon="el-icon-close" size="small"
+								@click="changeStatus(scope.row, '0')">取消确认</el-button>
+							<el-button style="margin-right: 12px;" text type="primary" key="01" icon="el-icon-download"
+								size="small" @click="toHref(scope.row)">下载</el-button>
 						</el-form>
-						<el-button text type="primary" key="01" icon="el-icon-download" size="small"
-							@click="toHref(scope.row)">下载</el-button>
 						<el-button text type="primary" key="02" icon="el-icon-delete" size="small"
 							@click="deleteFileById(scope.row, scope.$index, this.dataListNew)"
 							:disabled="auth === 'view' && delFlag === false && createBy !== scope.row.createBy.name">删除</el-button>

+ 3 - 1
src/views/common/NewUpLoadComponent.vue

@@ -15,7 +15,7 @@
       </template>
     </el-upload>
 
-    <div style="height: calc(100% - 80px);margin-top: 10px">
+    <div style="height: calc(100% - 80px);margin-top: -20px">
       <!-- 进度条 -->
       <el-progress style="margin-left: 5em" v-if="progressFlag" :percentage="loadProgress"></el-progress>
       <el-table ref="uploadTable" v-loading="loading" :key="tableKey" :data="dataListNew">
@@ -207,6 +207,8 @@ export default {
 
 
       for await (let item of fileList) {
+        console.log(item);
+
         if (item.remarks == uniqueId) {
           if (item.url && item.url !== null && item.url !== undefined && item.url !== "") {
             await this.ossService.getFileSizeByUrl(item.url).then((data) => {

+ 24 - 5
src/views/consultancy/reimbursement/info/InfoList.vue

@@ -134,9 +134,9 @@
 					<vxe-column width="130" title="报销编号" field="no" align="center">
 						<template #default="scope">
 							<el-link type="primary" :underline="false" v-if="hasPermission('consultancy:info:view')"
-								@click="view(scope.row.id)">{{ scope.row.no }}</el-link>
+								@click="view(scope.row)">{{ scope.row.no }}</el-link>
 							<el-link type="primary" :underline="false"
-								v-else-if="hasPermission('consultancy:info:view')" @click="view(scope.row.id)">{{
+								v-else-if="hasPermission('consultancy:info:view')" @click="view(scope.row)">{{
 									scope.row.no }}</el-link>
 							<span v-else>{{ scope.row.no }}</span>
 						</template>
@@ -254,7 +254,9 @@
 				<!--        <ProgramPageForm ref="programPageForm" @getProgram="getProgram"></ProgramPageForm>-->
 				<ProjectChooseForm ref="projectChooseForm" @getProgram="getProgram"></ProjectChooseForm>
 				<InfoForm ref="infoForm" @refreshDataList="refreshList"></InfoForm>
+				<NewInfoForm ref="newInfoForm" @refreshDataList="refreshList"></NewInfoForm>
 				<InfoUpdateForm ref="infoUpdateForm" @refreshDataList="refreshList"></InfoUpdateForm>
+				<NewInfoUpdateForm ref="newInfoUpdateForm" @refreshDataList="refreshList"></NewInfoUpdateForm>
 				<!--        <ProjectForm ref="projectForm" @refreshDataList="refreshList"></ProjectForm>-->
 				<ProjectRecordsForm ref="projectRecordsForm" @refreshDataList="refreshList"></ProjectRecordsForm>
 				<ContractNameForm ref="contractNameForm"></ContractNameForm>
@@ -273,6 +275,7 @@ import UserSelect from '@/components/userSelect'
 import SelectTree from '@/components/treeSelect/treeSelect.vue'
 import ProjectChooseForm from '../projectInfo/ProjectChooseForm'
 import InfoForm from './InfoForm'
+import NewInfoForm from './NewInfoForm'
 import taskService from '@/api/flowable/taskService'
 import processService from '@/api/flowable/processService'
 import pick from 'lodash.pick'
@@ -280,6 +283,7 @@ import ProjectRecordsForm from '@/views/cw/projectRecords/ProjectRecordsForm'
 import ContractNameForm from '@/views/cw/workContract/ContractNameForm'
 import userService from '@/api/sys/UserService'
 import InfoUpdateForm from "./InfoUpdateForm";
+import NewInfoUpdateForm from "./NewInfoUpdateForm";
 import UserSelect1 from '@/views/utils/UserTreeSelect'
 import UserSelect2 from '@/views/utils/UserTreeSelect'
 import dayjs from 'dayjs';
@@ -354,11 +358,13 @@ export default {
 		// ProgramPageForm,
 		ProjectChooseForm,
 		InfoForm,
+		NewInfoForm,
 		// ProjectForm,
 		ProjectRecordsForm,
 		UserSelect,
 		ContractNameForm,
 		InfoUpdateForm,
+		NewInfoUpdateForm,
 		UserSelect1,
 		UserSelect2,
 	},
@@ -635,12 +641,25 @@ export default {
 			})
 		},
 		// 查看
-		view(id) {
-			this.$refs.infoForm.init('view', id)
+		view(row) {
+			let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
+			let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
+			if (newVersionFlag) {
+				this.$refs.newInfoForm.init('view', row.id)
+			} else {
+				this.$refs.infoForm.init('view', row.id)
+			}
 		},
 		//修改
 		editForm(row) {
-			this.$refs.infoUpdateForm.init('edit', row.id)
+			let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
+			let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
+			if (newVersionFlag) {
+				this.$refs.newInfoUpdateForm.init('edit', row.id)
+			} else {
+				this.$refs.infoUpdateForm.init('edit', row.id)
+
+			}
 		},
 		// 查看报销项目
 		viewProject(id) {

文件差异内容过多而无法显示
+ 1033 - 0
src/views/consultancy/reimbursement/info/NewInfoForm.vue


文件差异内容过多而无法显示
+ 2394 - 0
src/views/consultancy/reimbursement/info/NewInfoUpdateForm.vue


+ 37 - 2
src/views/consultancy/reimbursement/info/NewReimbursementForm.vue

@@ -357,7 +357,8 @@
               class="vxe-table-element" :data="inputForm.detailInfoOthers" style="margin-left: 5em"
               :key="detailKeyOthers" highlight-current-row
               :edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-              :edit-rules="validRules" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+              :edit-rules="validRules"
+              :expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
               <vxe-column type="expand" width="80">
                 <template #content="{ row, rowIndex }">
                   <InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -1023,11 +1024,15 @@ export default {
           //  获取当前审核节点
           this.commonApi.getTaskNameByProcInsId(this.inputForm.procInsId).then(name => {
             this.currentNodeName = name
-            if (name == "综合管理部主任审核") {
+            if (name == "综合管理部主任审核" && this.status != "taskFormDetail") {
               this.isConfirm = 1
             } else {
               this.isConfirm = 2
             }
+
+            if (this.status == "startAndHold" || this.method == "add") {
+              this.isConfirm = 3
+            }
           })
           // 获取文件确认状态
           this.reimbursementService.getListByUser(this.inputForm.id).then(data => {
@@ -2466,6 +2471,36 @@ export default {
         this.inputForm.files.push(...files)
       }
     },
+    handleCheckAmount() {
+      let countFlag = false
+      let countIndex = 0
+      this.handleTableInfo(this.inputForm.sourceType)
+      this.tableData.forEach((element, index) => {
+
+        if (element.reimbursementType == 1) {
+          let files = this.inputForm.invoiceReimbursementFiles.filter(item => {
+            return item.remarks == element.uniqueId
+          })
+          let count = 0
+          files.forEach((item) => {
+            if (this.commonJS.isNotEmpty(item.count)) {
+              count += Number(item.count)
+            }
+          });
+          if (count != element.number) {
+            countFlag = true
+            countIndex = index
+          }
+        }
+      })
+      if (countFlag) {
+        this.$message.warning(`第${countIndex + 1}行报销费用与发票金额不一致`);
+        this.loading = false
+        throw new Error(`第${countIndex + 1}行报销费用与发票金额不一致`);
+      } else {
+        this.loading = false
+      }
+    }
   }
 }
 </script>

+ 26 - 5
src/views/cw/reimbursementApproval/info/InfoList.vue

@@ -136,10 +136,10 @@
 					<vxe-column min-width="130" title="报销编号" field="no" align="center">
 						<template #default="scope">
 							<el-link type="primary" :underline="false"
-								v-if="hasPermission('cw:reimbursement:info:view')" @click="view(scope.row.id)">{{
+								v-if="hasPermission('cw:reimbursement:info:view')" @click="view(scope.row)">{{
 									scope.row.no }}</el-link>
 							<el-link type="primary" :underline="false"
-								v-else-if="hasPermission('cw:reimbursement:info:view')" @click="view(scope.row.id)">{{
+								v-else-if="hasPermission('cw:reimbursement:info:view')" @click="view(scope.row)">{{
 									scope.row.no }}</el-link>
 							<span v-else>{{ scope.row.no }}</span>
 						</template>
@@ -266,9 +266,11 @@
 
 				<ProjectChooseForm ref="projectChooseForm" @getProgram="getProgram"></ProjectChooseForm>
 				<InfoForm ref="infoForm" @refreshDataList="refreshList"></InfoForm>
+				<NewInfoForm ref="newInfoForm" @refreshDataList="refreshList"></NewInfoForm>
 				<ProjectRecordsForm ref="projectRecordsForm" @refreshDataList="refreshList"></ProjectRecordsForm>
 				<ContractNameForm ref="contractNameForm"></ContractNameForm>
 				<InfoUpdateForm ref="infoUpdateForm" @refreshDataList="refreshList"></InfoUpdateForm>
+				<NewInfoUpdateForm ref="newInfoUpdateForm" @refreshDataList="refreshList"></NewInfoUpdateForm>
 				<ProjectListForm ref="projectListForm"></ProjectListForm>
 				<user-select1 ref="userSelect1" @doSubmit="selectUser1"></user-select1>
 				<user-select2 ref="userSelect2" @doSubmit="selectUser2"></user-select2>
@@ -284,6 +286,7 @@ import UserSelect from '@/components/userSelect'
 import SelectTree from '@/components/treeSelect/treeSelect.vue'
 import ProjectChooseForm from '../projectInfo/ProjectChooseForm'
 import InfoForm from './InfoForm'
+import NewInfoForm from './NewInfoForm'
 import taskService from '@/api/flowable/TaskService'
 import processService from '@/api/flowable/ProcessService'
 import pick from 'lodash.pick'
@@ -291,6 +294,7 @@ import ProjectRecordsForm from '../../projectRecords/ProjectRecordsForm'
 import ContractNameForm from '../../workContract/ContractNameForm'
 import userService from '@/api/sys/UserService'
 import InfoUpdateForm from './InfoUpdateForm'
+import NewInfoUpdateForm from './NewInfoUpdateForm'
 import ProjectListForm from './ProgramForm'
 import UserSelect1 from '@/views/utils/UserTreeSelect'
 import UserSelect2 from '@/views/utils/UserTreeSelect'
@@ -361,10 +365,12 @@ export default {
 		SelectTree,
 		ProjectChooseForm,
 		InfoForm,
+		NewInfoForm,
 		ProjectRecordsForm,
 		UserSelect,
 		ContractNameForm,
 		InfoUpdateForm,
+		NewInfoUpdateForm,
 		ProjectListForm,
 		UserSelect1,
 		UserSelect2,
@@ -710,11 +716,24 @@ export default {
 			})
 		},
 		// 查看
-		view(id) {
-			this.$refs.infoForm.init('view', id)
+		view(row) {
+			let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
+			let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
+			if (newVersionFlag) {
+				this.$refs.newInfoForm.init('view', row.id)
+			} else {
+				this.$refs.infoForm.init('view', row.id)
+
+			}
 		},
 		editForm(row) {
-			this.$refs.infoUpdateForm.init('edit', row.id)
+			let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
+			let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
+			if (newVersionFlag) {
+				this.$refs.newInfoUpdateForm.init('edit', row.id)
+			} else {
+				this.$refs.infoUpdateForm.init('edit', row.id)
+			}
 		},
 		// 查看报销项目
 		viewProject(id) {
@@ -832,6 +851,8 @@ export default {
 						}
 					}
 				}
+				console.log(row.approvalTime);
+
 				let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
 				let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
 				taskService.getTaskDef({

文件差异内容过多而无法显示
+ 1210 - 0
src/views/cw/reimbursementApproval/info/NewInfoForm.vue


文件差异内容过多而无法显示
+ 2875 - 0
src/views/cw/reimbursementApproval/info/NewInfoUpdateForm.vue


+ 66 - 12
src/views/cw/reimbursementApproval/info/NewReimbursementForm.vue

@@ -127,9 +127,32 @@
 							:key="detailKey" class="vxe-table-element" :data="inputForm.detailInfos"
 							style="margin-left: 5em" highlight-current-row
 							:edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-							:edit-rules="validRules">
+							:edit-rules="validRules"
+							:expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
+							<vxe-column type="expand" width="80">
+								<template #content="{ row, rowIndex }">
+									<InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
+										@changeConfirmList="changeConfirmList" @handleCount="handleCount"
+										@handleUploadSuccess="handleUploadSuccess" :ref="row.uniqueId + 'Upload'"
+										v-show="'1' === this.inputForm.reimbursementType">
+									</InvoiceReimbursementUpLoadComponent>
+
+
+									<UpLoadComponent @handleUploadSuccess="handleUploadSuccess"
+										v-if="row.reimbursementType == 0" :ref="row.uniqueId + 'UploadFiles'">
+									</UpLoadComponent>
+
+								</template>
+							</vxe-column>
 							<vxe-table-column field="userName" title="报销人" show-overflow="title"></vxe-table-column>
 							<vxe-table-column field="deptName" title="报销部门" show-overflow="title"></vxe-table-column>
+							<vxe-table-column field="reimbursementType" title="报销类型" :edit-render="{}"
+								show-overflow="title">
+								<template #default="{ row }">
+									<span>{{ $dictUtils.getDictLabel('reimbursement_type', row.reimbursementType,
+										'') }}</span>
+								</template>
+							</vxe-table-column>
 							<vxe-table-column field="typeName" title="报销类别" show-overflow="title"></vxe-table-column>
 							<vxe-table-column field="projectName" title="报销项目" show-overflow="title">
 								<template #edit="scope">
@@ -163,7 +186,8 @@
 							:key="detailKey" class="vxe-table-element" :data="inputForm.detailInfos"
 							style="margin-left: 5em" highlight-current-row
 							:edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-							:edit-rules="validRules" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+							:edit-rules="validRules"
+							:expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
 							<vxe-column type="expand" width="80">
 								<template #content="{ row, rowIndex }">
 									<InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -360,7 +384,8 @@
 							ref="detailTableReport" :key="detailKeyReport" class="vxe-table-element"
 							:data="inputForm.detailInfoReports" style="margin-left: 5em" highlight-current-row
 							:edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-							:edit-rules="validRules" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+							:edit-rules="validRules"
+							:expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
 							<vxe-column type="expand" width="80">
 								<template #content="{ row, rowIndex }">
 									<InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -476,7 +501,8 @@
 							ref="detailTableOthers" class="vxe-table-element" :data="inputForm.detailInfoOthers"
 							style="margin-left: 5em" :key="detailKeyOthers" highlight-current-row
 							:edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-							:edit-rules="validRules" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+							:edit-rules="validRules"
+							:expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
 							<vxe-column type="expand" width="80">
 								<template #content="{ row, rowIndex }">
 									<InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -1258,18 +1284,17 @@ export default {
 					this.handleTableInfo(this.inputForm.sourceType)
 					//  获取当前审核节点
 					this.commonApi.getTaskNameByProcInsId(this.inputForm.procInsId).then(name => {
-						console.log(name);
-						console.log(name);
-						console.log(name);
-						console.log(name);
-						console.log(name);
-
 						this.currentNodeName = name
-						if (name == "综合管理部主任审批") {
+
+						if (name == "综合管理部主任审批" && this.status != "taskFormDetail") {
 							this.isConfirm = 1
 						} else {
 							this.isConfirm = 2
 						}
+
+						if (this.status == "startAndHold" || this.method == "add") {
+							this.isConfirm = 3
+						}
 					})
 					// 获取文件确认状态
 					this.invoiceConfirmStatusService.getListByUser(this.inputForm.id).then(data => {
@@ -1453,7 +1478,6 @@ export default {
 			if (row.reimbursementType == 0) {
 				this.inputForm.files = this.inputForm.files.filter(item => item.remarks != row.uniqueId)
 			}
-
 			if (type === 'detail') {
 				this.$refs.detailTable.remove(row)
 				this.inputForm.detailInfos.splice(rowIndex, 1)
@@ -3082,6 +3106,36 @@ export default {
 				this.inputForm.files.push(...files)
 			}
 		},
+		handleCheckAmount() {
+			let countFlag = false
+			let countIndex = 0
+			this.handleTableInfo(this.inputForm.sourceType)
+			this.tableData.forEach((element, index) => {
+
+				if (element.reimbursementType == 1) {
+					let files = this.inputForm.invoiceReimbursementFiles.filter(item => {
+						return item.remarks == element.uniqueId
+					})
+					let count = 0
+					files.forEach((item) => {
+						if (this.commonJS.isNotEmpty(item.count)) {
+							count += Number(item.count)
+						}
+					});
+					if (count != element.number) {
+						countFlag = true
+						countIndex = index
+					}
+				}
+			})
+			if (countFlag) {
+				this.$message.warning(`第${countIndex + 1}行报销费用与发票金额不一致`);
+				this.loading = false
+				throw new Error(`第${countIndex + 1}行报销费用与发票金额不一致`);
+			} else {
+				this.loading = false
+			}
+		}
 
 	}
 }

+ 20 - 5
src/views/reimbursement/info/InfoList.vue

@@ -122,9 +122,9 @@
           <vxe-column min-width="200" title="报销编号" field="no" align="center">
             <template #default="scope">
               <el-link type="primary" :underline="false" v-if="hasPermission('reimbursement:info:view')"
-                @click="view(scope.row.id)">{{ scope.row.no }}</el-link>
+                @click="view(scope.row)">{{ scope.row.no }}</el-link>
               <el-link type="primary" :underline="false" v-else-if="hasPermission('reimbursement:info:view')"
-                @click="view(scope.row.id)">{{ scope.row.no }}</el-link>
+                @click="view(scope.row)">{{ scope.row.no }}</el-link>
               <span v-else>{{ scope.row.no }}</span>
             </template>
           </vxe-column>
@@ -241,6 +241,7 @@
 
         <ProgramPageForm ref="programPageForm" @getProgram="getProgram"></ProgramPageForm>
         <InfoForm ref="infoForm" @refreshDataList="refreshList"></InfoForm>
+        <NewInfoForm ref="newInfoForm" @refreshDataList="refreshList"></NewInfoForm>
         <ProjectForm ref="projectForm" @refreshDataList="refreshList"></ProjectForm>
         <ContractNameForm ref="contractNameForm"></ContractNameForm>
         <ProjectListForm ref="projectListForm"></ProjectListForm>
@@ -259,6 +260,7 @@ import UserSelect from '@/components/userSelect'
 import SelectTree from '@/components/treeSelect/treeSelect.vue'
 import ProgramPageForm from '@/views/finance/invoice/ProgramPageForm'
 import InfoForm from './InfoUpdateForm'
+import NewInfoForm from './NewInfoUpdateForm'
 import taskService from '@/api/flowable/taskService'
 import processService from '@/api/flowable/processService'
 import pick from 'lodash.pick'
@@ -336,6 +338,7 @@ export default {
     SelectTree,
     ProgramPageForm,
     InfoForm,
+    NewInfoForm,
     ProjectForm,
     UserSelect,
     ContractNameForm,
@@ -628,12 +631,24 @@ export default {
       })
     },
     // 查看
-    view(id) {
-      this.$refs.infoForm.init('view', id)
+    view(row) {
+      let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
+      let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
+      if (newVersionFlag) {
+        this.$refs.newInfoForm.init('view', row.id)
+      } else {
+        this.$refs.infoForm.init('view', row.id)
+      }
     },
     //修改
     editForm(row) {
-      this.$refs.infoForm.init('edit', row.id)
+      let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
+      let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
+      if (newVersionFlag) {
+        this.$refs.newInfoForm.init('edit', row.id)
+      } else {
+        this.$refs.infoForm.init('edit', row.id)
+      }
     },
     // 查看报销项目
     viewProject(id) {

文件差异内容过多而无法显示
+ 2642 - 0
src/views/reimbursement/info/NewInfoUpdateForm.vue


+ 41 - 4
src/views/reimbursement/info/NewReimbursementForm.vue

@@ -130,7 +130,8 @@
 					<el-col :span="24">
 						<vxe-table border show-footer show-overflow :footer-method="footerMethod" ref="detailTable"
 							:key="detailKey" class="vxe-table-element" :data="inputForm.detailInfos"
-							style="margin-left: 5em" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+							style="margin-left: 5em"
+							:expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
 							<vxe-column type="expand" width="80">
 								<template #content="{ row, rowIndex }">
 									<InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -197,7 +198,8 @@
 							:key="detailKey" class="vxe-table-element" :data="inputForm.detailInfos"
 							style="margin-left: 5em" @cell-click="" @edit-closed="" highlight-current-row
 							:edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-							:edit-rules="validRules" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+							:edit-rules="validRules"
+							:expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
 							<vxe-column type="expand" width="80">
 								<template #content="{ row, rowIndex }">
 									<InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -489,7 +491,8 @@
 							style="margin-left: 5em" :key="detailKeyOthers" @cell-click="" @edit-closed=""
 							highlight-current-row
 							:edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-							:edit-rules="validRules" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+							:edit-rules="validRules"
+							:expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
 							<vxe-column type="expand" width="80">
 								<template #content="{ row, rowIndex }">
 									<InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -1183,11 +1186,16 @@ export default {
 					//  获取当前审核节点
 					this.commonApi.getTaskNameByProcInsId(this.inputForm.procInsId).then(name => {
 						this.currentNodeName = name
-						if (name == "综合管理部主任审批") {
+
+						if (name == "综合管理部主任审批" && this.status != "taskFormDetail") {
 							this.isConfirm = 1
 						} else {
 							this.isConfirm = 2
 						}
+
+						if (this.status == "startAndHold" || this.method == 'add') {
+							this.isConfirm = 3
+						}
 					})
 					// 获取文件确认状态
 					this.reimbursementService.getListByUser(this.inputForm.id).then(data => {
@@ -2696,7 +2704,36 @@ export default {
 				this.inputForm.files.push(...files)
 			}
 		},
+		handleCheckAmount() {
+			let countFlag = false
+			let countIndex = 0
+			this.handleTableInfo(this.inputForm.sourceType)
+			this.tableData.forEach((element, index) => {
 
+				if (element.reimbursementType == 1) {
+					let files = this.inputForm.invoiceReimbursementFiles.filter(item => {
+						return item.remarks == element.uniqueId
+					})
+					let count = 0
+					files.forEach((item) => {
+						if (this.commonJS.isNotEmpty(item.count)) {
+							count += Number(item.count)
+						}
+					});
+					if (count != element.number) {
+						countFlag = true
+						countIndex = index
+					}
+				}
+			})
+			if (countFlag) {
+				this.$message.warning(`第${countIndex + 1}行报销费用与发票金额不一致`);
+				this.loading = false
+				throw new Error(`第${countIndex + 1}行报销费用与发票金额不一致`);
+			} else {
+				this.loading = false
+			}
+		}
 	}
 }
 </script>

+ 27 - 5
src/views/zs/reimbursement/info/InfoList.vue

@@ -134,9 +134,9 @@
 					<vxe-column width="130" title="报销编号" field="no" align="center">
 						<template #default="scope">
 							<el-link type="primary" :underline="false" v-if="hasPermission('zsReimbursement:info:view')"
-								@click="view(scope.row.id)">{{ scope.row.no }}</el-link>
+								@click="view(scope.row)">{{ scope.row.no }}</el-link>
 							<el-link type="primary" :underline="false"
-								v-else-if="hasPermission('zsReimbursement:info:view')" @click="view(scope.row.id)">{{
+								v-else-if="hasPermission('zsReimbursement:info:view')" @click="view(scope.row)">{{
 									scope.row.no }}</el-link>
 							<span v-else>{{ scope.row.no }}</span>
 						</template>
@@ -262,7 +262,10 @@
 				<!--        <ProgramPageForm ref="programPageForm" @getProgram="getProgram"></ProgramPageForm>-->
 				<ProjectChooseForm ref="projectChooseForm" @getProgram="getProgram"></ProjectChooseForm>
 				<InfoForm ref="infoForm" @refreshDataList="refreshList"></InfoForm>
+				<NewInfoForm ref="newInfoForm" @refreshDataList="refreshList"></NewInfoForm>
 				<InfoUpdateForm ref="infoUpdateForm" @refreshDataList="refreshList"></InfoUpdateForm>
+				<NewInfoUpdateForm ref="newInfoUpdateForm" @refreshDataList="refreshList"></NewInfoUpdateForm>
+
 				<!--        <ProjectForm ref="projectForm" @refreshDataList="refreshList"></ProjectForm>-->
 				<ProjectRecordsForm ref="projectRecordsForm" @refreshDataList="refreshList"></ProjectRecordsForm>
 				<ProjectListForm ref="projectListForm"></ProjectListForm>
@@ -283,6 +286,9 @@ import SelectTree from '@/components/treeSelect/treeSelect.vue'
 import ProjectChooseForm from '../projectInfo/ProjectChooseForm'
 import ProjectListForm from '@/views/cw/reimbursementApproval/info/ProgramForm'
 import InfoForm from './InfoForm'
+import NewInfoForm from './NewInfoForm'
+
+
 import taskService from '@/api/flowable/taskService'
 import processService from '@/api/flowable/processService'
 import pick from 'lodash.pick'
@@ -290,6 +296,8 @@ import ProjectRecordsForm from '@/views/cw/projectRecords/ProjectRecordsForm'
 import ContractNameForm from '@/views/cw/workContract/ContractNameForm'
 import userService from '@/api/sys/UserService'
 import InfoUpdateForm from "./InfoUpdateForm";
+import NewInfoUpdateForm from "./NewInfoUpdateForm";
+
 import UserSelect1 from '@/views/utils/UserTreeSelect'
 import UserSelect2 from '@/views/utils/UserTreeSelect'
 import dayjs from 'dayjs';
@@ -364,12 +372,14 @@ export default {
 		// ProgramPageForm,
 		ProjectChooseForm,
 		InfoForm,
+		NewInfoForm,
 		// ProjectForm,
 		ProjectRecordsForm,
 		ProjectListForm,
 		UserSelect,
 		ContractNameForm,
 		InfoUpdateForm,
+		NewInfoUpdateForm,
 		UserSelect1,
 		UserSelect2,
 	},
@@ -648,12 +658,24 @@ export default {
 			})
 		},
 		// 查看
-		view(id) {
-			this.$refs.infoForm.init('view', id)
+		view(row) {
+			let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
+			let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
+			if (newVersionFlag) {
+				this.$refs.newInfoForm.init('view', row.id)
+			} else {
+				this.$refs.infoForm.init('view', row.id)
+			}
 		},
 		//修改
 		editForm(row) {
-			this.$refs.infoUpdateForm.init('edit', row.id)
+			let newStartDate = this.$dictUtils.getDictLabel("new_version_reimbursement_date", '1', '-')
+			let newVersionFlag = this.validateXG.compareDate(row.approvalTime, newStartDate) == 'same' || this.validateXG.compareDate(row.approvalTime, newStartDate) == 'after'
+			if (newVersionFlag) {
+				this.$refs.newInfoUpdateForm.init('edit', row.id)
+			} else {
+				this.$refs.infoUpdateForm.init('edit', row.id)
+			}
 		},
 		// 查看报销项目
 		viewProject(id) {

文件差异内容过多而无法显示
+ 1229 - 0
src/views/zs/reimbursement/info/NewInfoForm.vue


文件差异内容过多而无法显示
+ 2454 - 0
src/views/zs/reimbursement/info/NewInfoUpdateForm.vue


+ 45 - 5
src/views/zs/reimbursement/info/NewReimbursementForm.vue

@@ -122,7 +122,8 @@
               class="vxe-table-element" :data="inputForm.detailInfos" style="margin-left: 5em" :key="detailKey"
               highlight-current-row
               :edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-              :edit-rules="validRules" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+              :edit-rules="validRules"
+              :expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
               <vxe-column type="expand" width="80">
                 <template #content="{ row, rowIndex }">
                   <InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -309,7 +310,8 @@
               class="vxe-table-element" :data="inputForm.detailInfoReports" style="margin-left: 5em"
               :key="detailKeyReport" highlight-current-row
               :edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-              :edit-rules="validRules" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+              :edit-rules="validRules"
+              :expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
               <vxe-column type="expand" width="80">
                 <template #content="{ row, rowIndex }">
                   <InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -417,7 +419,8 @@
               class="vxe-table-element" :data="inputForm.detailInfoOthers" style="margin-left: 5em"
               :key="detailKeyOthers" highlight-current-row
               :edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
-              :edit-rules="validRules" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+              :edit-rules="validRules"
+              :expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
               <vxe-column type="expand" width="80">
                 <template #content="{ row, rowIndex }">
                   <InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -604,7 +607,7 @@
               :edit-config="{ trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '_' }"
               :edit-rules="validRules" :tooltip-config="{
                 enterable: true
-              }" :expand-config="{ accordion: false, toggleMethod: handleExpand }">
+              }" :expand-config="{ expandAll: true, accordion: false, toggleMethod: handleExpand }">
               <vxe-column type="expand" width="80">
                 <template #content="{ row, rowIndex }">
                   <InvoiceReimbursementUpLoadComponent v-if="row.reimbursementType == 1"
@@ -1227,11 +1230,16 @@ export default {
           //  获取当前审核节点
           this.commonApi.getTaskNameByProcInsId(this.inputForm.procInsId).then(name => {
             this.currentNodeName = name
-            if (name == "综合管理部主任审批") {
+
+            if (name == "综合管理部主任审批" && this.status != "taskFormDetail") {
               this.isConfirm = 1
             } else {
               this.isConfirm = 2
             }
+
+            if (this.status == "startAndHold" || this.method == "add") {
+              this.isConfirm = 3
+            }
           })
           this.handleTableInfo(this.inputForm.sourceType)
           // 获取文件确认状态
@@ -1680,6 +1688,8 @@ export default {
         if (valid) {
           this.loading = true
           this.submitCheck()
+          this.handleCheckAmount()
+
           // if (this.$refs.invoiceReimbursementUpLoadComponent.checkProgress()) {
           //   this.loading = false
           //   return
@@ -2761,6 +2771,36 @@ export default {
         this.inputForm.files.push(...files)
       }
     },
+    handleCheckAmount() {
+      let countFlag = false
+      let countIndex = 0
+      this.handleTableInfo(this.inputForm.sourceType)
+      this.tableData.forEach((element, index) => {
+
+        if (element.reimbursementType == 1) {
+          let files = this.inputForm.invoiceReimbursementFiles.filter(item => {
+            return item.remarks == element.uniqueId
+          })
+          let count = 0
+          files.forEach((item) => {
+            if (this.commonJS.isNotEmpty(item.count)) {
+              count += Number(item.count)
+            }
+          });
+          if (count != element.number) {
+            countFlag = true
+            countIndex = index
+          }
+        }
+      })
+      if (countFlag) {
+        this.$message.warning(`第${countIndex + 1}行报销费用与发票金额不一致`);
+        this.loading = false
+        throw new Error(`第${countIndex + 1}行报销费用与发票金额不一致`);
+      } else {
+        this.loading = false
+      }
+    }
   }
 }
 </script>