Browse Source

工程咨询及项目管理列表代码提交

wangqiang 1 year ago
parent
commit
310b10f56b

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

@@ -23,6 +23,13 @@ export default {
 			params: { id: id },
 		});
 	},
+	projectUpgrade: function (id) {
+		return request({
+			url: prefix + "/cwProjectRecords/projectUpgrade",
+			method: "post",
+			params: { id: id },
+		});
+	},
 	save: function (inputForm) {
 		return request({
 			url: prefix + `/cwProjectRecords/save`,

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

@@ -2,6 +2,14 @@ import request from "@/utils/httpRequest";
 import { FINANCE_PATH as prefix } from "../../AppPath";
 
 export default {
+	archivedInfoExport: function (params) {
+		return request({
+			url: prefix + "/cwProjectReport/archivedInfoExport",
+			method: "get",
+			params: params,
+			responseType: "blob",
+		});
+	},
   list: function (params) {
     return request({
       url: prefix + '/cwProjectReport/list',
@@ -9,6 +17,27 @@ export default {
       params: params
     })
   },
+	list2: function (params) {
+    return request({
+      url: prefix + '/cwProjectReport/list2',
+      method: 'get',
+      params: params
+    })
+  },
+	list3: function (params) {
+    return request({
+      url: prefix + '/cwProjectReport/list3',
+      method: 'get',
+      params: params
+    })
+  },
+	getTotal: function () {
+		return request({
+			url: prefix + "/cwProjectReport/getTotal",
+			method: "get",
+			params: {  },
+		});
+	},
   saveForm: function (inputForm) {
     return request({
       url: prefix + `/cwProjectReport/saveForm`,

+ 24 - 10
src/views/cw/projectRecords/ProjectRecordsAddForm.vue

@@ -109,7 +109,7 @@
                       :url="`/system-server/sys/office/treeData?type=2`"
                       :value="inputForm.officeId"
                       :accordion="true"
-                      size="large"
+                      size="default"
                       @getValue="(value) => {inputForm.officeId=value}"/>
                   </el-form-item>
                 </el-col>
@@ -320,12 +320,12 @@
                         :edit-rules="validContactRules"
                         :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '-'}"
                       >
-                        <vxe-table-column align="center" field="name" title="姓名" :edit-render="{}">
+                        <vxe-table-column min-width="110" align="center" field="name" title="姓名" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.name" placeholder="姓名" clearable></el-input>
                           </template>
                         </vxe-table-column>
-						  <vxe-table-column align="center" field="sex" title="性别" :edit-render="{name: '$select', options: $dictUtils.getDictList('sex')}">
+						  <vxe-table-column min-width="110" align="center" field="sex" title="性别" :edit-render="{name: '$select', options: $dictUtils.getDictList('sex')}">
 							  <template v-slot:edit="scope">
 								  <vxe-select :disabled="status === 'audit' || status === 'taskFormDetail'" v-model="scope.row.sex" placeholder="性别" clearable style="width: 100%;" transfer>
 									  <vxe-option
@@ -337,37 +337,37 @@
 								  </vxe-select>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="officeId" title="部门" :edit-render="{}">
+						  <vxe-table-column min-width="110" align="center" field="officeId" title="部门" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.officeId" placeholder="部门" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="position" title="职务" :edit-render="{}">
+                        <vxe-table-column min-width="111" align="center" field="position" title="职务" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.position" placeholder="职务" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="contactFirst" title="联系方式1" :edit-render="{}">
+                        <vxe-table-column min-width="111" align="center" field="contactFirst" title="联系方式1" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.contactFirst" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式1" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="contactSecond" title="联系方式2" :edit-render="{}">
+                        <vxe-table-column min-width="111" align="center" field="contactSecond" title="联系方式2" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.contactSecond" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式2" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="fax" title="传真" :edit-render="{}">
+                        <vxe-table-column min-width="111" align="center" field="fax" title="传真" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.fax" placeholder="传真" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="email" title="邮箱" :edit-render="{}">
+                        <vxe-table-column min-width="111" align="center" field="email" title="邮箱" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.email" @change="$forceUpdate()" @blur="blurEmail(scope.$rowIndex)" placeholder="邮箱" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="remarks" title="备注" :edit-render="{}">
+                        <vxe-table-column min-width="111" align="center" field="remarks" title="备注" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input maxlength="500" v-model="scope.row.remarks" placeholder="备注" clearable></el-input>
                           </template>
@@ -676,6 +676,20 @@
               this.$message.error('“被服务单位”中至少填写一条信息')
               throw new Error('“被服务单位”中至少填写一条信息')
             }
+            if (this.inputForm.projectLevel === '1') {
+            	if (this.inputForm.projectMoney>= 500) {
+					this.loading = false
+					this.$message.error('送审规模大于500万元,项目等级请选择B级!')
+					throw new Error('送审规模大于500万元,项目等级请选择B级!')
+				}
+
+            } else {
+				if (this.inputForm.projectMoney < 500) {
+					this.loading = false
+					this.$message.error('送审规模小于500万元,项目等级请选择A级!')
+					throw new Error('送审规模小于500万元,项目等级请选择A级!')
+				}
+			}
             if (this.$refs.uploadComponent.checkProgress()) {
               this.loading = false
               throw new Error()

+ 23 - 9
src/views/cw/projectRecords/ProjectRecordsAddForm2.vue

@@ -319,12 +319,12 @@
                         :edit-rules="validContactRules"
                         :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '-'}"
                       >
-                        <vxe-table-column align="center" field="name" title="姓名" :edit-render="{}">
+                        <vxe-table-column min-width="135" align="center" field="name" title="姓名" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.name" placeholder="姓名" clearable></el-input>
                           </template>
                         </vxe-table-column>
-						  <vxe-table-column align="center" field="sex" title="性别" :edit-render="{name: '$select', options: $dictUtils.getDictList('sex')}">
+						  <vxe-table-column min-width="135" align="center" field="sex" title="性别" :edit-render="{name: '$select', options: $dictUtils.getDictList('sex')}">
 							  <template v-slot:edit="scope">
 								  <vxe-select :disabled="status === 'audit' || status === 'taskFormDetail'" v-model="scope.row.sex" placeholder="性别" clearable style="width: 100%;" transfer>
 									  <vxe-option
@@ -336,37 +336,37 @@
 								  </vxe-select>
 							  </template>
 						  </vxe-table-column>
-						  <vxe-table-column align="center" field="officeId" title="部门" :edit-render="{}">
+						  <vxe-table-column min-width="135" align="center" field="officeId" title="部门" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.officeId" placeholder="部门" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="position" title="职务" :edit-render="{}">
+                        <vxe-table-column min-width="137" align="center" field="position" title="职务" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.position" placeholder="职务" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="contactFirst" title="联系方式1" :edit-render="{}">
+                        <vxe-table-column min-width="137" align="center" field="contactFirst" title="联系方式1" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.contactFirst" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式1" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="contactSecond" title="联系方式2" :edit-render="{}">
+                        <vxe-table-column min-width="137" align="center" field="contactSecond" title="联系方式2" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.contactSecond" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式2" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="fax" title="传真" :edit-render="{}">
+                        <vxe-table-column min-width="137" align="center" field="fax" title="传真" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.fax" placeholder="传真" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="email" title="邮箱" :edit-render="{}">
+                        <vxe-table-column min-width="137" align="center" field="email" title="邮箱" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input v-model="scope.row.email" @change="$forceUpdate()" @blur="blurEmail(scope.$rowIndex)" placeholder="邮箱" clearable></el-input>
                           </template>
                         </vxe-table-column>
-                        <vxe-table-column align="center" field="remarks" title="备注" :edit-render="{}">
+                        <vxe-table-column min-width="137" align="center" field="remarks" title="备注" :edit-render="{}">
                           <template v-slot:edit="scope">
                             <el-input maxlength="500" v-model="scope.row.remarks" placeholder="备注" clearable></el-input>
                           </template>
@@ -675,6 +675,20 @@
               this.$message.error('“被服务单位”中至少填写一条信息')
               throw new Error('“被服务单位”中至少填写一条信息')
             }
+			  if (this.inputForm.projectLevel === '1') {
+				  if (this.inputForm.projectMoney>= 500) {
+					  this.loading = false
+					  this.$message.error('送审规模大于500万元,项目等级请选择B级!')
+					  throw new Error('送审规模大于500万元,项目等级请选择B级!')
+				  }
+
+			  } else {
+				  if (this.inputForm.projectMoney < 500) {
+					  this.loading = false
+					  this.$message.error('送审规模小于500万元,项目等级请选择A级!')
+					  throw new Error('送审规模小于500万元,项目等级请选择A级!')
+				  }
+			  }
             if (this.$refs.uploadComponent.checkProgress()) {
               this.loading = false
               throw new Error()

+ 9 - 9
src/views/cw/projectRecords/ProjectRecordsForm.vue

@@ -316,12 +316,12 @@
 							  :edit-rules="validContactRules"
 							  :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '-'}"
 						  >
-							  <vxe-table-column align="center" field="name" title="姓名" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="110" align="center" field="name" title="姓名" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.name" placeholder="姓名" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="sex" title="性别" :edit-render="{name: '$select', options: $dictUtils.getDictList('sex')}">
+							  <vxe-table-column min-width="110" align="center" field="sex" title="性别" :edit-render="{name: '$select', options: $dictUtils.getDictList('sex')}">
 								  <template #default="scope">
 									  <vxe-select :disabled="method === 'view'" v-model="scope.row.sex" placeholder="性别" clearable style="width: 100%;" transfer>
 										  <vxe-option
@@ -333,37 +333,37 @@
 									  </vxe-select>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="officeId" title="部门" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="110" align="center" field="officeId" title="部门" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.officeId" placeholder="部门" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column  align="center" field="position" title="职务" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="position" title="职务" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.position" placeholder="职务" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="contactFirst" title="联系方式1" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="contactFirst" title="联系方式1" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.contactFirst" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式1" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="contactSecond" title="联系方式2" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="contactSecond" title="联系方式2" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.contactSecond" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式2" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="fax" title="传真" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="fax" title="传真" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.fax" placeholder="传真" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="email" title="邮箱" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="email" title="邮箱" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.email" @change="$forceUpdate()" @blur="blurEmail(scope.$rowIndex)" placeholder="邮箱" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="remarks" title="备注" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="remarks" title="备注" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input maxlength="500" v-model="scope.row.remarks" placeholder="备注" clearable></el-input>
 								  </template>

+ 9 - 9
src/views/cw/projectRecords/ProjectRecordsForm2.vue

@@ -315,12 +315,12 @@
 							  :edit-rules="validContactRules"
 							  :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '-'}"
 						  >
-							  <vxe-table-column align="center" field="name" title="姓名" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="110" align="center" field="name" title="姓名" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.name" placeholder="姓名" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="sex" title="性别" :edit-render="{name: '$select', options: $dictUtils.getDictList('sex')}">
+							  <vxe-table-column min-width="110" align="center" field="sex" title="性别" :edit-render="{name: '$select', options: $dictUtils.getDictList('sex')}">
 								  <template #default="scope">
 									  <vxe-select :disabled="method === 'view'" v-model="scope.row.sex" placeholder="性别" clearable style="width: 100%;" transfer>
 										  <vxe-option
@@ -332,37 +332,37 @@
 									  </vxe-select>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="officeId" title="部门" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="110" align="center" field="officeId" title="部门" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.officeId" placeholder="部门" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column  align="center" field="position" title="职务" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="position" title="职务" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.position" placeholder="职务" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="contactFirst" title="联系方式1" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="contactFirst" title="联系方式1" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.contactFirst" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式1" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="contactSecond" title="联系方式2" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="contactSecond" title="联系方式2" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.contactSecond" oninput="value=value.replace(/[^\d]/g,'')" placeholder="联系方式2" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="fax" title="传真" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="fax" title="传真" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.fax" placeholder="传真" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="email" title="邮箱" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="email" title="邮箱" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input v-model="scope.row.email" @change="$forceUpdate()" @blur="blurEmail(scope.$rowIndex)" placeholder="邮箱" clearable></el-input>
 								  </template>
 							  </vxe-table-column>
-							  <vxe-table-column align="center" field="remarks" title="备注" :edit-render="{}" show-overflow="title">
+							  <vxe-table-column min-width="111" align="center" field="remarks" title="备注" :edit-render="{}" show-overflow="title">
 								  <template #default="scope">
 									  <el-input maxlength="500" v-model="scope.row.remarks" placeholder="备注" clearable></el-input>
 								  </template>

+ 187 - 0
src/views/cw/reportManagement/ArchivedInfoExportForm.vue

@@ -0,0 +1,187 @@
+<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+  <div>
+    <el-dialog
+      :title="title"
+      :close-on-click-modal="false"
+	  draggable
+      width="800px"
+      height="500px"
+      @close="close"
+      append-to-body
+      v-model="visible">
+			<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="method==='view'"
+					 label-width="100px" @submit.native.prevent>
+
+				<el-row  :gutter="0">
+					<el-col :span="24">
+						<el-form-item label="创建时间" prop="contractDates">
+							<el-date-picker
+								placement="bottom-start"
+								format="YYYY-MM-DD HH:mm:ss"
+								value-format="YYYY-MM-DD HH:mm:ss"
+								v-model="inputForm.contractDates"
+								type="datetimerange"
+								range-separator="至"
+								start-placeholder="开始日期"
+								end-placeholder="结束日期">
+							</el-date-picker>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row  :gutter="0">
+					<el-col :span="24">
+						<el-form-item label="归档状态" prop="archivingStatus" :rules="[
+							{required: true, message:'归档状态不能为空', trigger:'change'}
+                   ]">
+							<el-select v-model="inputForm.archivingStatus" placeholder="请选择" style="width:100%;" clearable multiple>
+								<el-option
+									v-for="item in $dictUtils.getDictList('online_status')"
+									:key="item.value"
+									:label="item.label"
+									:value="item.value">
+								</el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form >
+		<template #footer>
+			<span class="dialog-footer">
+			  <el-button @click="close()" icon="el-icon-circle-close">关闭</el-button>
+			  <el-button  v-if="method === 'edit'" type="primary" icon="el-icon-circle-check" @click="doSubmit('save')">下载</el-button>
+			</span>
+		</template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+	import projectReportService from '@/api/cw/reportManagement/ProjectReportService'
+	import moment from 'moment'
+
+  export default {
+    props: {
+      businessId: {
+        type: String,
+        default: ''
+      },
+      formReadOnly: {
+        type: Boolean,
+        default: false
+      },
+      status: {
+        type: String,
+        default: ''
+      }
+    },
+    data () {
+      return {
+		  detailKey: '',
+        title: '',
+        method: '',
+        loading: false,
+		  inputForm: {
+			  contractDates: [],
+			  archivingStatus: []
+		  },
+        keyWatch: '',
+        visible: false,
+        tabName: ''
+      }
+    },
+    created () {
+
+    },
+    computed: {
+      bus: {
+        get () {
+          return this.businessId
+        },
+        set (val) {
+          this.businessId = val
+        }
+      }
+    },
+    watch: {
+      'keyWatch': {
+        handler (newVal) {
+          if (this.commonJS.isNotEmpty(this.bus)) {
+            this.init('', this.bus)
+          } else {
+            this.$nextTick(() => {
+              this.$refs.inputForm.resetFields()
+            })
+          }
+        }
+      }
+    },
+    components: {
+
+    },
+    methods: {
+		init (method) {
+			this.visible = true
+			if (method === 'edit') {
+				this.title = '归档信息导出'
+				this.method = method
+			}
+			this.method = method
+			this.inputForm = {
+				contractDates: [],
+				archivingStatus: []
+			}
+		},
+      // 表单提交
+      doSubmit (status) {
+		  if (status === 'save') {
+			  this.$refs['inputForm'].validate((valid) => {
+				  if (valid) {
+					  this.loading = true
+
+					  let options = {
+					  	filename: '归档一览表',
+					  	sheetName: 'Export'
+					  }
+					  if (this.inputForm.contractDates) {
+						  options.filename = moment(this.inputForm.contractDates[0]).format('YYYY-MM-DD')
+							  + '至' + moment(this.inputForm.contractDates[1]).format('YYYY-MM-DD')
+							  + options.filename
+					  }
+					  this.loading = true
+					  projectReportService.archivedInfoExport({
+					  	'itemType': '1',
+					  	'tabType': '2022',
+					  	...options,
+					  	...this.inputForm
+					  }).then((res) => {
+					  	// 将二进制流文件写入excel表,以下为重要步骤
+					  	this.$utils.downloadExcel(res, options.filename)
+						  this.close()
+					  	this.loading = false
+					  }).catch(function (err) {
+					  	this.loading = false
+					  	if (err.response) {
+					  		console.log(err.response)
+					  	}
+					  })
+				  }
+			  })
+			  return
+		  }
+      },
+		close () {
+			this.inputForm = {
+				contractDates: [],
+				archivingStatus: []
+			}
+			this.$refs.inputForm.resetFields()
+			this.visible = false
+		},
+    }
+  }
+</script>
+<style scoped>
+  /deep/ .el-input-number .el-input__inner {
+    text-align: left;
+  }
+</style>

File diff suppressed because it is too large
+ 3056 - 0
src/views/cw/reportManagement/ProjectRecordsInfoForm.vue


File diff suppressed because it is too large
+ 1001 - 0
src/views/cw/reportManagement/ReportManagementFormNew1.vue


File diff suppressed because it is too large
+ 1118 - 0
src/views/cw/reportManagement/ReportManagementFormNew2.vue


File diff suppressed because it is too large
+ 1081 - 0
src/views/cw/reportManagement/ReportManagementFormNew3.vue


+ 198 - 177
src/views/cw/reportManagement/ReportManagementList.vue

@@ -1,74 +1,62 @@
 <template>
   <div class="page">
-    <el-form :inline="true" class="query-form m-b-10" v-if="searchVisible" 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="projectName">
-        <el-input v-model="searchForm.projectName" placeholder="请输入项目名称" clearable></el-input>
-      </el-form-item>
-      <el-form-item v-if="showHideItem" label="项目经理1" prop="projectMasterName">
-        <UserSelect :limit='1' :modelValue="searchForm.projectMasterName" @update:modelValue='(value, label) => {searchForm.projectMasterName = value}'></UserSelect>
-      </el-form-item>
-      <el-form-item v-if="showHideItem" label="项目经理2" prop="realHeaderName">
-        <UserSelect :limit='1' :modelValue="searchForm.realHeaderName" @update:modelValue='(value, label) => {searchForm.realHeaderName = value}'></UserSelect>
-      </el-form-item>
+	  <el-form :inline="true" class="query-form m-b-10" v-if="searchVisible" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
+		  <!-- 搜索框-->
+		  <el-form-item v-if="showHideItem" label="报告文号" prop="reportNo">
+			  <el-input v-model="searchForm.reportNo" placeholder="请输入报告文号" clearable></el-input>
+		  </el-form-item>
+		  <el-form-item label="项目编号" prop="projectNumber">
+			  <el-input v-model="searchForm.projectNumber" placeholder="请输入项目编号" clearable></el-input>
+		  </el-form-item>
+		  <el-form-item label="项目名称" prop="projectName">
+			  <el-input v-model="searchForm.projectName" placeholder="请输入项目名称" clearable></el-input>
+		  </el-form-item>
 
-		<el-form-item v-if="showHideItem" label="创建人" prop="createBy">
-        <SelectUserTree
-          ref="companyTree"
-          :props="{
+		  <el-form-item v-if="showHideItem" label="创建人" prop="createBy">
+			  <SelectUserTree
+				  ref="companyTree"
+				  :props="{
                   value: 'id',             // ID字段名
                   label: 'name',         // 显示名称
                   children: 'children'    // 子级字段名
                 }"
-          :url="`/system-server/sys/user/treeUserDataAllOffice?type=2`"
-          :value="searchForm.createBy"
-          :clearable="true"
-		  size="default"
-          :accordion="true"
-          @getValue="(value) => {searchForm.createBy=value}"/>
-      </el-form-item>
+				  :url="`/system-server/sys/user/treeUserDataAllOffice?type=2`"
+				  :value="searchForm.createBy"
+				  :clearable="true"
+				  size="default"
+				  :accordion="true"
+				  @getValue="(value) => {searchForm.createBy=value}"/>
+		  </el-form-item>
 
-      <el-form-item v-if="showHideItem" label="报告文号" prop="reportNo">
-        <el-input v-model="searchForm.reportNo" placeholder="请输入报告文号" clearable></el-input>
-      </el-form-item>
-      <el-form-item v-if="showHideItem" label="审计收费(税前、元)" prop="contractAmounts">
-        <InputNumber :disabled="false" :precision="num" :value="searchForm.contractAmounts"
-					 @changefrom="(val)=>{searchForm.contractAmounts[0]=val}"
-					 @changeto="(val)=>{searchForm.contractAmounts[1]=val}"
-		></InputNumber>
-      </el-form-item>
-      <el-form-item v-if="showHideItem" label="报备类型" prop="filingType">
-        <el-select v-model="searchForm.filingType" placeholder="请选择" style="width:100%;">
-          <el-option
-            v-for="item in $dictUtils.getDictList('program_cost_audit_type')"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value">
-          </el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item v-if="showHideItem" label="创建时间" prop="contractDates">
-        <el-date-picker
-          placement="bottom-start"
-          format="YYYY-MM-DD HH:mm:ss"
-          value-format="YYYY-MM-DD HH:mm:ss"
-          v-model="searchForm.contractDates"
-          type="datetimerange"
-          range-separator="至"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期">
-        </el-date-picker>
-      </el-form-item>
+		  <el-form-item v-if="showHideItem" label="项目类别" prop="projectCategory">
+			  <el-select v-model="searchForm.projectCategory" placeholder="请选择" style="width:100%;">
+				  <el-option
+					  v-for="item in $dictUtils.getDictList('program_engineering_consultation_type')"
+					  :key="item.value"
+					  :label="item.label"
+					  :value="item.value">
+				  </el-option>
+			  </el-select>
+		  </el-form-item>
+		  <el-form-item v-if="showHideItem" label="创建时间" prop="contractDates">
+			  <el-date-picker
+				  placement="bottom-start"
+				  format="YYYY-MM-DD HH:mm:ss"
+				  value-format="YYYY-MM-DD HH:mm:ss"
+				  v-model="searchForm.contractDates"
+				  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>
-    </el-form>
+		  <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>
+	  </el-form>
     <div class="jp-table top" style="">
       <vxe-toolbar :refresh="{query: refreshList}" ref="toolbarRef" export custom>
         <template #buttons>
@@ -111,45 +99,58 @@
           :data="dataList"
           :checkbox-config="{}">
           <vxe-column type="seq" width="60" title="序号"></vxe-column>
-          <vxe-column width="100" align="center" title="单据编号" field="documentNo">
-            <template #default="scope">
-              <el-link  type="primary" :underline="false" v-if="hasPermission('cwProjectReport:list')" @click="view(scope.row.id)">{{scope.row.documentNo}}</el-link>
-              <el-link  type="primary" :underline="false" v-else-if="hasPermission('cwProjectReport:list')"  @click="view(scope.row.id,)">{{scope.row.documentNo}}</el-link>
-              <span v-else>{{scope.row.documentNo}}</span>
-            </template>
-          </vxe-column>
+<!--          <vxe-column width="100" align="center" title="单据编号" field="documentNo">-->
+<!--            <template #default="scope">-->
+<!--              <el-link  type="primary" :underline="false" v-if="hasPermission('cwProjectReport:list')" @click="view(scope.row.id)">{{scope.row.documentNo}}</el-link>-->
+<!--              <el-link  type="primary" :underline="false" v-else-if="hasPermission('cwProjectReport:list')"  @click="view(scope.row.id,)">{{scope.row.documentNo}}</el-link>-->
+<!--              <span v-else>{{scope.row.documentNo}}</span>-->
+<!--            </template>-->
+<!--          </vxe-column>-->
           <vxe-column width="150" align="center" title="项目编号" field="projectNumber"></vxe-column>
-          <vxe-column min-width="220" align="center" title="项目名称" field="projectName"></vxe-column>
-		  <vxe-column width="170" align="center" title="报告文号" field="reportNo"></vxe-column>
-			<vxe-column width="80" align="center" title="创建人" field="userName"></vxe-column>
-          <vxe-column width="120" align="center" title="报告所属部门" field="departmentName"></vxe-column>
-          <vxe-column width="100" align="center" title="项目经理1" field="projectMasterName"></vxe-column>
-          <vxe-column width="100" align="center" title="项目经理2" field="projectMaster2Name"></vxe-column>
-			<vxe-column min-width="160" align="center" title="客户名称" field="servedUnitName"></vxe-column>
+          <vxe-column min-width="220" align="center" title="项目名称" field="projectName">
+			  <template #default="scope">
+				  <el-link  type="primary" :underline="false" @click="projectView(scope.row.projectId)">{{scope.row.projectName}}</el-link>
+			  </template>
+		  </vxe-column>
+		  <vxe-column width="170" align="center" title="报告号" field="reportNo"></vxe-column>
+		  <vxe-column width="170" align="center" title="合同名称" field="contractName">
+			  <template #default="scope">
+				  <el-link  type="primary" :underline="false" @click="contractView(scope.row.contractId)">{{scope.row.contractName}}</el-link>
+			  </template>
+		  </vxe-column>
+		  <vxe-column width="170" align="center" title="委托方" field="clientName"></vxe-column>
+			<vxe-column width="80" align="center" title="登记人" field="userName"></vxe-column>
+			<vxe-column width="110" align="center" title="复核通过时间" field="checkCompleteTime"></vxe-column>
           <vxe-column width="110" align="center" title="创建时间" field="createTime"></vxe-column>
 			<vxe-column min-width="130" title="项目等级" field="projectLevel" align="center">
 				<template #default="scope">
 					{{$dictUtils.getDictLabel('cw_project_level', scope.row.projectLevel, '')}}
 				</template>
 			</vxe-column>
-			<vxe-column min-width="100" title="质量复核" fixed="right" align="center" field="reviewStatus">
+			<vxe-column min-width="130" title="质量复核" fixed="right" align="center" field="reviewStatus">
 				<template #default="scope">
-					<el-button @click="detail(scope.row)" :type="$dictUtils.getDictLabel('status_info', scope.row.reviewStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("status", scope.row.reviewStatus, '未开始')}} </el-button>
+					<el-button @click="detail(scope.row)" :type="$dictUtils.getDictLabel('quality_status_info', scope.row.reviewStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("quality_status", scope.row.reviewStatus, '未开始')}} </el-button>
 				</template>
 			</vxe-column>
 			<vxe-column min-width="100" title="报告签发" fixed="right" align="center" field="signAndIssueStatus">
 				<template #default="scope">
-					<el-button @click="signAndIssueDetail(scope.row)" :type="$dictUtils.getDictLabel('status_info', scope.row.signAndIssueStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("status", scope.row.signAndIssueStatus, '未开始')}} </el-button>
+					<el-button @click="signAndIssueDetail(scope.row)"
+							   :type="$dictUtils.getDictLabel('status_info', scope.row.signAndIssueStatus, '')"
+							   effect="dark">
+						{{$dictUtils.getDictLabel("status", scope.row.signAndIssueStatus, '未开始')}}
+					</el-button>
 				</template>
 			</vxe-column>
-			<vxe-column min-width="100" title="电子/超期天数" fixed="right" align="center" field="onlineArchivingStatus">
+			<vxe-column min-width="130" title="电子/超期天数" fixed="right" align="center" field="onlineArchivingStatus">
 				<template #default="scope">
-					<el-button @click="pushOnlineDetail(scope.row)" :type="$dictUtils.getDictLabel('status_info', scope.row.onlineArchivingStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("status", scope.row.onlineArchivingStatus, '未开始')}} </el-button>
+					<el-button @click="pushOnlineDetail(scope.row)" :type="$dictUtils.getDictLabel('online_status_info', scope.row.onlineArchivingStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("online_status", scope.row.onlineArchivingStatus, '未开始')}} </el-button>
+					<span v-if="scope.row.onlineOverdueDates > 0">{{scope.row.onlineOverdueDates}}天</span>
 				</template>
 			</vxe-column>
 			<vxe-column min-width="100" title="纸质/超期天数" fixed="right" align="center" field="paperArchivingStatus">
 				<template #default="scope">
-					<el-button @click="pushPaperDetail(scope.row)" :type="$dictUtils.getDictLabel('status_info', scope.row.paperArchivingStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("status", scope.row.paperArchivingStatus, '未开始')}} </el-button>
+					<el-button @click="pushPaperDetail(scope.row)" :type="$dictUtils.getDictLabel('online_status_info', scope.row.paperArchivingStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("online_status", scope.row.paperArchivingStatus, '未开始')}} </el-button>
+					<span v-if="scope.row.paperOverdueDates > 0">{{scope.row.paperOverdueDates}}天</span>
 				</template>
 			</vxe-column>
           <vxe-column title="操作" width="200px" fixed="right" align="center">
@@ -168,24 +169,24 @@
                               (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId))&&
                               scope.row.status === '5' && scope.row.reviewStatus === '5'"
 							   text type="primary" @click="del(scope.row.id,scope.row.projectId)">删除</el-button>-->
-					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && (scope.row.reviewStatus === '0' || scope.row.reviewStatus === '1' || scope.row.reviewStatus === '3' || scope.row.reviewStatus === undefined || scope.row.reviewStatus === '')" text type="primary" @click="pushF(scope.row)">复核</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && (scope.row.reviewStatus === '0' || scope.row.reviewStatus === '1' || scope.row.reviewStatus === '6' || scope.row.reviewStatus === '3' || scope.row.reviewStatus === undefined || scope.row.reviewStatus === '')" text type="primary" @click="pushF(scope.row)">复核</el-button>
 					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '2'" text type="primary" @click="rebackF(scope.row)">撤回复核</el-button>
 					<!--              审核-->
 <!--					<el-button v-if="scope.row.reviewStatus==='2' && checkIsAuditReview(scope.row)" text type="primary" @click="examineReview(scope.row)">审核</el-button>-->
 					<!--              被驳回后当前申请人重新调整-->
 					<el-button v-if="hasPermission('cw:workContract:filed')&&scope.row.createById === $store.state.user.id&&scope.row.reviewStatus === '4'" text type="primary" @click="adjustReview(scope.row)">驳回调整</el-button>
-					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && scope.row.reviewStatus === '5'
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && (scope.row.reviewStatus === '5' || scope.row.reviewStatus === '7')
 					&& (scope.row.signAndIssueStatus === '0' || scope.row.signAndIssueStatus === '1' || scope.row.signAndIssueStatus === '3' || scope.row.signAndIssueStatus === undefined || scope.row.signAndIssueStatus === '') && scope.row.projectLevel !== '2'" text type="primary" @click="pushSignAndIssue(scope.row)">报告签发</el-button>
 					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && scope.row.signAndIssueStatus === '2'" text type="primary" @click="rebackSignAndIssue(scope.row)">撤回签发</el-button>
 					<el-button v-if="hasPermission('signAndIssue:del') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && (scope.row.signAndIssueStatus === '1' || scope.row.signAndIssueStatus === '3' || scope.row.signAndIssueStatus === '4')" text type="primary" @click="deleteSignAndIssue(scope.row)">删除签发</el-button>
 					<el-button v-if="hasPermission('cw:workContract:filed')&&scope.row.createById === $store.state.user.id&&scope.row.reviewStatus === '5'&&scope.row.signAndIssueStatus === '4'" text type="primary" @click="adjustSignAndIssue(scope.row)">驳回调整</el-button>
-					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && scope.row.reviewStatus === '5' && (scope.row.signAndIssueStatus === '5' || scope.row.projectLevel === '2')
-							   && (scope.row.onlineArchivingStatus === '0' || scope.row.onlineArchivingStatus === '1' || scope.row.onlineArchivingStatus === '3' || scope.row.onlineArchivingStatus === undefined || scope.row.onlineArchivingStatus === '')"
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && (scope.row.reviewStatus === '5' || scope.row.reviewStatus === '7') && (scope.row.signAndIssueStatus === '5' || scope.row.projectLevel === '2')
+							   && (scope.row.onlineArchivingStatus === '0' || scope.row.onlineArchivingStatus === '1' || scope.row.onlineArchivingStatus === '3' || scope.row.onlineArchivingStatus === undefined || scope.row.onlineArchivingStatus === '' || scope.row.onlineArchivingStatus === '6')"
 							   text type="primary" @click="pushOnlineArchiving(scope.row)">线上归档</el-button>
 					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && scope.row.onlineArchivingStatus === '2'" text type="primary" @click="rebackPushOnline(scope.row)">撤回线上归档</el-button>
 					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && scope.row.onlineArchivingStatus === '4'" text type="primary" @click="adjustPushOnline(scope.row)">驳回调整</el-button>
-					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && scope.row.reviewStatus === '5' && scope.row.onlineArchivingStatus === '5'
-					&& (scope.row.paperArchivingStatus === '0' || scope.row.paperArchivingStatus === '1' || scope.row.paperArchivingStatus === '3' || scope.row.paperArchivingStatus === undefined || scope.row.paperArchivingStatus === '')" text type="primary" @click="pushPaperArchiving(scope.row)">纸质归档</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && scope.row.reviewStatus === '5' && (scope.row.onlineArchivingStatus === '5' || scope.row.onlineArchivingStatus === '7')
+					&& (scope.row.paperArchivingStatus === '0' || scope.row.paperArchivingStatus === '1' || scope.row.paperArchivingStatus === '3' || scope.row.paperArchivingStatus === undefined || scope.row.paperArchivingStatus === '' || scope.row.paperArchivingStatus === '6')" text type="primary" @click="pushPaperArchiving(scope.row)">纸质归档</el-button>
 					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && scope.row.onlineArchivingStatus === '5' && scope.row.paperArchivingStatus === '2'" text type="primary" @click="rebackPushPaper(scope.row)">撤回纸质归档</el-button>
 					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && scope.row.onlineArchivingStatus === '5' && scope.row.paperArchivingStatus === '4'" text type="primary" @click="adjustPushPaper(scope.row)">驳回调整</el-button>
 				</div>
@@ -205,14 +206,20 @@
     </div>
     <ReportManagementForm ref="reportManagementForm" @refreshList="refreshList"></ReportManagementForm>
     <ReportManagementAddForm ref="reportManagementAddForm" @refreshList="refreshList"></ReportManagementAddForm>
-
+	  <ContractAddForm ref="contractAddForm" @refreshDataList="refreshList"></ContractAddForm>
+	  <ProjectRecordsInfoForm ref="projectRecordsInfoForm" @refreshList="refreshList"></ProjectRecordsInfoForm>
   </div>
 </template>
 
 <script>
+	import ContractAddForm from '@/views/cw/workContract/contractRegisitionAddForm/ContractAddForm'
+	import ProjectRecordsInfoForm from './ProjectRecordsInfoForm'
   import InputNumber from '@/views/cw/workContract/InputNumber.vue'
   import projectReportService from '@/api/cw/reportManagement/ProjectReportService'
   import ReportReviewService from '@/api/cw/reportManagement/ReportReviewService'
+  import ReportSignAndIssueService from '@/api/cw/reportManagement/ReportSignAndIssueService'
+  import reportOnlineArchivingService from '@/api/cw/reportManagement/ReportOnlineArchivingService'
+  import reportPaperArchivingService from '@/api/cw/reportManagement/reportPaperArchivingService'
   import ReportNumberApplyService from '@/api/cw/reportManagement/ReportNumberApplyService'
   import taskService from '@/api/flowable/TaskService'
   import processService from '@/api/flowable/ProcessService'
@@ -231,20 +238,14 @@
         showHideIcon: 'el-icon-arrow-down',
         showHideName: '展示',
         num: 0,
-        searchForm: {
-          contractAmounts: [],
-          reportNo: '',
-          status1: '',
-          projectNumber: '',
-          projectName: '',
-          projectMasterId: '',
-          projectMaster2Id: '',
-          createBy: '',
-          contractDates: [],
-          projectMasterName: '', // 项目经理1
-          realHeaderName: '', // 项目经理2
-          filingType: ''
-        },
+		  searchForm: {
+			  reportNo: '',
+			  projectNumber: '',
+			  projectName: '',
+			  createBy: '',
+			  contractDates: [],
+			  projectCategory: ''
+		  },
         dataList: [],
         tablePage: {
           total: 0,
@@ -294,6 +295,8 @@
       this.reportNumberApplyService = new ReportNumberApplyService()
     },
     components: {
+		ContractAddForm,
+		ProjectRecordsInfoForm,
       ReportManagementForm,
       ReportManagementAddForm,
       SelectUserTree,
@@ -348,6 +351,14 @@
       view (id) {
         this.$refs.reportManagementForm.init('view', id, '报告审核单下载')
       },
+		// 查看合同信息
+	  contractView (id) {
+			this.$refs.contractAddForm.init('view', id)
+      },
+		// 查看项目信息
+	  projectView (id) {
+			this.$refs.projectRecordsInfoForm.init('view', id)
+      },
       // 查询当前用户是否是管理员用户
       checkIsAdmin () {
         userService.is().then((data) => {
@@ -526,23 +537,26 @@
 		},
 		// 流程详情
 		detail (row) {
-			taskService.getTaskDef({
-				procInsId: row.procInsId3,
-				procDefId: this.processDefinitionAuditId
-			}).then((data) => {
-				this.$router.push({
-					path: '/flowable/task/TaskFormDetail',
-					query: {
-						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
-						isShow: 'false',
-						readOnly: true,
-						title: '复核流程详情',
-						formTitle: '复核流程详情',
-						businessId: row.id,
-						status: 'reback'
-					}
+			if (!this.commonJS.isEmpty(row.reviewStatus) && row.reviewStatus !== '0') {
+				taskService.getTaskDef({
+					procInsId: row.procInsId3,
+					procDefId: this.processDefinitionAuditId
+				}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskFormDetail',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							isShow: 'false',
+							readOnly: true,
+							title: '复核流程详情',
+							formTitle: '复核流程详情',
+							businessId: row.id,
+							status: 'reback'
+						}
+					})
 				})
-			})
+			}
+
 		},
 		// 撤回报告复核
 		rebackF (row) {
@@ -623,23 +637,26 @@
 		},
 		// 报告签发流程详情
 		signAndIssueDetail (row) {
-			taskService.getTaskDef({
-				procInsId: row.procInsId4,
-				procDefId: this.signAndIssueProcDefId
-			}).then((data) => {
-				this.$router.push({
-					path: '/flowable/task/TaskFormDetail',
-					query: {
-						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
-						isShow: 'false',
-						readOnly: true,
-						title: '报告签发流程详情',
-						formTitle: '报告签发流程详情',
-						businessId: row.id,
-						status: 'reback'
-					}
+			if (!this.commonJS.isEmpty(row.signAndIssueStatus) && row.signAndIssueStatus !== '0') {
+				taskService.getTaskDef({
+					procInsId: row.procInsId4,
+					procDefId: this.signAndIssueProcDefId
+				}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskFormDetail',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							isShow: 'false',
+							readOnly: true,
+							title: '报告签发流程详情',
+							formTitle: '报告签发流程详情',
+							businessId: row.id,
+							status: 'reback'
+						}
+					})
 				})
-			})
+			}
+
 		},
 		// 撤回报告签发
 		rebackSignAndIssue (row) {
@@ -765,30 +782,32 @@
 		},
 		// 线上归档流程详情
 		pushOnlineDetail (row) {
-
-			let procDefId = ''
-			if (row.projectLevel === '1') {
-				procDefId = this.onlineArchivingProcDefIdA
-			} else if (row.projectLevel === '2'){
-				procDefId = this.onlineArchivingProcDefIdB
-			}
-			taskService.getTaskDef({
-				procInsId: row.onlineArchivingProcInsId,
-				procDefId: procDefId
-			}).then((data) => {
-				this.$router.push({
-					path: '/flowable/task/TaskFormDetail',
-					query: {
-						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
-						isShow: 'false',
-						readOnly: true,
-						title: '线上归档流程详情',
-						formTitle: '线上归档流程详情',
-						businessId: row.id,
-						status: 'reback'
-					}
+			if (!this.commonJS.isEmpty(row.onlineArchivingStatus) && row.onlineArchivingStatus !== '0') {
+				let procDefId = ''
+				if (row.projectLevel === '1') {
+					procDefId = this.onlineArchivingProcDefIdA
+				} else if (row.projectLevel === '2'){
+					procDefId = this.onlineArchivingProcDefIdB
+				}
+				taskService.getTaskDef({
+					procInsId: row.onlineArchivingProcInsId,
+					procDefId: procDefId
+				}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskFormDetail',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							isShow: 'false',
+							readOnly: true,
+							title: '线上归档流程详情',
+							formTitle: '线上归档流程详情',
+							businessId: row.id,
+							status: 'reback'
+						}
+					})
 				})
-			})
+			}
+
 		},
 		// 撤回线上归档
 		rebackPushOnline (row) {
@@ -888,25 +907,27 @@
 		},
 		// 纸质归档流程详情
 		pushPaperDetail (row) {
-
-			let procDefId = this.paperArchivingProcDefId
-			taskService.getTaskDef({
-				procInsId: row.paperArchivingProcInsId,
-				procDefId: procDefId
-			}).then((data) => {
-				this.$router.push({
-					path: '/flowable/task/TaskFormDetail',
-					query: {
-						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
-						isShow: 'false',
-						readOnly: true,
-						title: '纸质归档流程详情',
-						formTitle: '纸质归档流程详情',
-						businessId: row.id,
-						status: 'reback'
-					}
+			if (!this.commonJS.isEmpty(row.paperArchivingStatus) && row.paperArchivingStatus !== '0') {
+				let procDefId = this.paperArchivingProcDefId
+				taskService.getTaskDef({
+					procInsId: row.paperArchivingProcInsId,
+					procDefId: procDefId
+				}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskFormDetail',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							isShow: 'false',
+							readOnly: true,
+							title: '纸质归档流程详情',
+							formTitle: '纸质归档流程详情',
+							businessId: row.id,
+							status: 'reback'
+						}
+					})
 				})
-			})
+			}
+
 		},
 		// 撤回纸质归档
 		rebackPushPaper (row) {
@@ -944,7 +965,7 @@
 		todoPushPaper (row) {
 			let cUser = false
 			taskService.getTaskDefInfo({
-				taskId: row.paperArchivingTaskId
+				taskId: row.onlineArchivingTaskId
 			}).then((data) => {
 				this.$router.push({
 					path: '/flowable/task/TaskForm',

+ 986 - 0
src/views/cw/reportManagement/ReportManagementList2.vue

@@ -0,0 +1,986 @@
+<template>
+  <div class="page">
+    <el-form :inline="true" class="query-form m-b-10" v-if="searchVisible" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
+      <!-- 搜索框-->
+		<el-form-item v-if="showHideItem" label="报告文号" prop="reportNo">
+			<el-input v-model="searchForm.reportNo" placeholder="请输入报告文号" clearable></el-input>
+		</el-form-item>
+      <el-form-item label="项目编号" prop="projectNumber">
+        <el-input v-model="searchForm.projectNumber" placeholder="请输入项目编号" clearable></el-input>
+      </el-form-item>
+      <el-form-item label="项目名称" prop="projectName">
+        <el-input v-model="searchForm.projectName" placeholder="请输入项目名称" clearable></el-input>
+      </el-form-item>
+
+		<el-form-item v-if="showHideItem" label="创建人" prop="createBy">
+        <SelectUserTree
+          ref="companyTree"
+          :props="{
+                  value: 'id',             // ID字段名
+                  label: 'name',         // 显示名称
+                  children: 'children'    // 子级字段名
+                }"
+          :url="`/system-server/sys/user/treeUserDataAllOffice?type=2`"
+          :value="searchForm.createBy"
+          :clearable="true"
+		  size="default"
+          :accordion="true"
+          @getValue="(value) => {searchForm.createBy=value}"/>
+      </el-form-item>
+
+      <el-form-item v-if="showHideItem" label="项目类别" prop="projectCategory">
+        <el-select v-model="searchForm.projectCategory" placeholder="请选择" style="width:100%;">
+          <el-option
+            v-for="item in $dictUtils.getDictList('program_engineering_consultation_type')"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item v-if="showHideItem" label="创建时间" prop="contractDates">
+        <el-date-picker
+          placement="bottom-start"
+          format="YYYY-MM-DD HH:mm:ss"
+          value-format="YYYY-MM-DD HH:mm:ss"
+          v-model="searchForm.contractDates"
+          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>
+    </el-form>
+    <div class="jp-table top" style="">
+      <vxe-toolbar :refresh="{query: refreshList}" ref="toolbarRef" export custom>
+        <template #buttons>
+<!--          <el-button v-if="hasPermission('cw_work_client:info:add')" type="primary" icon="el-icon-plus" @click="start()">新建</el-button>-->
+        </template>
+		  <template #tools>
+			  <vxe-button
+				  text
+				  type="primary"
+				  :title="searchVisible ? '收起检索' : '展开检索'"
+				  icon="vxe-icon-search"
+				  class="tool-btn"
+				  @click="searchVisible = !searchVisible"
+			  ></vxe-button>
+		  </template>
+      </vxe-toolbar>
+      <div style="height: calc(100% - 90px)">
+        <vxe-table
+          border="inner"
+          auto-resize
+          resizable
+          height="auto"
+          :loading="loading"
+          ref="clientTable"
+          show-header-overflow
+          show-overflow
+          highlight-hover-row
+          :print-config="{}"
+          :export-config="{
+                    remote: true,
+                    filename: `报告信息${moment(new Date()).format('YYYY-MM-DD')}`,
+                    sheetName: '报告信息',
+                    exportMethod: exportMethod,
+                    types: ['xlsx'],
+                    modes: ['current', 'selected', 'all']
+                  }"
+          :menu-config="{}"
+          @sort-change="sortChangeHandle"
+          :sort-config="{remote:true}"
+          :data="dataList"
+          :checkbox-config="{}">
+          <vxe-column type="seq" width="60" title="序号"></vxe-column>
+<!--          <vxe-column width="100" align="center" title="单据编号" field="documentNo">-->
+<!--            <template #default="scope">-->
+<!--              <el-link  type="primary" :underline="false" v-if="hasPermission('cwProjectReport:list')" @click="view(scope.row.id)">{{scope.row.documentNo}}</el-link>-->
+<!--              <el-link  type="primary" :underline="false" v-else-if="hasPermission('cwProjectReport:list')"  @click="view(scope.row.id,)">{{scope.row.documentNo}}</el-link>-->
+<!--              <span v-else>{{scope.row.documentNo}}</span>-->
+<!--            </template>-->
+<!--          </vxe-column>-->
+          <vxe-column width="150" align="center" title="项目编号" field="projectNumber"></vxe-column>
+          <vxe-column min-width="220" align="center" title="项目名称" field="projectName">
+			  <template #default="scope">
+				  <el-link  type="primary" :underline="false" @click="projectView(scope.row.projectId)">{{scope.row.projectName}}</el-link>
+			  </template>
+		  </vxe-column>
+		  <vxe-column width="170" align="center" title="报告号" field="reportNo"></vxe-column>
+		  <vxe-column width="170" align="center" title="合同名称" field="contractName">
+			  <template #default="scope">
+				  <el-link  type="primary" :underline="false" @click="contractView(scope.row.contractId)">{{scope.row.contractName}}</el-link>
+			  </template>
+		  </vxe-column>
+		  <vxe-column width="170" align="center" title="委托方" field="clientName"></vxe-column>
+			<vxe-column width="80" align="center" title="登记人" field="userName"></vxe-column>
+			<vxe-column width="110" align="center" title="复核通过时间" field="checkCompleteTime"></vxe-column>
+          <vxe-column width="110" align="center" title="创建时间" field="createTime"></vxe-column>
+			<vxe-column min-width="130" title="项目等级" field="projectLevel" align="center">
+				<template #default="scope">
+					{{$dictUtils.getDictLabel('cw_project_level', scope.row.projectLevel, '')}}
+				</template>
+			</vxe-column>
+			<vxe-column min-width="130" title="质量复核" fixed="right" align="center" field="reviewStatus">
+				<template #default="scope">
+					<el-button @click="detail(scope.row)" :type="$dictUtils.getDictLabel('quality_status_info', scope.row.reviewStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("quality_status", scope.row.reviewStatus, '未开始')}} </el-button>
+				</template>
+			</vxe-column>
+			<vxe-column min-width="100" title="报告签发" fixed="right" align="center" field="signAndIssueStatus">
+				<template #default="scope">
+					<el-button @click="signAndIssueDetail(scope.row)"
+							   :type="$dictUtils.getDictLabel('status_info', scope.row.signAndIssueStatus, '')"
+							   effect="dark">
+						{{$dictUtils.getDictLabel("status", scope.row.signAndIssueStatus, '未开始')}}
+					</el-button>
+				</template>
+			</vxe-column>
+			<vxe-column min-width="130" title="电子/超期天数" fixed="right" align="center" field="onlineArchivingStatus">
+				<template #default="scope">
+					<el-button @click="pushOnlineDetail(scope.row)" :type="$dictUtils.getDictLabel('online_status_info', scope.row.onlineArchivingStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("online_status", scope.row.onlineArchivingStatus, '未开始')}} </el-button>
+					<span v-if="scope.row.onlineOverdueDates > 0">{{scope.row.onlineOverdueDates}}天</span>
+				</template>
+			</vxe-column>
+			<vxe-column min-width="100" title="纸质/超期天数" fixed="right" align="center" field="paperArchivingStatus">
+				<template #default="scope">
+					<el-button @click="pushPaperDetail(scope.row)" :type="$dictUtils.getDictLabel('online_status_info', scope.row.paperArchivingStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("online_status", scope.row.paperArchivingStatus, '未开始')}} </el-button>
+					<span v-if="scope.row.paperOverdueDates > 0">{{scope.row.paperOverdueDates}}天</span>
+				</template>
+			</vxe-column>
+          <vxe-column title="操作" width="200px" fixed="right" align="center">
+            <template  #default="scope">
+              <div v-if="isAdmin">
+                <el-button text type="primary"  @click="edit(scope.row.id)">修改</el-button>
+                <el-button text type="primary" @click="del(scope.row.id,scope.row.projectId)">删除</el-button>
+              </div>
+				<div v-else>
+					<!--<el-button v-if="hasPermission('cwProjectReport:edit')&&
+                              (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId))&&
+                              scope.row.status === '5' && scope.row.reviewStatus === '5'"
+							   text type="primary"  @click="edit(scope.row.id)">修改</el-button>
+
+					<el-button v-else-if="hasPermission('cwProjectReport:del')&&
+                              (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId))&&
+                              scope.row.status === '5' && scope.row.reviewStatus === '5'"
+							   text type="primary" @click="del(scope.row.id,scope.row.projectId)">删除</el-button>-->
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && (scope.row.reviewStatus === '0' || scope.row.reviewStatus === '1' || scope.row.reviewStatus === '6' || scope.row.reviewStatus === '3' || scope.row.reviewStatus === undefined || scope.row.reviewStatus === '')" text type="primary" @click="pushF(scope.row)">复核</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '2'" text type="primary" @click="rebackF(scope.row)">撤回复核</el-button>
+					<!--              审核-->
+<!--					<el-button v-if="scope.row.reviewStatus==='2' && checkIsAuditReview(scope.row)" text type="primary" @click="examineReview(scope.row)">审核</el-button>-->
+					<!--              被驳回后当前申请人重新调整-->
+					<el-button v-if="hasPermission('cw:workContract:filed')&&scope.row.createById === $store.state.user.id&&scope.row.reviewStatus === '4'" text type="primary" @click="adjustReview(scope.row)">驳回调整</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && (scope.row.reviewStatus === '5' || scope.row.reviewStatus === '7')
+					&& (scope.row.signAndIssueStatus === '0' || scope.row.signAndIssueStatus === '1' || scope.row.signAndIssueStatus === '3' || scope.row.signAndIssueStatus === undefined || scope.row.signAndIssueStatus === '') && scope.row.projectLevel !== '2'" text type="primary" @click="pushSignAndIssue(scope.row)">报告签发</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && scope.row.signAndIssueStatus === '2'" text type="primary" @click="rebackSignAndIssue(scope.row)">撤回签发</el-button>
+					<el-button v-if="hasPermission('signAndIssue:del') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && (scope.row.signAndIssueStatus === '1' || scope.row.signAndIssueStatus === '3' || scope.row.signAndIssueStatus === '4')" text type="primary" @click="deleteSignAndIssue(scope.row)">删除签发</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed')&&scope.row.createById === $store.state.user.id&&scope.row.reviewStatus === '5'&&scope.row.signAndIssueStatus === '4'" text type="primary" @click="adjustSignAndIssue(scope.row)">驳回调整</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && (scope.row.reviewStatus === '5' || scope.row.reviewStatus === '7') && (scope.row.signAndIssueStatus === '5' || scope.row.projectLevel === '2')
+							   && (scope.row.onlineArchivingStatus === '0' || scope.row.onlineArchivingStatus === '1' || scope.row.onlineArchivingStatus === '3' || scope.row.onlineArchivingStatus === undefined || scope.row.onlineArchivingStatus === '' || scope.row.onlineArchivingStatus === '6')"
+							   text type="primary" @click="pushOnlineArchiving(scope.row)">线上归档</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && scope.row.onlineArchivingStatus === '2'" text type="primary" @click="rebackPushOnline(scope.row)">撤回线上归档</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && scope.row.onlineArchivingStatus === '4'" text type="primary" @click="adjustPushOnline(scope.row)">驳回调整</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5' && scope.row.reviewStatus === '5' && (scope.row.onlineArchivingStatus === '5' || scope.row.onlineArchivingStatus === '7')
+					&& (scope.row.paperArchivingStatus === '0' || scope.row.paperArchivingStatus === '1' || scope.row.paperArchivingStatus === '3' || scope.row.paperArchivingStatus === undefined || scope.row.paperArchivingStatus === '' || scope.row.paperArchivingStatus === '6')" text type="primary" @click="pushPaperArchiving(scope.row)">纸质归档</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && scope.row.onlineArchivingStatus === '5' && scope.row.paperArchivingStatus === '2'" text type="primary" @click="rebackPushPaper(scope.row)">撤回纸质归档</el-button>
+					<el-button v-if="hasPermission('cw:workContract:filed') && (scope.row.createById === $store.state.user.id||haveProjectIds.includes(scope.row.projectId)) && scope.row.status === '5'&& scope.row.reviewStatus === '5' && scope.row.onlineArchivingStatus === '5' && scope.row.paperArchivingStatus === '4'" text type="primary" @click="adjustPushPaper(scope.row)">驳回调整</el-button>
+				</div>
+            </template>
+          </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>
+    </div>
+    <ReportManagementForm ref="reportManagementForm" @refreshList="refreshList"></ReportManagementForm>
+    <ReportManagementAddForm ref="reportManagementAddForm" @refreshList="refreshList"></ReportManagementAddForm>
+	  <ContractAddForm ref="contractAddForm" @refreshDataList="refreshList"></ContractAddForm>
+	  <ProjectRecordsInfoForm ref="projectRecordsInfoForm" @refreshList="refreshList"></ProjectRecordsInfoForm>
+  </div>
+</template>
+
+<script>
+	import ContractAddForm from '@/views/cw/workContract/contractRegisitionAddForm/ContractAddForm'
+	import ProjectRecordsInfoForm from './ProjectRecordsInfoForm'
+  import InputNumber from '@/views/cw/workContract/InputNumber.vue'
+  import projectReportService from '@/api/cw/reportManagement/ProjectReportService'
+  import ReportReviewService from '@/api/cw/reportManagement/ReportReviewService'
+  import ReportSignAndIssueService from '@/api/cw/reportManagement/ReportSignAndIssueService'
+  import reportOnlineArchivingService from '@/api/cw/reportManagement/ReportOnlineArchivingService'
+  import reportPaperArchivingService from '@/api/cw/reportManagement/reportPaperArchivingService'
+  import ReportNumberApplyService from '@/api/cw/reportManagement/ReportNumberApplyService'
+  import taskService from '@/api/flowable/TaskService'
+  import processService from '@/api/flowable/ProcessService'
+  import ReportManagementForm from './ReportManagementFormNew1'
+  import ReportManagementAddForm from './ReportManagementAddForm'
+  import pick from 'lodash.pick'
+  import userService from '@/api/sys/UserService'
+  import SelectUserTree from '@/views/utils/treeUserSelect'
+  import projectRecordsService from '@/api/cw/projectRecords/ProjectRecordsService'
+  import UserSelect from '@/views/cw/workClientInfo/clientUserSelect'
+  export default {
+    data () {
+      return {
+      	searchVisible : true,
+        showHideItem: false,
+        showHideIcon: 'el-icon-arrow-down',
+        showHideName: '展示',
+        num: 0,
+        searchForm: {
+          reportNo: '',
+          projectNumber: '',
+          projectName: '',
+          createBy: '',
+          contractDates: [],
+			projectCategory: ''
+        },
+        dataList: [],
+        tablePage: {
+          total: 0,
+          currentPage: 1,
+          pageSize: 10,
+          orders: []
+        },
+        tableKey: '',
+        loading: false,
+        processDefinitionAuditId: '',
+        procDefAuditKey: '',
+		  signAndIssueProcDefId: '',
+		  signAndIssueProcDefKey: '',
+		  paperArchivingProcDefId: '',
+		  paperArchivingProcDefKey: '',
+		  onlineArchivingProcDefIdA: '',
+		  onlineArchivingProcDefKeyA: '',
+		  onlineArchivingProcDefIdB: '',
+		  onlineArchivingProcDefKeyB: '',
+		processDefinitionAuditIdAndSId: '',
+        procDefAuditKeyAndSId: '',
+        isAdmin: false,
+        create: '',
+        processDefinitionSId: '',
+        procDefSKey: '',
+        processDefinitionSId2: '',
+        procDefSKey2: '',
+        processDefinitionSId3: '',
+        procDefSKey3: '',
+        haveProjectIds: '',
+	    processDefinitionSigId: '',
+	    procDefSigKey: '',
+	    processDefinitionTakeNumberAuditId: '',
+	    procDefTakeNumberAuditKey: '',
+	    processDefinitionTakeNumberSId: '',
+	    procDefSTakeNumberKey: '',
+		  processDefinitionTakeNumberReviewAuditId: '',
+		  procDefTakeNumberReviewAuditKey: '',
+      }
+    },
+    reportReviewService: null,
+	  reportSignAndIssueService: null,
+	  reportNumberApplyService: null,
+    created () {
+      this.reportReviewService = new ReportReviewService()
+      this.reportSignAndIssueService = new ReportSignAndIssueService()
+      this.reportNumberApplyService = new ReportNumberApplyService()
+    },
+    components: {
+		ContractAddForm,
+		ProjectRecordsInfoForm,
+      ReportManagementForm,
+      ReportManagementAddForm,
+      SelectUserTree,
+      InputNumber,
+      UserSelect,
+    },
+    computed: {
+      userName () {
+        return this.$store.state.user.name
+      },
+      user () {
+        this.createName = this.$store.state.user.name
+        return this.$store.state.user
+      }
+    },
+    mounted () {
+		this.$nextTick(() => {
+			//将表格和工具栏进行关联
+			const $table = this.$refs.clientTable;
+			const $toolbar = this.$refs.toolbarRef;
+			$table.connect($toolbar);
+		})
+      this.refreshList()
+    },
+    activated () {
+      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 () {
+        this.$refs.reportManagementForm.init('add', '', '')
+      },
+      // 修改
+      edit (id) {
+        id = id || this.$refs.clientTable.getCheckboxRecords().map(item => {
+          return item.id
+        })[0]
+        this.$refs.reportManagementForm.init('edit', id, '')
+      },
+      // 查看
+      view (id) {
+        this.$refs.reportManagementForm.init('view', id, '报告审核单下载')
+      },
+		// 查看合同信息
+	  contractView (id) {
+			this.$refs.contractAddForm.init('view', id)
+      },
+		// 查看项目信息
+	  projectView (id) {
+			this.$refs.projectRecordsInfoForm.init('view', id)
+      },
+      // 查询当前用户是否是管理员用户
+      checkIsAdmin () {
+        userService.is().then((data) => {
+          this.isAdmin = data
+        })
+      },
+      // 获取数据列表
+      refreshList () {
+        this.loading = true
+        projectReportService.list2({
+          'current': this.tablePage.currentPage,
+          'size': this.tablePage.pageSize,
+          'orders': this.tablePage.orders,
+          ...this.searchForm
+        }).then((data) => {
+          projectRecordsService.getHaveProjectIds().then((data) => {
+            if (this.commonJS.isNotEmpty(data)) {
+              this.haveProjectIds = data.map(i => {
+                if (this.commonJS.isNotEmpty(i)) {
+                  return i
+                }
+              }).join(',')
+            }
+          })
+          this.dataList = data.records
+          this.tablePage.total = data.total
+          this.tableKey = Math.random()
+          this.loading = false
+        })
+        this.checkIsAdmin()
+        processService.getByName('会计-报告复核(咨询)').then((data) => {
+          if (!this.commonJS.isEmpty(data.id)) {
+            this.processDefinitionAuditId = data.id
+            this.procDefAuditKey = data.key
+          }
+        })
+		  processService.getByName('报告签发').then((data) => {
+          if (!this.commonJS.isEmpty(data.id)) {
+            this.signAndIssueProcDefId = data.id
+            this.signAndIssueProcDefKey = data.key
+          }
+        })
+		  processService.getByName('报告-线上归档(A)').then((data) => {
+			  if (!this.commonJS.isEmpty(data.id)) {
+				  this.onlineArchivingProcDefIdA = data.id
+				  this.onlineArchivingProcDefKeyA = data.key
+			  }
+		  })
+		  processService.getByName('报告-线上归档(B)').then((data) => {
+			  if (!this.commonJS.isEmpty(data.id)) {
+				  this.onlineArchivingProcDefIdB = data.id
+				  this.onlineArchivingProcDefKeyB = data.key
+			  }
+		  })
+		  processService.getByName('报告-纸质归档').then((data) => {
+			  if (!this.commonJS.isEmpty(data.id)) {
+				  this.paperArchivingProcDefId = data.id
+				  this.paperArchivingProcDefKey = data.key
+			  }
+		  })
+      },
+      // 当前页
+      currentChangeHandle ({ currentPage, pageSize }) {
+        this.tablePage.currentPage = currentPage
+        this.tablePage.pageSize = pageSize
+        this.refreshList()
+      },
+      // 排序
+      sortChangeHandle (column) {
+        this.tablePage.orders = []
+        if (column.order != null) {
+          this.tablePage.orders.push({column: this.$utils.toLine(column.property), asc: column.order === 'asc'})
+        }
+        this.refreshList()
+      },
+      // 删除
+      del (id,projectId) {
+      	console.log('projectId', projectId)
+        let ids = id || this.$refs.clientTable.getCheckboxRecords().map(item => {
+          return item.id
+        }).join(',')
+        this.$confirm(`确定删除所选项吗?`, '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.loading = true
+          projectReportService.delete(ids,projectId).then((data) => {
+            this.$message.success(data)
+            this.refreshList()
+            this.loading = false
+          })
+        })
+      },
+      resetSearch () {
+        this.$refs.searchForm.resetFields()
+        this.refreshList()
+      },
+      start () {
+        this.$refs.reportManagementAddForm.init('add')
+      },
+		pushF (row) {
+			// 读取流程表单
+			let title = ' '
+			if (!row.documentNo) {
+				title = ' ' + row.projectName
+			} else {
+				title = ' ' + row.documentNo + ' - ' + row.projectName
+			}
+
+			let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了` + title + '[会计-报告复核]'
+			let status = 'startAndHold'
+			if (row.reviewStatus === '3') {
+				status = 'startAndClose'
+			} else if (row.reviewStatus === '4') {
+				status = 'reapplyFlag'
+			}
+
+			if (row.projectLevel === '1') {
+				status = 'startAndClose'
+			}
+
+			taskService.getTaskDef({ procDefId: this.processDefinitionAuditId,
+				businessId: row.id,
+				businessTable: 'cw_project_report_review_new'}).then((data) => {
+				this.$router.push({
+					path: '/flowable/task/TaskForm',
+					query: {
+						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+						procDefId: this.processDefinitionAuditId,
+						procDefKey: this.procDefAuditKey,
+						title: title,
+						formType: data.formType,
+						formUrl: data.formUrl,
+						formTitle: processTitle,
+						businessTable: 'cw_project_report_review_new',
+						businessId: row.id,
+						isShow: 'false',
+						status: status,
+						routePath: '/cw/reportManagement/ReportManagementList2'
+					}
+				})
+			})
+		},
+		// 审核或重新调整跳转
+		todoReview (row) {
+			let cUser = false
+			taskService.getTaskDefInfo({
+				taskId: row.revTaskId
+			}).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/ReportManagementList2'   // 数据处理后需要跳转的页面路径
+					}
+				})
+			})
+		},
+		// 查询当前登录人是否是数据的审核人
+		checkIsAuditReview (row) {
+			let loginUserId = this.$store.state.user.id  // 获取当前登录用户id
+			if (this.commonJS.isNotEmpty(row.auditUserIdsRev)) {
+				for (const userId of row.auditUserIdsRev) {
+					if (userId === loginUserId) {  // 当数据的审核人中包含当前登录人id时,返回true
+						return true
+					}
+				}
+			}
+			return false
+		},
+		// 流程详情
+		detail (row) {
+			if (!this.commonJS.isEmpty(row.reviewStatus) && row.reviewStatus !== '0') {
+				taskService.getTaskDef({
+					procInsId: row.procInsId3,
+					procDefId: this.processDefinitionAuditId
+				}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskFormDetail',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							isShow: 'false',
+							readOnly: true,
+							title: '复核流程详情',
+							formTitle: '复核流程详情',
+							businessId: row.id,
+							status: 'reback'
+						}
+					})
+				})
+			}
+
+		},
+		// 撤回报告复核
+		rebackF (row) {
+			this.$confirm(`确定要撤回该申请吗?`, '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning'
+			}).then(async () => { // 需要修改row.sid1
+				await this.reportReviewService.queryByReportIdNew(row.id).then((data) => {
+					if (data.reviewStatus !== '2') { // status的值不等于“审核中”,就弹出提示
+						this.$message.error('数据已发生改变或不存在,请刷新数据')
+						this.refreshList()
+					} else {
+						processService.revokeProcIns(row.procInsId3).then((data) => {
+							let form = {reviewStatus: '3', id: row.reviewNewId}
+							this.reportReviewService.updateReviewStatusByReportIdNew(form)
+							this.$message.success(data)
+							this.refreshList()
+						})
+					}
+				})
+			})
+		},
+		// 驳回后调整
+		adjustReview (row) {
+			this.reportReviewService.queryByReportIdNew(row.id).then((data) => {
+				if (data.reviewStatus !== '4') { // status的值不等于“驳回”,就弹出提示
+					this.$message.error('数据已发生改变或不存在,请刷新数据')
+					this.refreshList()
+				} else {
+					this.todoReview(row)
+				}
+			})
+		},
+
+		pushSignAndIssue (row) {
+			// 读取流程表单
+			let title = ' '
+			if (!row.documentNo) {
+				title = ' ' + row.projectName
+			} else {
+				title = ' ' + row.documentNo + ' - ' + row.projectName
+			}
+
+			let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了` + title + '[会计-报告签发]'
+			let status = 'startAndHold'
+			if (row.reviewStatus === '3') {
+				status = 'startAndClose'
+			} else if (row.reviewStatus === '4') {
+				status = 'reapplyFlag'
+			}
+
+			if (row.projectLevel === '1') {
+				status = 'startAndClose'
+			}
+
+			taskService.getTaskDef({ procDefId: this.signAndIssueProcDefId,
+				businessId: row.signAndIssueId,
+				businessTable: 'cw_project_report_sign_and_issue'}).then((data) => {
+				this.$router.push({
+					path: '/flowable/task/TaskForm',
+					query: {
+						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+						procDefId: this.signAndIssueProcDefId,
+						procDefKey: this.signAndIssueProcDefKey,
+						title: title,
+						formType: data.formType,
+						formUrl: data.formUrl,
+						formTitle: processTitle,
+						businessTable: 'cw_project_report_sign_and_issue',
+						businessId: row.id,
+						isShow: 'false',
+						status: status,
+						routePath: '/cw/reportManagement/ReportManagementList2'
+					}
+				})
+			})
+		},
+		// 报告签发流程详情
+		signAndIssueDetail (row) {
+			if (!this.commonJS.isEmpty(row.signAndIssueStatus) && row.signAndIssueStatus !== '0') {
+				taskService.getTaskDef({
+					procInsId: row.procInsId4,
+					procDefId: this.signAndIssueProcDefId
+				}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskFormDetail',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							isShow: 'false',
+							readOnly: true,
+							title: '报告签发流程详情',
+							formTitle: '报告签发流程详情',
+							businessId: row.id,
+							status: 'reback'
+						}
+					})
+				})
+			}
+
+		},
+		// 撤回报告签发
+		rebackSignAndIssue (row) {
+			this.$confirm(`确定要撤回该申请吗?`, '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning'
+			}).then(async () => { // 需要修改row.sid1
+				await this.reportSignAndIssueService.queryByReportId(row.id).then((data) => {
+					if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+						this.$message.error('数据已发生改变或不存在,请刷新数据')
+						this.refreshList()
+					} else {
+						processService.revokeProcIns(row.procInsId4).then((data) => {
+							let form = {status: '3', id: row.signAndIssueId}
+							this.reportSignAndIssueService.updateStatusByReportId(form)
+							this.$message.success(data)
+							this.refreshList()
+						})
+					}
+				})
+			})
+		},
+		// 报告签发驳回调整
+		adjustSignAndIssue (row) {
+			this.reportSignAndIssueService.queryByReportId(row.id).then((data) => {
+				if (data.status !== '4') { // status的值不等于“驳回”,就弹出提示
+					this.$message.error('数据已发生改变或不存在,请刷新数据')
+					this.refreshList()
+				} else {
+					this.todoSignAndIssue(row)
+				}
+			})
+		},
+		// 审核或重新调整跳转
+		todoSignAndIssue (row) {
+      	console.log('row', row)
+			let cUser = false
+			taskService.getTaskDefInfo({
+				taskId: row.signAndIssueTaskId
+			}).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/ReportManagementList2'   // 数据处理后需要跳转的页面路径
+					}
+				})
+			})
+		},
+		// 删除签发
+		deleteSignAndIssue (row) {
+			this.$confirm(`确定要删除该报告签发吗?`, '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning'
+			}).then(() => {
+				this.loading = true
+				this.reportSignAndIssueService.delete(row.signAndIssueId).then((data) => {
+					this.$message.success(data)
+					this.refreshList()
+					this.loading = false
+				})
+			})
+		},
+		pushOnlineArchiving (row) {
+			// 读取流程表单
+			let title = ' '
+			if (!row.documentNo) {
+				title = ' ' + row.projectName
+			} else {
+				title = ' ' + row.documentNo + ' - ' + row.projectName
+			}
+
+			let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了` + title + '[报告-线上归档]'
+			let status = 'startAndHold'
+			if (row.reviewStatus === '3') {
+				status = 'startAndClose'
+			} else if (row.reviewStatus === '4') {
+				status = 'reapplyFlag'
+			}
+
+			let procDefId = ''
+			let procDefKey = ''
+			if (row.projectLevel === '1') {
+				status = 'startAndClose'
+				procDefId = this.onlineArchivingProcDefIdA
+				procDefKey = this.onlineArchivingProcDefKeyA
+			} else if (row.projectLevel === '2'){
+				status = 'startAndClose'
+				procDefId = this.onlineArchivingProcDefIdB
+				procDefKey = this.onlineArchivingProcDefKeyB
+			}
+			console.log('row', row)
+
+
+			taskService.getTaskDef({ procDefId: procDefId,
+				businessId: row.id,
+				businessTable: 'cw_project_report_online_archiving'}).then((data) => {
+				this.$router.push({
+					path: '/flowable/task/TaskForm',
+					query: {
+						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+						procDefId: procDefId,
+						procDefKey: procDefKey,
+						title: title,
+						formType: data.formType,
+						formUrl: data.formUrl,
+						formTitle: processTitle,
+						businessTable: 'cw_project_report_online_archiving',
+						businessId: row.id,
+						isShow: 'false',
+						status: status,
+						routePath: '/cw/reportManagement/ReportManagementList2'
+					}
+				})
+			})
+		},
+		// 线上归档流程详情
+		pushOnlineDetail (row) {
+			if (!this.commonJS.isEmpty(row.onlineArchivingStatus) && row.onlineArchivingStatus !== '0') {
+				let procDefId = ''
+				if (row.projectLevel === '1') {
+					procDefId = this.onlineArchivingProcDefIdA
+				} else if (row.projectLevel === '2'){
+					procDefId = this.onlineArchivingProcDefIdB
+				}
+				taskService.getTaskDef({
+					procInsId: row.onlineArchivingProcInsId,
+					procDefId: procDefId
+				}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskFormDetail',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							isShow: 'false',
+							readOnly: true,
+							title: '线上归档流程详情',
+							formTitle: '线上归档流程详情',
+							businessId: row.id,
+							status: 'reback'
+						}
+					})
+				})
+			}
+
+		},
+		// 撤回线上归档
+		rebackPushOnline (row) {
+			this.$confirm(`确定要撤回该申请吗?`, '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning'
+			}).then(async () => { // 需要修改row.sid1
+				await reportOnlineArchivingService.queryByReportId(row.id).then((data) => {
+					if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+						this.$message.error('数据已发生改变或不存在,请刷新数据')
+						this.refreshList()
+					} else {
+						processService.revokeProcIns(row.onlineArchivingProcInsId).then((data) => {
+							let form = {status: '3', id: row.onlineArchivingId}
+							reportOnlineArchivingService.updateStatusByReportId(form)
+							this.$message.success(data)
+							this.refreshList()
+						})
+					}
+				})
+			})
+		},
+		// 在线归档驳回调整
+		adjustPushOnline (row) {
+			reportOnlineArchivingService.queryByReportId(row.id).then((data) => {
+				if (data.status !== '4') { // status的值不等于“驳回”,就弹出提示
+					this.$message.error('数据已发生改变或不存在,请刷新数据')
+					this.refreshList()
+				} else {
+					this.todoPushOnline(row)
+				}
+			})
+		},
+		todoPushOnline (row) {
+			let cUser = false
+			taskService.getTaskDefInfo({
+				taskId: row.onlineArchivingTaskId
+			}).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/ReportManagementList2'   // 数据处理后需要跳转的页面路径
+					}
+				})
+			})
+		},
+		pushPaperArchiving (row) {
+			// 读取流程表单
+			let title = ' '
+			if (!row.documentNo) {
+				title = ' ' + row.projectName
+			} else {
+				title = ' ' + row.documentNo + ' - ' + row.projectName
+			}
+
+			let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了` + title + '[报告-线上归档]'
+			let status = 'startAndHold'
+			if (row.reviewStatus === '3') {
+				status = 'startAndClose'
+			} else if (row.reviewStatus === '4') {
+				status = 'reapplyFlag'
+			}
+
+			let procDefId = this.paperArchivingProcDefId
+			let procDefKey = this.paperArchivingProcDefKey
+			status = 'startAndClose'
+
+
+			taskService.getTaskDef({ procDefId: procDefId,
+				businessId: row.id,
+				businessTable: 'cw_project_report_paper_archiving'}).then((data) => {
+				this.$router.push({
+					path: '/flowable/task/TaskForm',
+					query: {
+						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+						procDefId: procDefId,
+						procDefKey: procDefKey,
+						title: title,
+						formType: data.formType,
+						formUrl: data.formUrl,
+						formTitle: processTitle,
+						businessTable: 'cw_project_report_paper_archiving',
+						businessId: row.id,
+						isShow: 'false',
+						status: status,
+						routePath: '/cw/reportManagement/ReportManagementList2'
+					}
+				})
+			})
+		},
+		// 纸质归档流程详情
+		pushPaperDetail (row) {
+			if (!this.commonJS.isEmpty(row.paperArchivingStatus) && row.paperArchivingStatus !== '0') {
+				let procDefId = this.paperArchivingProcDefId
+				taskService.getTaskDef({
+					procInsId: row.paperArchivingProcInsId,
+					procDefId: procDefId
+				}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskFormDetail',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							isShow: 'false',
+							readOnly: true,
+							title: '纸质归档流程详情',
+							formTitle: '纸质归档流程详情',
+							businessId: row.id,
+							status: 'reback'
+						}
+					})
+				})
+			}
+
+		},
+		// 撤回纸质归档
+		rebackPushPaper (row) {
+			this.$confirm(`确定要撤回该申请吗?`, '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning'
+			}).then(async () => { // 需要修改row.sid1
+				await reportPaperArchivingService.queryByReportId(row.id).then((data) => {
+					if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+						this.$message.error('数据已发生改变或不存在,请刷新数据')
+						this.refreshList()
+					} else {
+						processService.revokeProcIns(row.paperArchivingProcInsId).then((data) => {
+							let form = {status: '3', id: row.paperArchivingId}
+							reportPaperArchivingService.updateStatusByReportId(form)
+							this.$message.success(data)
+							this.refreshList()
+						})
+					}
+				})
+			})
+		},
+		// 纸质归档驳回调整
+		adjustPushPaper (row) {
+			reportPaperArchivingService.queryByReportId(row.id).then((data) => {
+				if (data.status !== '4') { // status的值不等于“驳回”,就弹出提示
+					this.$message.error('数据已发生改变或不存在,请刷新数据')
+					this.refreshList()
+				} else {
+					this.todoPushPaper(row)
+				}
+			})
+		},
+		todoPushPaper (row) {
+			let cUser = false
+			taskService.getTaskDefInfo({
+				taskId: row.onlineArchivingTaskId
+			}).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/ReportManagementList2'   // 数据处理后需要跳转的页面路径
+					}
+				})
+			})
+		},
+    }
+  }
+</script>

File diff suppressed because it is too large
+ 1039 - 0
src/views/cw/reportManagement/ReportManagementList3.vue


+ 778 - 0
src/views/cw/reportManagement/ReportPaperArchivingUpdateForm.vue

@@ -0,0 +1,778 @@
+<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+  <div>
+    <el-dialog
+      :title="title"
+      :close-on-click-modal="false"
+	  draggable
+      width="1400px"
+      height="500px"
+      @close="close"
+      append-to-body
+      v-model="visible">
+		<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="status === 'audit' || status === 'taskFormDetail'"
+				 label-width="135px" @submit.native.prevent>
+			<el-divider content-position="left"><i class="el-icon-document"></i> 项目合同信息</el-divider>
+			<el-row>
+				<el-col :span="12">
+					<el-form-item label="合同编号" prop="contractNo"
+								  :rules="[
+                   ]">
+						<el-input placeholder="" :disabled="true" show-word-limit v-model="inputForm.contractNo"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="合同名称" prop="contractName"
+								  :rules="[
+                   ]">
+						<el-input placeholder="" :disabled="true" show-word-limit v-model="inputForm.contractName"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="合同金额(元)" prop="contractAmount"
+								  :rules="[
+                   ]">
+						<el-input placeholder="" :disabled="true" show-word-limit v-model="inputForm.contractAmount"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="委托方" prop="clientName"
+								  :rules="[
+                   ]">
+						<el-input placeholder="" :disabled="true" show-word-limit v-model="inputForm.clientName"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="合同类型" prop="contractType"
+								  :rules="[
+              ]">
+						<el-select :disabled="true" v-model="inputForm.contractType" placeholder="请选择" style="width:100%;">
+							<el-option
+								v-for="item in $dictUtils.getDictList('cw_contract_type')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-divider content-position="left"><i class="el-icon-document"></i> 项目基础信息</el-divider>
+			<el-row  :gutter="0">
+				<el-col :span="12">
+					<el-form-item label="项目名称" prop="projectName"
+								  :rules="[
+                   ]">
+						<el-input :disabled="true" v-model="inputForm.projectName" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="项目编号" prop="projectNumber"
+								  :rules="[
+                   ]">
+						<el-input :disabled="true" v-model="inputForm.projectNumber" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="创建人" prop="projectCreateByName"
+								  :rules="[
+                   ]">
+						<el-input :disabled="true" v-model="inputForm.projectCreateByName" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="项目责任人" prop="projectCreateByName"
+								  :rules="[
+                   ]">
+						<el-input :disabled="true" v-model="inputForm.projectCreateByName" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="项目所属部门" prop="officeId"
+								  :rules="[
+                                {required: true, message:'项目所属部门不能为空', trigger:'blur'}
+                   ]">
+						<SelectTree
+							ref="officeTree"
+							:props="{
+                          value: 'id',             // ID字段名
+                          label: 'name',         // 显示名称
+                          children: 'children'    // 子级字段名
+                        }"
+							:url="`/system-server/sys/office/treeData?type=2`"
+							:value="inputForm.officeId"
+							:accordion="true"
+							size="large"
+							:disabled="true"
+							@getValue="(value) => {inputForm.officeId=value}"/>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="现场负责人" prop="projectManager"
+								  :rules="[
+                   ]">
+						<el-input :disabled="true" v-model="inputForm.projectManager" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="项目类别" prop="reportType"
+								  :rules="[
+                                 {required: true, message:'项目类别不能为空', trigger:'blur'}
+                  ]">
+						<el-select :disabled="true" v-model="inputForm.reportType" placeholder="请选择项目类别" clearable style="width: 100%;">
+							<el-option
+								v-for="item in $dictUtils.getDictList('program_engineering_consultation_type')"
+								: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="projectLevel"
+								  :rules="[
+                  {required: true, message:'请选择项目等级(500万及500万以上为A级,500万以下为B级)', trigger:'blur'}
+               ]">
+						<el-radio-group :disabled="true" v-model="inputForm.projectLevel">
+							<el-radio  v-for="item in $dictUtils.getDictList('cw_project_level')" :label="item.value" >{{item.label}}</el-radio>
+						</el-radio-group>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="项目规模(元)" prop="projectMoney"
+								  :rules="[{required: true, message:'项目规模不能为空', trigger:'blur'}
+                   ]">
+						<el-input-number
+							:disabled="true"
+							v-model="inputForm.projectMoney"
+							controls-position="right"
+							style="width:100%"
+							:precision="2"
+							:max="9999999999"
+							:step="0.01"
+							:min="0"
+							placeholder="请填写项目规模"
+							:controls="false"
+							clearable>
+						</el-input-number>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="工作开始日期" prop="planStartDate"
+								  :rules="[
+                 ]">
+						<el-date-picker
+							:disabled="true"
+							v-model="inputForm.planStartDate"
+							type="date"
+							value-format="YYYY-MM-DD"
+							placeholder="选择工作开始日期"
+							style="width:100%"
+							placement="bottom-start"
+							clearable>
+						</el-date-picker>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="工作结束日期" prop="planEndDate"
+								  :rules="[
+                 ]">
+						<el-date-picker
+							:disabled="true"
+							v-model="inputForm.planEndDate"
+							type="date"
+							value-format="YYYY-MM-DD"
+							placeholder="选择工作结束日期"
+							style="width:100%"
+							placement="bottom-start"
+							clearable>
+						</el-date-picker>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="创建时间" prop="createDate"
+								  :rules="[
+                   ]">
+						<el-date-picker
+							:disabled="true"
+							v-model="inputForm.createDate"
+							type="date"
+							value-format="YYYY-MM-DD"
+							placeholder="选择创建时间"
+							style="width:100%"
+							placement="bottom-start"
+							clearable>
+						</el-date-picker>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-form v-if="status === 'audit'" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+					 label-width="135px" @submit.native.prevent>
+				<el-row>
+					<el-col  :span="12">
+						<el-form-item label="案卷号" prop="filedNo"
+									  :rules="[
+                                {required: true, message:'案卷号不能为空', trigger:'blur'}
+                   ]">
+							<el-input :disabled="false" v-model="inputForm.filedNo" placeholder="请填写案卷号" clearable></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col  :span="12">
+						<el-form-item label="确认案卷号" prop="confirmFiledNo"
+									  :rules="[
+                                {required: true, message:'确认案卷号不能为空', trigger:'blur'}
+                   ]">
+							<el-input :disabled="false" v-model="inputForm.confirmFiledNo" placeholder="请填写确认案卷号" clearable></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<el-form v-if="inputForm.paperArchivingStatus === '5'" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+					 label-width="135px" @submit.native.prevent>
+				<el-row>
+					<el-col  :span="12">
+						<el-form-item label="案卷号" prop="filedNo"
+									  :rules="[
+                                {required: true, message:'案卷号不能为空', trigger:'blur'}
+                   ]">
+							<el-input v-model="inputForm.filedNo" placeholder="请填写案卷号" clearable></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col  :span="12">
+						<el-form-item label="确认案卷号" prop="confirmFiledNo"
+									  :rules="[
+                                {required: true, message:'确认案卷号不能为空', trigger:'blur'}
+                   ]">
+							<el-input v-model="inputForm.confirmFiledNo" placeholder="请填写确认案卷号" clearable></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<el-divider content-position="left"><i class="el-icon-document"></i>
+				委托方联系人信息
+			</el-divider>
+			<el-row  :gutter="15" >
+				<el-col :span="24">
+					<vxe-table
+						border
+						show-footer
+						show-overflow
+						ref="contactTable"
+						class="vxe-table-element"
+						:data="inputForm.contactInfos"
+						style="margin-left: 5em"
+						:key="amountKey"
+						highlight-current-row
+						:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+					>
+						<vxe-table-column field="clientContactsName" title="委托方" :edit-render="{}" show-overflow="title">
+							<template v-slot:edit="scope">
+								<el-input maxlength="15" :readonly="true" v-model="scope.row.clientContactsName" ></el-input>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column field="name" title="联系人姓名" :edit-render="{}" show-overflow="title">
+							<template v-slot:edit="scope">
+								<el-input maxlength="15" :readonly="true" v-model="scope.row.name" ></el-input>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column field="contactFirst" title="联系方式1" :edit-render="{}" show-overflow="title">
+							<template v-slot:edit="scope">
+								<el-input maxlength="15" :readonly="true" v-model="scope.row.contactFirst" ></el-input>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column field="contactSecond" title="联系方式2" :edit-render="{}" show-overflow="title">
+							<template v-slot:edit="scope">
+								<el-input maxlength="15" :readonly="true" v-model="scope.row.contactSecond" ></el-input>
+							</template>
+						</vxe-table-column>
+					</vxe-table>
+				</el-col>
+			</el-row>
+			<el-divider content-position="left"><i class="el-icon-document"></i>
+				施工方信息
+			</el-divider>
+			<el-row  :gutter="15" >
+				<el-col :span="24">
+					<vxe-table
+						border
+						show-footer
+						show-overflow
+						ref="contactTable"
+						class="vxe-table-element"
+						:data="inputForm.constructionParty"
+						style="margin-left: 5em"
+						:key="amountKey3"
+						highlight-current-row
+						:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+					>
+						<vxe-table-column field="clientContactsName" title="施工方单位名称" :edit-render="{}" show-overflow="title">
+							<template v-slot:edit="scope">
+								<el-input maxlength="15" :readonly="true" v-model="scope.row.clientContactsName" ></el-input>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column field="name" title="联系人姓名" :edit-render="{}" show-overflow="title">
+							<template v-slot:edit="scope">
+								<el-input maxlength="15" :readonly="true" v-model="scope.row.name" ></el-input>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column field="contactFirst" title="联系方式1" :edit-render="{}" show-overflow="title">
+							<template v-slot:edit="scope">
+								<el-input maxlength="15" :readonly="true" v-model="scope.row.contactFirst" ></el-input>
+							</template>
+						</vxe-table-column>
+						<vxe-table-column field="contactSecond" title="联系方式2" :edit-render="{}" show-overflow="title">
+							<template v-slot:edit="scope">
+								<el-input maxlength="15" :readonly="true" v-model="scope.row.contactSecond" ></el-input>
+							</template>
+						</vxe-table-column>
+					</vxe-table>
+				</el-col>
+			</el-row>
+			<el-divider content-position="left"><i class="el-icon-document"></i>
+				项目报告
+			</el-divider>
+			<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+					 label-width="160px" @submit.native.prevent>
+				<el-row  :gutter="15" >
+					<el-col :span="24">
+						<vxe-table
+							border
+							show-footer
+							show-overflow
+							ref="contactTable"
+							class="vxe-table-element"
+							:data="inputForm.projectReportInfos"
+							style="margin-left: 5em"
+							:key="amountKey2"
+							highlight-current-row
+							:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+						>
+							<vxe-table-column field="reportNo" title="报告编号" :edit-render="{}" show-overflow="title">
+								<template v-slot:edit="scope">
+									<el-input maxlength="15" :readonly="true" v-model="scope.row.reportNo" @focus="openProgramPageForm(scope.$rowIndex, scope.row)"></el-input>
+								</template>
+							</vxe-table-column>
+							<vxe-table-column field="projectName" title="报告名称" :edit-render="{}" show-overflow="title">
+								<template v-slot:edit="scope">
+									<el-input maxlength="15" :readonly="true" v-model="scope.row.projectName" ></el-input>
+								</template>
+							</vxe-table-column>
+							<vxe-table-column field="createTime" title="创建日期" :edit-render="{}" show-overflow="title">
+								<template v-slot:edit="scope">
+									<el-input maxlength="15" :readonly="true" v-model="scope.row.createTime" ></el-input>
+								</template>
+							</vxe-table-column>
+							<vxe-table-column field="status" title="状态" :edit-render="{}" show-overflow="title">
+								<template v-slot:edit="scope">
+									<el-input maxlength="15" :readonly="true" v-model="scope.row.status" ></el-input>
+								</template>
+							</vxe-table-column>
+						</vxe-table>
+					</el-col>
+				</el-row>
+			</el-form>
+		</el-form >
+		<template #footer>
+			<span class="dialog-footer">
+			  <el-button @click="close()" icon="el-icon-circle-close">关闭</el-button>
+			  <el-button type="primary" icon="el-icon-circle-check" @click="doSubmit('save')">确定</el-button>
+			</span>
+		</template>
+		<ReportManagementForm ref="reportManagementForm"></ReportManagementForm>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+	import ReportManagementForm from './ReportManagementFormNew'
+	import SelectTree from '@/components/treeSelect/treeSelect.vue'
+	import OSSSerivce, {
+		// eslint-disable-next-line no-unused-vars
+		beforeAvatarUpload,
+		// eslint-disable-next-line no-unused-vars
+		openWindowOnUrl,
+		// eslint-disable-next-line no-unused-vars
+		toHref
+	} from '@/api/sys/OSSService'
+	import reportPaperArchivingService from '@/api/cw/reportManagement/ReportPaperArchivingService'
+	import projectReportService from '@/api/cw/reportManagement/ProjectReportService'
+	import CommonApi from '@/api/cw/common/CommonApi'
+	export default {
+		props: {
+			businessId: {
+				type: String,
+				default: ''
+			},
+			formReadOnly: {
+				type: Boolean,
+				default: false
+			},
+			status: {
+				type: String,
+				default: ''
+			}
+		},
+		data () {
+			return {
+				amountKey: '',
+				amountKey2: '',
+				amountKey3: '',
+				title: '',
+				method: '',
+				loading: false,
+				visible: false,
+				inputForm: {
+					paperArchivingStatus: '',
+					paperArchivingId: '',
+					contactInfos: [],
+					constructionParty: [],
+					projectReportInfos: [],
+					contractNo: '',
+					contractName: '',
+					contractAmount: '',
+					clientName: '',
+					contractType: '',
+					projectName: '',
+					projectNumber: '',
+					location: '',
+					projectCreateByName: '',
+					officeId: '',
+					projectManager: '',
+					reportType: '',
+					projectLevel: '',
+					projectMoney: '',
+					planStartDate: '',
+					planEndDate: '',
+					createDate: '',
+					filedNo: '',
+					confirmFiledNo: '',
+					createBy: {
+						id: '',
+						name: this.$store.state.user.name
+					},
+				},
+				keyWatch: '',
+			}
+		},
+		commonApi: null,
+		created () {
+			this.commonApi = new CommonApi()
+		},
+		computed: {
+			bus: {
+				get () {
+					return this.businessId
+				},
+				set (val) {
+					this.businessId = val
+				}
+			}
+		},
+		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)
+				}
+			}
+		},
+		components: {
+			ReportManagementForm,
+			SelectTree,
+		},
+		methods: {
+			getKeyWatch (keyWatch) {
+				this.keyWatch = keyWatch
+			},
+			init (method, id) {
+				this.method = method
+				this.visible = true
+				if (method === 'edit') {
+					this.title = '报告信息修改'
+					this.method = method
+				}
+				this.inputForm = {
+					paperArchivingStatus: '',
+					paperArchivingId: '',
+					contactInfos: [],
+					constructionParty: [],
+					projectReportInfos: [],
+					contractNo: '',
+					contractName: '',
+					contractAmount: '',
+					clientName: '',
+					contractType: '',
+					projectName: '',
+					projectNumber: '',
+					location: '',
+					projectCreateByName: '',
+					officeId: '',
+					projectManager: '',
+					reportType: '',
+					projectLevel: '',
+					projectMoney: '',
+					planStartDate: '',
+					planEndDate: '',
+					createDate: '',
+					filedNo: '',
+					confirmFiledNo: '',
+					createBy: {
+						id: '',
+						name: this.$store.state.user.name
+					},
+				}
+				this.inputForm.id = id
+				this.loading = false
+				this.$nextTick(() => {
+					// this.$refs.inputForm.resetFields()
+
+					this.loading = true
+					projectReportService.queryByIdNew(this.inputForm.id).then((data) => {
+						if (data) {
+							this.inputForm = this.recover(this.inputForm, data)
+
+							if (this.status === 'taskFormDetail' || this.status === 'audit') {
+								this.method = 'view'
+							} else {
+								this.method = 'false'
+							}
+							this.loading = false
+						} else {
+							projectReportService.queryByPaperArchivingId(this.inputForm.id).then((data2) => {
+								if (data2) {
+									this.inputForm = this.recover(this.inputForm, data2)
+
+									if (this.status === 'taskFormDetail' || this.status === 'audit') {
+										this.method = 'view'
+									} else {
+										this.method = 'false'
+									}
+									this.loading = false
+								}
+
+							})
+						}
+
+					})
+				})
+			},
+			saveForm (callback) {
+				this.doSubmit('save', callback)
+			},
+			startForm (callback) {
+				this.loading = true
+				if (this.commonJS.isNotEmpty(this.inputForm.id)) {
+					reportPaperArchivingService.queryByReportId(this.inputForm.id).then((data) => {
+						if (this.commonJS.isNotEmpty(data.status) && data.status !== '0' && data.status !== '1' && data.status !== '3') { // 审核状态不是“未发起”或“暂存”或“撤回”,就弹出提示
+							this.loading = false
+							this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+							throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						} else {
+							this.doSubmit('start', callback)
+						}
+					})
+				} else {
+					this.doSubmit('start', callback)
+				}
+			},
+			async agreeForm (callback) {
+				this.loading = true
+				await reportPaperArchivingService.queryByReportId(this.inputForm.id).then((data) => {
+					if (data.status !== '2') { // 审核状态不是“待审核”,就弹出提示
+						this.loading = false
+						this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						throw new Error()
+					} else {
+						this.doSubmit('agree', callback)
+					}
+				})
+			},
+			reapplyForm (callback) {
+				this.loading = true
+				reportPaperArchivingService.queryByReportId(this.inputForm.id).then((data) => {
+					if (data.status !== '4') { // 审核状态不是“驳回”,就弹出提示
+						this.loading = false
+						this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					} else {
+						this.doSubmit('reapply', callback)
+					}
+				})
+			},
+			// 表单提交
+			doSubmit (status, callback) {
+				if (status === 'save') {
+					if (this.inputForm.filedNo !== this.inputForm.confirmFiledNo) {
+						this.$message.error('“案卷号”与“确认案卷号”不一致,请重新填写')
+						this.loading = false
+						throw new Error('“案卷号”与“确认案卷号”不一致,请重新填写')
+					}
+					this.loading = true
+					reportPaperArchivingService.saveForm(this.inputForm).then((data) => {
+						this.$emit('refreshList')
+						this.close()
+						this.loading = false
+					}).catch(() => {
+						this.loading = false
+					})
+					return
+				} else if (status === 'start') {
+					// 送审  待审核
+					this.inputForm.status = '2'
+				} else if (status === 'agree') {
+					// 审核同意
+					this.inputForm.agreeDate = this.moment(new Date()).format('YYYY-MM-DD')
+					this.inputForm.agreeUserId = this.$store.state.user.id
+					// this.inputForm.status = '5'
+				} else if (status === 'reapply') {
+					this.inputForm.status = '2'
+				}
+				this.$refs['inputForm'].validate((valid) => {
+					if (valid) {
+						this.loading = true
+						if (status === 'agree') {
+
+							if (this.inputForm.filedNo !== this.inputForm.confirmFiledNo) {
+								this.$message.error('“案卷号”与“确认案卷号”不一致,请重新填写')
+								this.loading = false
+								throw new Error('“案卷号”与“确认案卷号”不一致,请重新填写')
+							} else {
+								this.inputForm.status = '5'
+								reportPaperArchivingService.saveForm(this.inputForm).then((data2) => {
+									callback(data2.businessTable, data2.businessId, this.inputForm)
+									this.loading = false
+								}).catch(() => {
+									this.loading = false
+								})
+							}
+
+
+
+						}else{
+
+							reportPaperArchivingService.saveForm(this.inputForm).then((data) => {
+								callback(data.businessTable, data.businessId, this.inputForm)
+								this.loading = false
+							}).catch(() => {
+								this.loading = false
+							})
+
+						}
+
+					} else {
+						this.loading = false
+					}
+				})
+			},
+			async updateStatusById (type, callback) {
+				this.loading = true
+				if (type === 'reject' || type === 'reback') {
+					await reportPaperArchivingService.queryByReportId(this.inputForm.id).then((data) => {
+						if (data.status !== '2') { // status的值不等于“审核中”就弹出提示
+							this.loading = false
+							this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+							throw new Error()
+						} else {
+							if (type === 'reject') {
+								reportPaperArchivingService.queryByReportId(this.inputForm.id).then((review) => {
+									console.log('review', review)
+									this.rejectOn(callback)
+								})
+							}
+							if (type === 'reback') {
+								// 撤回
+								let param = {status: '3', id: this.inputForm.paperArchivingId}
+								reportPaperArchivingService.updateStatusByReportId(param)
+							}
+						}
+					})
+				} else if (type === 'hold') {
+					reportPaperArchivingService.queryByReportId(this.inputForm.id).then((data) => {
+						if (data.status !== '4') { // status的值不等于“驳回”就弹出提示
+							this.loading = false
+							this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+							throw new Error()
+						} else {
+							// 终止
+							let param = {status: '1', id: this.inputForm.paperArchivingId}
+							reportPaperArchivingService.updateStatusByReportId(param).then(() => {
+								callback()
+								this.loading = false
+							})
+						}
+					})
+				}
+			},
+			// 这个方法是这个之前这个页面的驳回方法,现在粘出来复用
+			rejectOn (callback) {
+				// 驳回
+				let param
+				this.inputForm.status = '4'
+				param = {status: this.inputForm.status,
+					id: this.inputForm.paperArchivingId,
+					needUpdate2: this.inputForm.needUpdate2,
+					needUpdate3: this.inputForm.needUpdate3,
+					remark2: this.inputForm.remark2,
+					remark3: this.inputForm.remark3,
+					details: this.inputForm.details
+				}
+				reportPaperArchivingService.updateStatusByReportId(param).then(() => {
+					this.loading = false
+					callback()
+				})
+			},
+			close () {
+				this.inputForm = {
+					paperArchivingStatus: '',
+					paperArchivingId: '',
+					contactInfos: [],
+					constructionParty: [],
+					projectReportInfos: [],
+					contractNo: '',
+					contractName: '',
+					contractAmount: '',
+					clientName: '',
+					contractType: '',
+					projectName: '',
+					projectNumber: '',
+					location: '',
+					projectCreateByName: '',
+					officeId: '',
+					projectManager: '',
+					reportType: '',
+					projectLevel: '',
+					projectMoney: '',
+					planStartDate: '',
+					planEndDate: '',
+					createDate: '',
+					filedNo: '',
+					confirmFiledNo: '',
+					createBy: {
+						id: '',
+						name: this.$store.state.user.name
+					},
+				}
+				this.$refs.inputForm.resetFields()
+				this.visible = false
+			},
+			openProgramPageForm (rowIndex, row) {
+				this.$refs.reportManagementForm.init('view', this.inputForm.id, '')
+			},
+		}
+	}
+</script>
+<style scoped>
+  /deep/ .el-input-number .el-input__inner {
+    text-align: left;
+  }
+</style>

+ 97 - 0
src/views/cw/reportManagement/paperArchiving/ReportPaperArchiving.vue

@@ -282,13 +282,98 @@
 							</vxe-table>
 						</el-col>
 					</el-row>
+					<el-divider content-position="left"><i class="el-icon-document"></i>
+						施工方信息
+					</el-divider>
+					<el-row  :gutter="15" >
+						<el-col :span="24">
+							<vxe-table
+								border
+								show-footer
+								show-overflow
+								ref="contactTable"
+								class="vxe-table-element"
+								:data="inputForm.constructionParty"
+								style="margin-left: 5em"
+								:key="amountKey3"
+								highlight-current-row
+								:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+							>
+								<vxe-table-column field="clientContactsName" title="施工方单位名称" :edit-render="{}" show-overflow="title">
+									<template v-slot:edit="scope">
+										<el-input maxlength="15" :readonly="true" v-model="scope.row.clientContactsName" ></el-input>
+									</template>
+								</vxe-table-column>
+								<vxe-table-column field="name" title="联系人姓名" :edit-render="{}" show-overflow="title">
+									<template v-slot:edit="scope">
+										<el-input maxlength="15" :readonly="true" v-model="scope.row.name" ></el-input>
+									</template>
+								</vxe-table-column>
+								<vxe-table-column field="contactFirst" title="联系方式1" :edit-render="{}" show-overflow="title">
+									<template v-slot:edit="scope">
+										<el-input maxlength="15" :readonly="true" v-model="scope.row.contactFirst" ></el-input>
+									</template>
+								</vxe-table-column>
+								<vxe-table-column field="contactSecond" title="联系方式2" :edit-render="{}" show-overflow="title">
+									<template v-slot:edit="scope">
+										<el-input maxlength="15" :readonly="true" v-model="scope.row.contactSecond" ></el-input>
+									</template>
+								</vxe-table-column>
+							</vxe-table>
+						</el-col>
+					</el-row>
+					<el-divider content-position="left"><i class="el-icon-document"></i>
+						项目报告
+					</el-divider>
+					<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+							 label-width="160px" @submit.native.prevent>
+						<el-row  :gutter="15" >
+							<el-col :span="24">
+								<vxe-table
+									border
+									show-footer
+									show-overflow
+									ref="contactTable"
+									class="vxe-table-element"
+									:data="inputForm.projectReportInfos"
+									style="margin-left: 5em"
+									:key="amountKey2"
+									highlight-current-row
+									:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+								>
+									<vxe-table-column field="reportNo" title="报告编号" :edit-render="{}" show-overflow="title">
+										<template v-slot:edit="scope">
+											<el-input maxlength="15" :readonly="true" v-model="scope.row.reportNo" @focus="openProgramPageForm(scope.$rowIndex, scope.row)"></el-input>
+										</template>
+									</vxe-table-column>
+									<vxe-table-column field="projectName" title="报告名称" :edit-render="{}" show-overflow="title">
+										<template v-slot:edit="scope">
+											<el-input maxlength="15" :readonly="true" v-model="scope.row.projectName" ></el-input>
+										</template>
+									</vxe-table-column>
+									<vxe-table-column field="createTime" title="创建日期" :edit-render="{}" show-overflow="title">
+										<template v-slot:edit="scope">
+											<el-input maxlength="15" :readonly="true" v-model="scope.row.createTime" ></el-input>
+										</template>
+									</vxe-table-column>
+									<vxe-table-column field="status" title="状态" :edit-render="{}" show-overflow="title">
+										<template v-slot:edit="scope">
+											<el-input maxlength="15" :readonly="true" v-model="scope.row.status" ></el-input>
+										</template>
+									</vxe-table-column>
+								</vxe-table>
+							</el-col>
+						</el-row>
+					</el-form>
 				</el-form >
 			</el-col>
 		</el-row>
 	</div>
+	<ReportManagementForm ref="reportManagementForm"></ReportManagementForm>
 </template>
 
 <script>
+	import ReportManagementForm from '../ReportManagementFormNew'
 	import SelectTree from '@/components/treeSelect/treeSelect.vue'
 	import OSSSerivce, {
 		// eslint-disable-next-line no-unused-vars
@@ -319,6 +404,8 @@
 		data () {
 			return {
 				amountKey: '',
+				amountKey2: '',
+				amountKey3: '',
 				title: '',
 				method: '',
 				loading: false,
@@ -326,6 +413,8 @@
 					paperArchivingStatus: '',
 					paperArchivingId: '',
 					contactInfos: [],
+					constructionParty: [],
+					projectReportInfos: [],
 					contractNo: '',
 					contractName: '',
 					contractAmount: '',
@@ -386,6 +475,7 @@
 			}
 		},
 		components: {
+			ReportManagementForm,
 			SelectTree,
 		},
 		methods: {
@@ -398,6 +488,8 @@
 					paperArchivingStatus: '',
 					paperArchivingId: '',
 					contactInfos: [],
+					constructionParty: [],
+					projectReportInfos: [],
 					contractNo: '',
 					contractName: '',
 					contractAmount: '',
@@ -623,6 +715,8 @@
 					paperArchivingStatus: '',
 					paperArchivingId: '',
 					contactInfos: [],
+					constructionParty: [],
+					projectReportInfos: [],
 					contractNo: '',
 					contractName: '',
 					contractAmount: '',
@@ -648,6 +742,9 @@
 					},
 				}
 			},
+			openProgramPageForm (rowIndex, row) {
+				this.$refs.reportManagementForm.init('view', this.inputForm.id, '')
+			},
 		}
 	}
 </script>

File diff suppressed because it is too large
+ 1257 - 0
src/views/cw/reportManagement/reportReview/ReportReviewForm2.vue


+ 18 - 0
src/views/cw/workClientInfo/WorkClientAddForm.vue

@@ -93,6 +93,21 @@
                       </el-select>
                     </el-form-item>
                   </el-col>
+					<el-col :span="12">
+                    <el-form-item label="代表方" prop="representativeParty"
+                                  :rules="[
+                                  {required: true, message:'代表方不能为空', trigger:'blur'}
+                   ]">
+                      <el-select v-model="inputForm.representativeParty" placeholder="请选择代表方" clearable style="width: 100%;">
+                        <el-option
+                          v-for="item in $dictUtils.getDictList('representative_party')"
+                          :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="scType"
                                   :rules="[
@@ -757,6 +772,7 @@
           abbreviation: '',
           englishName: '',
           type: '',
+			representativeParty: '',
           uscCode: '',
           scType: '',
           manageLevelType: '',
@@ -938,6 +954,7 @@
           abbreviation: '',
           englishName: '',
           type: '',
+			representativeParty: '',
           uscCode: '',
           scType: '',
           manageLevelType: '',
@@ -1143,6 +1160,7 @@
           abbreviation: '',
           englishName: '',
           type: '',
+			representativeParty: '',
           uscCode: '',
           scType: '',
           manageLevelType: '',

+ 18 - 0
src/views/cw/workClientInfo/WorkClientForm.vue

@@ -92,6 +92,21 @@
                     </el-select>
                   </el-form-item>
                 </el-col>
+				  <el-col :span="12">
+					  <el-form-item label="代表方" prop="representativeParty"
+									:rules="[
+                                  {required: true, message:'代表方不能为空', trigger:'blur'}
+                   ]">
+						  <el-select v-model="inputForm.representativeParty" placeholder="请选择代表方" clearable style="width: 100%;">
+							  <el-option
+								  v-for="item in $dictUtils.getDictList('representative_party')"
+								  :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="scType"
                                 :rules="[
@@ -935,6 +950,7 @@
           abbreviation: '',
           englishName: '',
           type: '',
+			representativeParty: '',
           uscCode: '',
           scType: '',
           manageLevelType: '',
@@ -1138,6 +1154,7 @@
           abbreviation: '',
           englishName: '',
           type: '',
+			representativeParty: '',
           uscCode: '',
           scType: '',
           manageLevelType: '',
@@ -1423,6 +1440,7 @@
           abbreviation: '',
           englishName: '',
           type: '',
+			representativeParty: '',
           uscCode: '',
           scType: '',
           manageLevelType: '',

+ 2 - 2
src/views/cw/workContract/ContractNameForm.vue

@@ -295,12 +295,12 @@
 							highlight-current-row
 							:edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: false}"
 						>
-							<vxe-table-column align="center" field="no" title="客户编号" :edit-render="{}">
+							<vxe-table-column min-width="448" align="center" field="no" title="客户编号" :edit-render="{}">
 								<template v-slot:edit="scope">
 									<el-input :readonly="true" v-model="scope.row.no" placeholder="客户编号" clearable></el-input>
 								</template>
 							</vxe-table-column>
-							<vxe-table-column align="center" field="name" title="客户名称" :edit-render="{}">
+							<vxe-table-column min-width="448" align="center" field="name" title="客户名称" :edit-render="{}">
 								<template v-slot:edit="scope">
 									<el-input :readonly="true" v-model="scope.row.name" placeholder="客户名称" clearable></el-input>
 								</template>

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

@@ -689,6 +689,7 @@ export default {
 		// Process_1669087010742 报告签章-公章+执业章
 		// Process_1668677901585 项目报告归档
 		// Process_1670486210438 报告复核
+		// Process_1708914940212 报告复核(咨询)
 		// Process_1670486210439 会计-报告号领取
 		// Process_1668759076824 报告作废申请
 		// Process_1670548572652 报告作废归档
@@ -754,6 +755,7 @@ export default {
 				this.procDefId.includes('Process_1669087010742') ||
 				this.procDefId.includes('Process_1668677901585') ||
 				this.procDefId.includes('Process_1670486210438') ||
+				this.procDefId.includes('Process_1708914940212') ||
 				this.procDefId.includes('Process_1670486210439') ||
 				this.procDefId.includes('Process_1668759076824') ||
 				this.procDefId.includes('Process_1670548572652') ||
@@ -914,6 +916,7 @@ export default {
 				this.procDefId.includes('Process_1669087010742') ||
 				this.procDefId.includes('Process_1668677901585') ||
 				this.procDefId.includes('Process_1670486210438') ||
+				this.procDefId.includes('Process_1708914940212') ||
 				this.procDefId.includes('Process_1670486210439') ||
 				this.procDefId.includes('Process_1668759076824') ||
 				this.procDefId.includes('Process_1670548572652') ||