Kaynağa Gözat

项目登记添加:有无报告,签章退回

sangwenwei 1 yıl önce
ebeveyn
işleme
963fbaa86c

+ 14 - 0
src/api/cw/projectRecords/ProjectRecordsService.js

@@ -16,6 +16,20 @@ export default {
 			params: params,
 		});
 	},
+	list2: function (params) {
+		return request({
+			url: prefix + "/cwProjectRecords/newList",
+			method: "get",
+			params: params,
+		});
+	},
+	noReportList: function (params) {
+		return request({
+			url: prefix + "/cwProjectRecords/noReportList",
+			method: "get",
+			params: params,
+		});
+	},
 	queryById: function (id) {
 		return request({
 			url: prefix + "/cwProjectRecords/queryById",

+ 21 - 0
src/api/cw/reportManagement/ProjectReportService.js

@@ -239,4 +239,25 @@ saveSignatureAnnotator: function (inputForm) {
 			data: param
 		})
 	},
+	saveRevocation: function (inputForm) {
+		return request({
+			url: prefix + `/cwProjectReport/saveRevocation`,
+			method: 'post',
+			data: inputForm
+		})
+	},
+	updateStatusByIdRe: function (data) {
+		return request({
+			url: prefix + '/cwProjectReport/updateStatusByIdRe',
+			method: 'post',
+			data: data
+		})
+	},
+	queryByReId: function (id) {
+		return request({
+			url: prefix + '/cwProjectReport/queryByReId',
+			method: 'get',
+			params: {id: id}
+		})
+	},
 }

+ 14 - 3
src/views/cw/invoice/ProgramPageForm.vue

@@ -10,8 +10,8 @@
       append-to-body
       v-model="visible">
       <div v-if="isShow">
+	  	<el-radio v-model="checkType" label="2" style="margin-right: 20px">报告</el-radio>
         <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>
 	    <el-radio v-model="checkType" v-if="hasPermission('cw_finance:invoice:add:report')" label="3" style="margin-right: 20px">其他</el-radio>
       </div>
 		<!--报告        -->
@@ -229,7 +229,7 @@
       init (isShow, num) {
         if (this.commonJS.isEmpty(isShow)) {
           this.isShow = true
-          this.checkType = '1'
+          this.checkType = '2'
         } else {
 			if (isShow === false || isShow === 'false') {
 				if (this.checkType === '1') {
@@ -277,6 +277,17 @@
             }
           }
           rows = this.$refs.projectTable.getCheckboxRecords()
+			let old=this.$dictUtils.getDictLabel('new_project_time','1','-')
+			for (let i = 0; i < rows.length; i++) {
+				if (rows[i].createTime >= old){
+					if (this.commonJS.isNotEmpty(rows[i].isHaveReport)){
+						if (rows[i].isHaveReport === '1'){
+							this.$message.error(rows[i].projectName+'下有报告,只能选择报告')
+							return
+						}
+					}
+				}
+			}
         } else if (this.checkType === '2') {
 			if (this.commonJS.isEmpty(this.$refs.projectTable1.getCheckboxRecords())) {
 				this.$message.error('请至少选择一条数据')
@@ -304,7 +315,7 @@
       list () {
         this.loading = true
         this.searchForm.status = '5'
-        projectRecordsService.list({
+        projectRecordsService.noReportList({
           'current': this.tablePage.currentPage,
           'size': this.tablePage.pageSize,
           'orders': this.tablePage.orders,

+ 18 - 2
src/views/cw/projectRecords/ProjectRecordsAddForm.vue

@@ -152,6 +152,15 @@
                     </el-input-number>
                   </el-form-item>
                 </el-col>
+				  <el-col :span="12">
+					  <el-form-item label="有无报告" prop="isHaveReport"
+									:rules="[
+                                 {required: true, message:'有无报告不能为空', trigger:'blur'}
+                  ]">
+						  <el-radio v-model="inputForm.isHaveReport" v-for="item in $dictUtils.getDictList('is_have_report')" :label="item.value" style="margin-right: 20px">
+							  {{item.label}}</el-radio>
+					  </el-form-item>
+				  </el-col>
                 <el-col :span="12">
                   <el-form-item label="报备类型" prop="reportType"
                                 :rules="[
@@ -488,7 +497,8 @@
           reportType: '',
 		  projectClassification: '',
           programRow: '',
-          cwProjectClientContactDTOList: []
+          cwProjectClientContactDTOList: [],
+		  isHaveReport:'1'
         },
         keyWatch: '',
         activeName: 'client',
@@ -618,7 +628,8 @@
           clientContactsName: '',
           reportType: '',
 			projectClassification: '',
-          cwProjectClientContactDTOList: []
+          cwProjectClientContactDTOList: [],
+			isHaveReport:'1'
         }
         this.inputForm.id = id
         this.loading = false
@@ -644,6 +655,9 @@
             if (this.commonJS.isEmpty(this.inputForm.cwProjectClientContactDTOList)) {
               this.inputForm.cwProjectClientContactDTOList = []
             }
+			  if (this.commonJS.isEmpty(this.inputForm.isHaveReport)) {
+				  this.inputForm.isHaveReport = '1'
+			  }
             if (this.commonJS.isEmpty(this.inputForm.createDate)) {
               this.inputForm.createDate = this.moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
             }
@@ -706,6 +720,8 @@
             if (this.commonJS.isEmpty(this.inputForm.createDate)) {
               this.inputForm.createDate = this.moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
             }
+
+            console.log('input',this.inputForm)
             projectRecordsService.saveForm(this.inputForm).then((data) => {
               this.$emit('refreshList')
               this.loading = false

+ 1 - 1
src/views/cw/projectRecords/ProjectRecordsChooseCom.vue

@@ -134,7 +134,7 @@
         this.loading = true
         // this.searchForm.createId = this.$store.state.user.id
         this.searchForm.status = '5'
-        projectRecordsService.list({
+        projectRecordsService.list2({
           'current': this.tablePage.currentPage,
           'size': this.tablePage.pageSize,
           'orders': this.tablePage.orders,

+ 13 - 2
src/views/cw/projectRecords/ProjectRecordsForm.vue

@@ -155,6 +155,15 @@
                     </el-input-number>
                   </el-form-item>
                 </el-col>
+				  <el-col :span="12">
+					  <el-form-item label="有无报告" prop="isHaveReport"
+									:rules="[
+                                 {required: true, message:'有无报告不能为空', trigger:'blur'}
+                  ]">
+						  <el-radio v-model="inputForm.isHaveReport" v-for="item in $dictUtils.getDictList('is_have_report')" :label="item.value" style="margin-right: 20px">
+							  {{item.label}}</el-radio>
+					  </el-form-item>
+				  </el-col>
                 <el-col :span="12">
                   <el-form-item label="报备类型" prop="reportType"
                                 :rules="[
@@ -606,7 +615,8 @@
           reportType: '',
 			projectClassification: '',
           cwProjectClientContactDTOList: [],
-          cwProjectMembersDTOList: []
+          cwProjectMembersDTOList: [],
+			isHaveReport:''
         },
         keyWatch: '',
         activeName: 'client',
@@ -738,7 +748,8 @@
 			projectClassification: '',
           clientContactsName: '',
           cwProjectClientContactDTOList: [],
-          cwProjectMembersDTOList: []
+          cwProjectMembersDTOList: [],
+			isHaveReport:''
         }
         this.inputForm.id = id
         this.loading = false

+ 4 - 0
src/views/cw/reportManagement/ReportManagementAddForm.vue

@@ -833,6 +833,10 @@
       },
       getContract (row) {
         console.log('row', row)
+		  if (row.isHaveReport === '0'){
+			  this.$message.error('该项目并无报告')
+			  return
+		  }
         this.inputForm.projectName = row.projectName // 项目名称
         this.inputForm.projectId = row.id // 项目id
         this.inputForm.projectNumber = row.projectNumber // 项目编号

+ 156 - 1
src/views/cw/reportManagement/ReportManagementList.vue

@@ -235,6 +235,18 @@
 					</el-button>
 				</template>
 			</vxe-column>
+			<vxe-column  min-width="100px" align="center" title="撤回签章" field="rebackStatus" >
+				<template #default="scope">
+					<el-button @click="detailRevocation(scope.row)" effect="dark"
+							   v-if="scope.row.rebackStatus !=='0'"
+							   :type="$dictUtils.getDictLabel('cw_status_flag', scope.row.rebackStatus, '-')">
+						{{$dictUtils.getDictLabel("cw_status", scope.row.rebackStatus, '未发起')}}
+					</el-button>
+					<el-button v-else effect="dark" >
+						未发起
+					</el-button>
+				</template>
+			</vxe-column>
 
           <vxe-column title="操作" width="200px" fixed="right" align="center">
             <template  #default="scope">
@@ -349,6 +361,18 @@
 					  text type="primary"
 					  @click="rebackSig(scope.row)"
 				  >签字注师撤回</el-button>
+<!--				  撤回签章  发起-->
+				  <el-button v-if="((
+                                  (scope.row.signatureType === '1' && scope.row.status1 === '5') ||
+                                  (scope.row.signatureType === '2' && scope.row.status2 === '5') ||
+                                  (scope.row.signatureType === '3' && scope.row.status3 === '5'))
+                                   && scope.row.newType !== '0' && scope.row.reviewStatus === '5'  && scope.row.repetitionReviewFlag === false && (scope.row.rebackStatus === '5' ||scope.row.rebackStatus === '3' ||scope.row.rebackStatus === '1' ||scope.row.rebackStatus === '0' || scope.row.rebackStatus === null || scope.row.rebackStatus === '' || scope.row.rebackStatus === undefined))"
+							 text type="primary" @click="revocationEdit(scope.row)">撤回签章</el-button>
+				  <!--              审核-->
+				  <el-button v-if="scope.row.rebackStatus==='2' && checkIsAuditReview(scope.row)" text type="primary" @click="examineRevocation(scope.row)">审核</el-button>
+				  <!--              被驳回后当前申请人重新调整-->
+				  <el-button v-if="hasPermission('cw:workContract:filed')&&scope.row.createById === $store.state.user.id&&scope.row.rebackStatus === '4'" text type="primary" @click="adjustRevocation(scope.row)">驳回调整</el-button>
+				  <el-button v-if="hasPermission('cw:workContract:filed')&&scope.row.createById === $store.state.user.id&&scope.row.rebackStatus === '2'" text type="primary" @click="revocation(scope.row)">撤回</el-button>
               </div>
             </template>
           </vxe-column>
@@ -449,6 +473,8 @@
 	    procDefSTakeNumberKey: '',
 		  processDefinitionTakeNumberReviewAuditId: '',
 		  procDefTakeNumberReviewAuditKey: '',
+		  processDefinitionReId: '',
+		  procDefReKey: '',
       }
     },
     reportReviewService: null,
@@ -603,6 +629,12 @@
 				  this.procDefSigKey = data.key
 			  }
 	    })
+		  processService.getByName('会计-撤回签章').then((data) => {
+			  if (!this.commonJS.isEmpty(data.id)) {
+				  this.processDefinitionReId = data.id
+				  this.procDefReKey = data.key
+			  }
+		  })
       },
       // 当前页
       currentChangeHandle ({ currentPage, pageSize }) {
@@ -1829,7 +1861,130 @@
 				})
 			})
 		},
-
+		//撤回签章 发起
+		revocationEdit(row){
+			// 读取流程表单
+			let title = `发起流程【会计-撤回签章】`
+			let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了[会计-撤回签章]`
+			let status = 'startAndHold'
+			if (row.rebackStatus === '3') {
+				status = 'startAndClose'
+			} else if (row.rebackStatus === '4') {
+				status = 'reapplyFlag'
+			}
+			taskService.getTaskDef({ procDefId: this.processDefinitionReId,
+				businessId: row.revocationId,
+				businessTable: 'cw_revocation_signature'}).then((data) => {
+				console.log('qqq',data)
+				this.$router.push({
+					path: '/flowable/task/TaskForm',
+					query: {
+						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+						procDefId: this.processDefinitionReId,
+						procDefKey: this.procDefReKey,
+						title: title,
+						formType: data.formType,
+						formUrl: data.formUrl,
+						formTitle: processTitle,
+						businessTable: 'cw_revocation_signature',
+						businessId: row.id,
+						isShow: 'false',
+						status: status,
+						routePath: '/cw/reportManagement/ReportManagementList'
+					}
+				})
+			})
+		},
+		//撤回签章  撤回
+		revocation(row){
+			console.log('row',row)
+			this.$confirm(`确定要撤回该申请吗?`, '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning'
+			}).then(() => {
+				projectReportService.queryByReId(row.revocationId).then((data) => {
+					if (data.rebackStatus !== '2') { // status的值不等于“审核中”,就弹出提示
+						this.$message.error('数据已发生改变或不存在,请刷新数据')
+						this.refreshList()
+					} else {
+						processService.revokeProcIns(row.procInsReId).then((data) => {
+							let form = {rebackStatus: '3', revocationId: row.revocationId}
+							projectReportService.updateStatusByIdRe(form)
+							this.$message.success(data)
+							this.refreshList()
+						})
+					}
+				})
+			})
+		},
+		// 撤回签章 审核或重新调整跳转
+		examineRevocation (row) {
+			let cUser = false
+			taskService.getTaskDefInfo({
+				taskId: row.revocationTaskId
+			}).then((data) => {
+				this.$router.push({
+					path: '/flowable/task/TaskForm',
+					query: {
+						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title', 'businessId'),
+						isShow: false,
+						formReadOnly: true,
+						formTitle: `${data.taskName}`,
+						cUser: cUser,
+						title: `审批【${data.taskName || ''}】`,
+						routePath: '/cw/reportManagement/ReportManagementList'   // 数据处理后需要跳转的页面路径
+					}
+				})
+			})
+		},
+		//驳回后重新调整
+		adjustRevocation(row){
+			console.log('XXX',row)
+			let cUser = false
+			taskService.getTaskDefInfo({
+				taskId: row.revocationTaskId
+			}).then((data) => {
+				console.log('data',data)
+				this.$router.push({
+					path: '/flowable/task/TaskForm',
+					query: {
+						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title', 'businessId'),
+						isShow: false,
+						formReadOnly: true,
+						formTitle: `${data.taskName}`,
+						cUser: cUser,
+						title: `审批【${data.taskName || ''}】`,
+						routePath: '/cw/reportManagement/ReportManagementList'   // 数据处理后需要跳转的页面路径
+					}
+				})
+			})
+		},
+		//查看报告-修改签字注师流程信息
+		detailRevocation(row){
+			console.log('sigrow',row)
+			if (row.rebackStatus !== '0' && row.rebackStatus !== '1') {
+				// eslint-disable-next-line eqeqeq
+				taskService.getTaskDef({
+					procInsId: row.procInsReId,
+					procDefId: this.processDefinitionReId
+				}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskFormDetail',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							isShow: 'false',
+							readOnly: true,
+							title: '会计-撤回签章' + '流程详情',
+							formTitle: '会计-撤回签章' + '流程详情',
+							businessId: row.revocationId,
+							status: 'reback',
+							sigId:row.id
+						}
+					})
+				})
+			}
+		},
     }
   }
 </script>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1263 - 0
src/views/cw/reportManagement/revocationSignature/RevocationSignature.vue


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

@@ -756,6 +756,7 @@ export default {
 		// Process_1706680073642 咨询-总经办报销
 		// Process_1706680331785 咨询-所长报销
 		// Process_1706680660857 咨询-所长报销-电子发票
+		// Process_1708926975266 会计-撤回签章
 		// 驳回
 		reject(vars) {
 			if (this.procDefId.includes('Process_1667978088459') ||
@@ -832,7 +833,8 @@ export default {
 				this.procDefId.includes('Process_1706679472488') ||
 				this.procDefId.includes('Process_1706680073642') ||
 				this.procDefId.includes('Process_1706680331785') ||
-				this.procDefId.includes('Process_1706680660857')
+				this.procDefId.includes('Process_1706680660857') ||
+				this.procDefId.includes('Process_1708926975266')
 			) {
 				console.log('进入新版驳回')
 				this.$confirm(`确定驳回流程吗?`, '提示', {

+ 1 - 0
src/views/flowable/task/TodoDia.vue

@@ -8,6 +8,7 @@
 			append-to-body
 			align-center="true"
 			height="auto"
+			v-loading="loading"
 			@close="close"
 			@keyup.enter.native="getWorkClient"
 			v-model="visibleChoose">