Przeglądaj źródła

项目流程展示之前流程的信息,合同添加抄送人员信息选择

user5 6 miesięcy temu
rodzic
commit
f9377534a2

+ 15 - 0
src/api/jy/ProjectInfoService.js

@@ -276,6 +276,21 @@ export default class ProjectInfoService {
 		});
 	}
 
+	getSignetById (id,typeStatus) {
+		return request({
+			url: prefix + '/jyProject/getSignetById',
+			method: 'get',
+			params: {id: id,typeStatus: typeStatus}
+		})
+	}
+	getByProjectId (id) {
+		return request({
+			url: prefix + '/jyProject/getByProjectId',
+			method: 'get',
+			params: {id: id}
+		})
+	}
+
 
 
 

+ 1 - 0
src/views/common/UpLoadComponent.vue

@@ -192,6 +192,7 @@
 					this.maxValue = 300
 				}
 				this.auth = auth
+				console.log(this.auth)
 				if (this.commonJS.isEmpty(uploadFlag)) {
 					this.uploadFlag = false
 				} else {

+ 5 - 0
src/views/dashboard/widgets/components/MyFlowCopyList.vue

@@ -71,6 +71,7 @@
 		</vxe-pager>
 	</el-card>
 	<MonthlyForm ref="monthlyForm" @refreshList="refreshList"></MonthlyForm>
+	<ContractAddForm ref="contractAddForm" @refreshList="refreshList"></ContractAddForm>
 	<TenderForm ref="tenderForm" @refreshList="refreshList"></TenderForm>
 	<BidForm ref="bidForm" @refreshList="refreshList"></BidForm>
 
@@ -80,6 +81,7 @@
 import flowCopyService from "@/api/flowable/flowCopyService";
 import taskService from "@/api/flowable/taskService";
 import MonthlyForm from '@/views/jy/monthly/MonthlyForm'
+import ContractAddForm from '@/views/jy/workContractInfo/ContractAddForm'
 import TenderForm from "@/views/jy/tender/TenderForm";
 import BidForm from "@/views/jy/tender/BidForm";
 
@@ -94,6 +96,7 @@ export default {
 	},
 	components: {
 		MonthlyForm,
+		ContractAddForm,
 		TenderForm,
 		BidForm
 	},
@@ -166,6 +169,8 @@ export default {
 				this.$refs.tenderForm.init('view',row.procInsId)
 			}else if (row.procInsName.includes("月报")){
 				this.$refs.monthlyForm.init('view',row.procInsId)
+			}else if (row.procInsName.includes("合同")){
+				this.$refs.contractAddForm.init('view',row.procInsId)
 			}else {
 				taskService
 					.getTaskDef({

+ 85 - 12
src/views/jy/project/OutInstanceForm.vue

@@ -49,6 +49,22 @@
 				<el-col :span="24" >
 					<el-divider content-position="left"><i class="el-icon-document"></i>
 						项目基本信息
+						<el-link  v-if="commonJS.isEmpty(tabName) && projectData.firstInstanceStatus === '5'"
+								  @click="openAuditDetail(projectData.auditId1, '1')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							一级校审详情
+						</el-link>
+						<el-link v-if="commonJS.isEmpty(tabName) && projectData.secondInstanceStatus === '5'"
+								 @click="openAuditDetail(projectData.auditId2, '2')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							二级校审详情
+						</el-link>
+						<el-link v-if="commonJS.isEmpty(tabName) && projectData.thirdInstanceStatus === '5'"
+								 @click="openAuditDetail(projectData.auditId3, '3')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							三级校审详情
+						</el-link>
+						<el-link v-if="commonJS.isEmpty(tabName) && projectData.signetStatus === '5'"
+								 @click="openSignetDetail(projectData.signetId)" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							报告签发详情
+						</el-link>
 					</el-divider>
 				</el-col>
 				<el-col :span="12">
@@ -199,6 +215,8 @@
 		<!--        附件-->
 <!--		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>-->
 		<FileForm ref="fileForm" @getFiles="getFiles"></FileForm>
+		<ProjectAuditFormDialog ref="auditDetail"></ProjectAuditFormDialog>
+		<SignetAddFormDialogDialog ref="signetDetail"></SignetAddFormDialogDialog>
 
 
 	</div>
@@ -209,6 +227,8 @@
 	import FileForm from './fileForm'
 	import UserSelectSignatory from '../workClientInfo/clientUserSelect'
 	import UpLoadComponent from '@/views/common/JyUpLoadComponent'
+	import ProjectAuditFormDialog from '@/views/jy/project/ProjectAuditFormDialog'
+	import SignetAddFormDialogDialog from '@/views/materialManagement/userSeal/SignetAddFormDialog'
 	import OSSSerivce, {
 		// eslint-disable-next-line no-unused-vars
 		beforeAvatarUpload,
@@ -217,6 +237,7 @@
 		// eslint-disable-next-line no-unused-vars
 		toHref
 	} from '@/api/sys/OSSService'
+	import SignetAddFormDialog from "../../materialManagement/userSeal/SignetAddFormDialog";
 	export default {
 		props: {
 			businessId: {
@@ -260,7 +281,35 @@
 				keyWatch: '',
 				tabName:'',
 				tableData: [],
-				tableKey :'1'
+				tableKey :'1',
+
+				projectData: {
+					auditId1: '',
+					auditId2: '',
+					auditId3: '',
+					id: '',
+					procInsId1:'',
+					procInsId2:'',
+					procInsId3:'',
+					firstInstanceStatus:'',
+					secondInstanceStatus:'',
+					thirdInstanceStatus:'',
+					signetId:'',
+					signetStatus:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					initialAuditOpinion:'',
+					initialEditOpinion:'',
+					auditOpinion:'',
+					editOpinion:'',
+					workAttachmentDtoList:[],
+					auditPeople:'',
+					status:'',
+					projectId:'',
+					no:'',
+					auditLevel:''
+				},
 			}
 		},
 		ProjectInfoService:null,
@@ -283,9 +332,7 @@
 		watch: {
 			'keyWatch': {
 				handler (newVal) {
-					console.log('dsad')
 					if (this.bus) {
-						console.log('dsad',this.bus)
 						if (this.bus !== 'false') {
 							this.init('', this.bus)
 						}
@@ -304,10 +351,13 @@
 			}
 		},
 		components: {
+			SignetAddFormDialog,
 			UserSelectSignatory,
 			UpLoadComponent,
 			FileForm,
 			OSSSerivce,
+			ProjectAuditFormDialog,
+			SignetAddFormDialogDialog,
 		},
 		methods: {
 			getKeyWatch (keyWatch) {
@@ -316,7 +366,6 @@
 			init (method, id,tabName) {
 				this.tabName = tabName
 				this.method = method
-				console.log('method', method)
 				this.inputForm = {
 					id: '',
 					contractName:'',
@@ -352,7 +401,6 @@
 					this.loading = true
 					// this.$refs.uploadComponent.clearUpload()
 					// this.$refs.archiveFile.clearUpload()
-					console.log('id',this.inputForm.id)
 					this.projectInfoService.findByIdOut(this.inputForm.id).then((data) => {
 						this.inputForm = this.recover(this.inputForm, data)
 						this.inputForm.contractName=data.jyProjectList.contractName
@@ -369,16 +417,37 @@
 						this.inputForm.projectId=data.projectId
 						this.inputForm.remarks=data.remarks
 						this.inputForm.no = data.jyProjectList.no
-						console.log('data', data)
 						if (this.status === 'audit' || this.status === 'taskFormDetail') {
 							method = 'view'
 						}
-						console.log('method2',method)
 
 						this.projectInfoService.getAttachmentList(this.inputForm.projectId,this.inputForm.id).then((data) => {
 							this.tableData = data
 							this.tableKey = Math.random()
 						})
+						//查询项目各流程节点审核情况与具体信息
+						if(this.inputForm.projectId){
+							const firstProjectId = this.inputForm.projectId.split(",");
+							const firstParam = firstProjectId.length > 0 ? firstProjectId[0] : "";
+							this.projectInfoService.findById(firstParam).then((data)=>{
+								this.projectData.auditId1 = data.auditId1
+								this.projectData.auditId2 = data.auditId2
+								this.projectData.auditId3 = data.auditId3
+								this.projectData.procInsId1 = data.procInsId1
+								this.projectData.procInsId2 = data.procInsId2
+								this.projectData.procInsId3 = data.procInsId3
+								this.projectData.firstInstanceStatus = data.firstInstanceStatus
+								this.projectData.secondInstanceStatus = data.secondInstanceStatus
+								this.projectData.thirdInstanceStatus = data.thirdInstanceStatus
+							})
+							this.projectInfoService.getSignetById(firstParam,1).then((signetData)=>{
+								if(signetData.status === '5'){
+									this.projectData.signetStatus = signetData.status
+									this.projectData.signetId = signetData.id
+								}
+								//this.projectData = this.recover(this.projectData, data)
+							})
+						}
 
 						// this.$refs.uploadComponent.newUpload(method, this.inputForm.fileList, 'jyProjectOut', null, '附件', null, null, null)
 						// this.$refs.archiveFile.newUpload('view', [], 'cwWorkContract', null, null, null, null, false)
@@ -414,13 +483,20 @@
 			openFileForm(row){
 				this.$refs.fileForm.init("add", row.id,this.inputForm.projectId,row.type,"outInstance")
 			},
+			// 根据项目id以及校审级别查询校审详情
+			// 打开校审明细页面
+			openAuditDetail (projectId, auditLevel) {
+				this.$refs.auditDetail.init(projectId, auditLevel)
+			},
+			// 打开校审明细页面
+			openSignetDetail (projectId) {
+				this.$refs.signetDetail.init(projectId,'view')
+			},
 			showFile (row) {
-				console.log("showFile",row)
 				row.name = row.attachmentName
 				openWindowOnUrl(row)
 			},
 			toHref (row) {
-				console.log("toHref",row)
 				toHref(row)
 			},
 			getFiles(){
@@ -518,9 +594,7 @@
 					if (valid) {
 						this.loading = true
 						this.tableData.forEach(item=>{
-							console.log('item',item)
 							if (item.levelFlag === 2 && item.mustFlag === 1){
-								console.log('len',item.children.length)
 								if (item.children.length === 0){
 									this.loading = false
 									this.$message.error('文件未上传')
@@ -609,7 +683,6 @@
 				this.loading = true
 				if (this.tabName === '一级校审') {
 					this.projectInfoService.downloadFirstAuditTpl(this.inputForm.id, this.inputForm.projectId).then((res) => {
-						console.log('hh',res)
 						// 将二进制流文件写入excel表,以下为重要步骤
 						this.$utils.downloadWord(res, this.tabName)
 						this.loading = false

+ 504 - 0
src/views/jy/project/OutInstanceFormDialog.vue

@@ -0,0 +1,504 @@
+<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+	<div>
+		<el-dialog
+			:title="title"
+			:close-on-click-modal="false"
+			draggable
+			width="1200px"
+			@close="close"
+			@keyup.enter.native=""
+			append-to-body
+			v-model="visible">
+			<el-form size="large" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+					 label-width="170px" @submit.native.prevent>
+
+				<el-row  :gutter="15">
+					<el-col :span="24" >
+						<el-divider content-position="left"><i class="el-icon-document"></i>
+							合同信息
+						</el-divider>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="合同名称" prop="contractName"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.contractName" placeholder="请填写合同名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="合同金额(元)" prop="contractAmount"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.contractAmount" placeholder="请填写合同金额(元)"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="委托方" prop="primaryLinkman"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.primaryLinkman" placeholder="请填写委托方"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="合同类型(大类)" prop="contractTypeFirst"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.contractTypeFirst" placeholder="请填写合同类型(大类)"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="合同类型(小类)" prop="contractType"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.contractType" placeholder="请填写合同类型(小类)"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row  :gutter="15">
+					<el-col :span="24" >
+						<el-divider content-position="left"><i class="el-icon-document"></i>
+							项目基本信息
+						</el-divider>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="项目名称" prop="projectName"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.projectName" placeholder="请填写项目名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="项目所在地" prop="projectPlace"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.projectPlace" placeholder="请填写项目所在地"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="建设地点" prop="buildPlace"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.buildPlace" placeholder="请填写建设地点"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="项目负责人" prop="projectLeader"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.projectLeader" placeholder="请填写项目负责人"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="创建人" prop="createByName"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.createByName" placeholder="请填写创建人"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="创建时间" prop="createTime"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.createTime" placeholder="请填写创建时间"></el-input>
+						</el-form-item>
+					</el-col>
+
+				</el-row>
+				<el-row  :gutter="15">
+					<el-col :span="24">
+						<el-form-item label="备注" prop="remarks"
+									  :rules="[
+                 ]">
+							<el-input :rows="4" :disabled="status === 'audit' || status === 'taskFormDetail'|| method ==='view'"  show-word-limit maxlength="500" type="textarea" v-model="inputForm.remarks" placeholder="请填写备注"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+
+			</el-form>
+			<el-divider content-position="left"><i class="el-icon-document"></i>
+				<span>附件信息</span>
+			</el-divider>
+			<el-row  :gutter="15" >
+				<el-col :span="24">
+					<vxe-table
+						border
+						show-overflow
+						ref="clientTable"
+						class="vxe-table-element"
+						style="margin-left: 5em"
+						:key="tableKey"
+						@table-mounted="expandAllRows"
+						:row-config="{keyField: 'id'}"
+						:column-config="{resizable: true}"
+						:tree-config="{transform: true, expandAll: true}"
+						:data="tableData">
+						<vxe-column field="name" title="文件要求" width="260px" tree-node>
+							<template #default="scope">
+							<span style="font-weight: bold"
+								  v-if="scope.row.parentId === '0'"
+							>{{ scope.row.name }}
+							</span>
+								<span
+									v-if="scope.row.parentId !== '0' && scope.row.mustFlag === 1"
+								><span style="color: red;font-weight: bold">* </span>{{ scope.row.name }}
+							</span>
+								<span
+									v-if="scope.row.parentId !== '0' && scope.row.mustFlag === 0"
+								>{{ scope.row.name }}
+							</span>
+							</template>
+						</vxe-column>
+						<vxe-column field="attachmentName" title="文件描述/文件名称" show-overflow="false">
+							<template #default="scope">
+							<span
+								v-if="scope.row.levelFlag === 2"
+							>
+								<span style="font-weight: bold">文件格式及大小:{{ scope.row.size }}</span>
+								<br>
+								<span>{{ scope.row.type }}</span>
+							</span>
+								<div v-if="ifName(scope.row) === true">
+									<el-image
+										style="width: 30px; height: 30px;padding-top: 4px;"
+										:src="scope.row.lsUrl"
+										:preview-src-list="[scope.row.lsUrl]"
+										:preview-teleported="true"
+									></el-image>
+								</div>
+								<div v-else>
+									<el-link v-if="scope.row.levelFlag === 3"  type="primary" :underline="false" @click="showFile(scope.row)">{{scope.row.attachmentName}}</el-link>
+								</div>
+							</template>
+						</vxe-column>
+						<vxe-column field="workAttachmentType" width="100px" title="文件类型"></vxe-column>
+						<vxe-column field="createDate" title="上传时间" width="100px"></vxe-column>
+						<vxe-column field="fileSize" width="100px" title="文件大小(M)">
+							<template #default="scope">
+								{{getSize(scope.row.fileSize)}}
+							</template>
+						</vxe-column>
+
+						<vxe-column
+							title="操作"
+							width="100px"
+							fixed="right"
+							align="center"
+						>
+							<template #default="scope">
+								<el-button
+									v-if="scope.row.levelFlag === 2"
+									type="primary"
+									size="small"
+									:disabled="status === 'audit' ||status === 'taskFormDetail'|| method ==='view'"
+									@click="openFileForm(scope.row)"
+								>编辑</el-button>
+								<el-button
+									v-if="scope.row.levelFlag === 3"
+									type="info"
+									size="small"
+									@click="toHref(scope.row)" >下载</el-button>
+
+							</template>
+						</vxe-column>
+					</vxe-table>
+				</el-col>
+			</el-row>
+
+			<!--        附件-->
+			<FileForm ref="fileForm" @getFiles="getFiles"></FileForm>
+			<ProjectAuditFormDialog ref="auditDetail"></ProjectAuditFormDialog>
+			<SignetAddFormDialogDialog ref="signetDetail"></SignetAddFormDialogDialog>
+			<template #footer>
+			<span class="dialog-footer">
+			<el-button @click="close()" icon="el-icon-circle-close">关闭</el-button>
+		  </span>
+			</template>
+
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import ProjectInfoService from "@/api/jy/ProjectInfoService";
+	import FileForm from './fileForm'
+	import UserSelectSignatory from '../workClientInfo/clientUserSelect'
+	import UpLoadComponent from '@/views/common/JyUpLoadComponent'
+	import ProjectAuditFormDialog from '@/views/jy/project/ProjectAuditFormDialog'
+	import SignetAddFormDialogDialog from '@/views/materialManagement/userSeal/SignetAddFormDialog'
+	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 SignetAddFormDialog from "../../materialManagement/userSeal/SignetAddFormDialog";
+	export default {
+		props: {
+			businessId: {
+				type: String,
+				default: ''
+			},
+			formReadOnly: {
+				type: Boolean,
+				default: false
+			},
+			status: {
+				type: String,
+				default: ''
+			}
+		},
+		data () {
+			return {
+				title: '',
+				method: '',
+				visible: false,
+				loading: false,
+				inputForm: {
+					id: '',
+					contractName:'',
+					contractAmount:'',
+					primaryLinkman:'',
+					contractTypeFirst:'',
+					contractType:'',
+					projectName:'',
+					projectPlace:'',
+					buildPlace:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					fileList:[],
+					status:'',
+					projectId:'',
+					remarks:'',
+					no:''
+				},
+				keyWatch: '',
+				tabName:'',
+				tableData: [],
+				tableKey :'1',
+
+				projectData: {
+					auditId1: '',
+					auditId2: '',
+					auditId3: '',
+					id: '',
+					procInsId1:'',
+					procInsId2:'',
+					procInsId3:'',
+					firstInstanceStatus:'',
+					secondInstanceStatus:'',
+					thirdInstanceStatus:'',
+					signetId:'',
+					signetStatus:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					initialAuditOpinion:'',
+					initialEditOpinion:'',
+					auditOpinion:'',
+					editOpinion:'',
+					workAttachmentDtoList:[],
+					auditPeople:'',
+					status:'',
+					projectId:'',
+					no:'',
+					auditLevel:''
+				},
+			}
+		},
+		ProjectInfoService:null,
+		created () {
+			this.projectInfoService=new ProjectInfoService()
+			this.ossService = new OSSSerivce()
+		},
+		activated () {
+		},
+		computed: {
+			bus: {
+				get () {
+					// this.$refs.uploadComponent.setDividerName('附件')
+					return this.businessId
+
+				},
+				set (val) {
+					this.businessId = val
+				}
+			}
+		},
+		watch: {
+			'keyWatch': {
+				handler (newVal) {
+					if (this.bus) {
+						if (this.bus !== 'false') {
+							this.init('', this.bus)
+						}
+					} else {
+						this.$nextTick(() => {
+							this.$refs.inputForm.resetFields()
+						})
+					}
+				}
+			},
+			'loading': {
+				handler (newVal) {
+					this.$emit('changeLoading', newVal)
+					// this.$refs.uploadComponent.changeLoading(newVal)
+				}
+			}
+		},
+		components: {
+			SignetAddFormDialog,
+			UserSelectSignatory,
+			UpLoadComponent,
+			FileForm,
+			OSSSerivce,
+			ProjectAuditFormDialog,
+			SignetAddFormDialogDialog,
+		},
+		methods: {
+			getKeyWatch (keyWatch) {
+				this.keyWatch = keyWatch
+			},
+			init (id, method) {
+				this.title = '报告签发详情'
+				this.tabName = '报告签发详情'
+				this.method = method
+				this.inputForm = {
+					id: '',
+					contractName:'',
+					contractAmount:'',
+					primaryLinkman:'',
+					contractTypeFirst:'',
+					contractType:'',
+					projectName:'',
+					projectPlace:'',
+					buildPlace:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					fileList:[],
+					status:'',
+					projectId:'',
+					remarks:'',
+					no:''
+				}
+				this.inputForm.id = id
+				this.visible = true
+				if (method === 'add') {
+					// this.inputForm.id = 'add'
+					this.title = `新建项目`
+				} else if (method === 'edit') {
+					this.title = '修改项目'
+				} else if (method === 'view') {
+					this.title = '查看项目详情'
+				}
+				this.loading = false
+				this.$nextTick(() => {
+					this.$refs.inputForm.resetFields()
+					this.loading = true
+					this.projectInfoService.findByIdOut(this.inputForm.id).then((data) => {
+						this.inputForm = this.recover(this.inputForm, data)
+						this.inputForm.contractName=data.jyProjectList.contractName
+						this.inputForm.contractAmount=data.jyProjectList.contractAmount
+						this.inputForm.primaryLinkman=data.jyProjectList.primaryLinkman
+						this.inputForm.contractTypeFirst=data.jyProjectList.contractTypeFirst
+						this.inputForm.contractType=data.jyProjectList.contractType
+						this.inputForm.projectName=data.jyProjectList.name
+						this.inputForm.projectPlace=data.jyProjectList.place
+						this.inputForm.buildPlace=data.jyProjectList.buildPlace
+						this.inputForm.createByName=data.jyProjectList.createById
+						this.inputForm.createTime=data.jyProjectList.createTime
+						this.inputForm.projectLeader=data.jyProjectList.leader
+						this.inputForm.projectId=data.projectId
+						this.inputForm.remarks=data.remarks
+						this.inputForm.no = data.jyProjectList.no
+						if (this.status === 'audit' || this.status === 'taskFormDetail') {
+							method = 'view'
+						}
+
+						this.projectInfoService.getAttachmentList(this.inputForm.projectId,this.inputForm.id).then((data) => {
+							this.tableData = data
+							this.tableKey = Math.random()
+						})
+						this.loading = false
+					})
+				})
+			},
+			close () {
+				this.inputForm = {
+					id: '',
+					contractName:'',
+					contractAmount:'',
+					primarkLinkman:'',
+					contractTypeFirst:'',
+					contractType:'',
+					projectName:'',
+					projectPlace:'',
+					buildPlace:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					remarks:'',
+					fileList:[],
+					status:'',
+				}
+				this.$refs.inputForm.resetFields()
+				this.visible = false
+				this.tableData = []
+			},
+			showFile (row) {
+				row.name = row.attachmentName
+				openWindowOnUrl(row)
+			},
+			toHref (row) {
+				toHref(row)
+			},
+			getFiles(){
+				this.projectInfoService.getAttachmentList(this.inputForm.projectId,this.inputForm.id).then((data) => {
+					this.tableData = data
+					this.tableKey = Math.random()
+				})
+
+			},
+			getSize (value) {
+				if (this.commonJS.isEmpty(value)) {
+					return ''
+				} else {
+					let val = parseInt(value)
+					let k = 1024
+					let sizes = ['B', 'KB', 'MB', 'GB', 'PB', 'TB', 'EB', 'ZB', 'YB']
+					let i = Math.floor(Math.log(val) / Math.log(k))
+					let result = val / Math.pow(k, i);
+					let kb = parseFloat(result.toPrecision(3));
+					return kb + '' + sizes[i]
+				}
+			},
+			ifName (row) {
+				console.log('进入了ifName方法中',row)
+				if (this.commonJS.isEmpty(row.attachmentName)) {
+					row.attachmentName = '---'
+					return false
+				}
+				let suffix = row.attachmentName.substring(row.attachmentName.lastIndexOf('.') + 1)
+				if (suffix === 'jpg' || suffix === 'png' || suffix === 'gif' || suffix === 'bmp' || suffix === 'jpeg') {
+					return true
+				} else {
+					return false
+				}
+			},
+
+		}
+	}
+</script>
+<style lang="scss">
+	.el-input-number .el-input__inner {
+		text-align: left;
+	}
+	.el-divider__text {
+		font-size: 16px;
+		font-weight: bold;
+	}
+
+</style>

+ 106 - 1
src/views/jy/project/ProjectArchiveForm.vue

@@ -49,6 +49,30 @@
 				<el-col :span="24" >
 					<el-divider content-position="left"><i class="el-icon-document"></i>
 						项目基本信息
+						<el-link  v-if="commonJS.isEmpty(tabName) && projectData.firstInstanceStatus === '5'"
+								  @click="openAuditDetail(projectData.auditId1, '1')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							一级校审详情
+						</el-link>
+						<el-link v-if="commonJS.isEmpty(tabName) && projectData.secondInstanceStatus === '5'"
+								 @click="openAuditDetail(projectData.auditId2, '2')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							二级校审详情
+						</el-link>
+						<el-link v-if="commonJS.isEmpty(tabName) && projectData.thirdInstanceStatus === '5'"
+								 @click="openAuditDetail(projectData.auditId3, '3')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							三级校审详情
+						</el-link>
+						<el-link v-if="commonJS.isEmpty(tabName) && projectData.signetStatus === '5'"
+								 @click="openSignetDetail(projectData.signetId)" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							报告签发详情
+						</el-link>
+						<el-link v-if="commonJS.isEmpty(tabName) && projectData.outStatus === '5'"
+								 @click="openOutDetail(projectData.outId)" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							外审详情
+						</el-link>
+						<el-link v-if="commonJS.isEmpty(tabName) && projectData.approvalStatus === '5'"
+								 @click="openSignetDetail(projectData.approvalId)" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							报批签发详情
+						</el-link>
 					</el-divider>
 				</el-col>
 				<el-col :span="12">
@@ -216,6 +240,9 @@
 		<!--        附件-->
 <!--		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>-->
 		<FileForm ref="fileForm" @getFiles="getFiles"></FileForm>
+		<ProjectAuditFormDialog ref="auditDetail"></ProjectAuditFormDialog>
+		<SignetAddFormDialogDialog ref="signetDetail"></SignetAddFormDialogDialog>
+		<OutInstanceFormDialog ref="outInstanceDetail"></OutInstanceFormDialog>
 
 	</div>
 </template>
@@ -226,6 +253,9 @@
 	import FileForm from './FileForm'
 	import UpLoadComponent from '@/views/common/JyArchiveUpLoadComponent'
 	import CommonApi from '@/api/cw/common/CommonApi'
+	import ProjectAuditFormDialog from '@/views/jy/project/ProjectAuditFormDialog'
+	import SignetAddFormDialogDialog from '@/views/materialManagement/userSeal/SignetAddFormDialog'
+	import OutInstanceFormDialog from '@/views/jy/project/OutInstanceFormDialog'
 	import OSSSerivce, {
 		// eslint-disable-next-line no-unused-vars
 		beforeAvatarUpload,
@@ -280,15 +310,35 @@
 				tabName:'',
 				tableData: [],
 				tableKey :'1',
-				isBgs: false
+				isBgs: false,
+				projectData: {
+					auditId1: '',
+					auditId2: '',
+					auditId3: '',
+					id: '',
+					procInsId1:'',
+					procInsId2:'',
+					procInsId3:'',
+					firstInstanceStatus:'',
+					secondInstanceStatus:'',
+					thirdInstanceStatus:'',
+					signetId:'',
+					signetStatus:'',
+					outId:'',
+					outStatus:'',
+					approvalStatus:'',
+					approvalId:''
+				},
 			}
 		},
 		ProjectInfoService:null,
 		commonApi: null,
+		ProjectInfoService:null,
 		created () {
 			this.projectInfoService=new ProjectInfoService()
 			this.ossService = new OSSSerivce()
 			this.commonApi = new CommonApi()
+			this.projectInfoService=new ProjectInfoService()
 
 		},
 		computed: {
@@ -331,6 +381,9 @@
 			UpLoadComponent,
 			FileForm,
 			OSSSerivce,
+			ProjectAuditFormDialog,
+			SignetAddFormDialogDialog,
+			OutInstanceFormDialog,
 		},
 		methods: {
 			getKeyWatch (keyWatch) {
@@ -411,6 +464,45 @@
 							this.tableKey = Math.random()
 						})
 
+						console.log('项目id', this.inputForm.projectId)
+						//查询项目各流程节点审核情况与具体信息
+						if(this.inputForm.projectId){
+							const firstProjectId = this.inputForm.projectId.split(",");
+							const firstParam = firstProjectId.length > 0 ? firstProjectId[0] : "";
+							this.projectInfoService.findById(firstParam).then((data)=>{
+								this.projectData.auditId1 = data.auditId1
+								this.projectData.auditId2 = data.auditId2
+								this.projectData.auditId3 = data.auditId3
+								this.projectData.procInsId1 = data.procInsId1
+								this.projectData.procInsId2 = data.procInsId2
+								this.projectData.procInsId3 = data.procInsId3
+								this.projectData.firstInstanceStatus = data.firstInstanceStatus
+								this.projectData.secondInstanceStatus = data.secondInstanceStatus
+								this.projectData.thirdInstanceStatus = data.thirdInstanceStatus
+							})
+							//获取报告签发流程信息
+							this.projectInfoService.getSignetById(firstParam,1).then((signetData)=>{
+								if(signetData.status === '5'){
+									this.projectData.signetStatus = signetData.status
+									this.projectData.signetId = signetData.id
+								}
+							})
+							//获取外审流程信息
+							this.projectInfoService.getByProjectId(firstParam).then((outData)=>{
+								if(outData.status === '5'){
+									this.projectData.outStatus = outData.status
+									this.projectData.outId = outData.id
+								}
+							})
+							//获取报批签发流程信息
+							this.projectInfoService.getSignetById(firstParam,2).then((signetData)=>{
+								if(signetData.status === '5'){
+									this.projectData.approvalStatus = signetData.status
+									this.projectData.approvalId = signetData.id
+								}
+							})
+						}
+
 						// this.$refs.uploadComponent.newUpload(method, this.inputForm.fileList, 'jyProjectArchive', null, '附件', null, null, null)
 						// this.$refs.archiveFile.newUpload('view', [], 'cwWorkContract', null, null, null, null, false)
 						this.loading = false
@@ -458,6 +550,19 @@
 			saveForm (callback) {
 				this.doSubmit('save', callback)
 			},
+			// 打开校审明细页面
+			openSignetDetail (projectId) {
+				this.$refs.signetDetail.init(projectId,'view')
+			},
+			// 打开校审明细页面
+			openOutDetail (projectId) {
+				this.$refs.outInstanceDetail.init(projectId,'view')
+			},
+			// 根据项目id以及校审级别查询校审详情
+			// 打开校审明细页面
+			openAuditDetail (projectId, auditLevel) {
+				this.$refs.auditDetail.init(projectId, auditLevel)
+			},
 			startForm (callback) {
 				this.loading = true
 				if (this.commonJS.isNotEmpty(this.inputForm.id)) {

+ 20 - 1
src/views/jy/project/ProjectAuditForm.vue

@@ -54,6 +54,14 @@
 				<el-col :span="24" >
 					<el-divider content-position="left"><i class="el-icon-document"></i>
 						项目基本信息
+						<el-link  v-if="commonJS.isEmpty(tabName) && (inputForm.auditLevel === '2' || inputForm.auditLevel === '3')"
+								  @click="openAuditDetail(inputForm.auditId1, '1')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							一级校审详情
+						</el-link>
+						<el-link v-if="commonJS.isEmpty(tabName) && inputForm.auditLevel === '3'"
+								 @click="openAuditDetail(inputForm.auditId2, '2')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+							二级校审详情
+						</el-link>
 					</el-divider>
 				</el-col>
 				<el-col :span="12">
@@ -149,7 +157,7 @@
 		</el-form>
 		<!--        附件-->
 		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
-
+		<ProjectAuditFormDialog ref="auditDetail"></ProjectAuditFormDialog>
 
 	</div>
 </template>
@@ -158,6 +166,7 @@
 	import ProjectInfoService from "@/api/jy/ProjectInfoService";
 	import UserSelectSignatory from '../workClientInfo/clientUserSelect'
 	import UpLoadComponent from '@/views/common/UpLoadComponent'
+	import ProjectAuditFormDialog from './ProjectAuditFormDialog'
 	export default {
 		props: {
 			businessId: {
@@ -253,6 +262,7 @@
 		},
 		components: {
 			UserSelectSignatory,
+			ProjectAuditFormDialog,
 			UpLoadComponent,
 		},
 		methods: {
@@ -308,6 +318,7 @@
 					// this.$refs.archiveFile.clearUpload()
 					console.log('id',this.inputForm.id)
 						this.projectInfoService.findByIdAudit(this.inputForm.id).then((data) => {
+							console.log('data',data)
 							this.inputForm = this.recover(this.inputForm, data)
 							this.inputForm.contractName=data.jyProjectList.contractName
 							this.inputForm.contractAmount=data.jyProjectList.contractAmount
@@ -322,6 +333,9 @@
 							this.inputForm.projectLeader=data.jyProjectList.leader
 							this.inputForm.projectId=data.projectId
 							this.inputForm.auditLevel=data.auditLevel
+							this.inputForm.auditId1=data.id1
+							this.inputForm.auditId2=data.id2
+							this.inputForm.auditId3=data.id3
 							this.inputForm.no = data.jyProjectList.no
 							console.log('this.inputForm',this.inputForm)
 							// if (this.commonJS.isNotEmpty(this.inputForm.auditPeople)){
@@ -385,6 +399,11 @@
 					// }
 				})
 			},
+			// 根据项目id以及校审级别查询校审详情
+			// 打开校审明细页面
+			openAuditDetail (projectId, auditLevel) {
+				this.$refs.auditDetail.init(projectId, auditLevel)
+			},
 			saveForm (callback) {
 				this.doSubmit('save', callback)
 			},

+ 588 - 0
src/views/jy/project/ProjectAuditFormDialog.vue

@@ -0,0 +1,588 @@
+<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+	<div>
+		<el-dialog
+			:title="title"
+			:close-on-click-modal="false"
+			draggable
+			width="1200px"
+			@close="close"
+			@keyup.enter.native=""
+			append-to-body
+			v-model="visible">
+			<el-form size="large" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+					 label-width="170px" @submit.native.prevent>
+
+				<el-row  :gutter="15">
+					<el-col :span="24" >
+						<el-divider content-position="left"><i class="el-icon-document"></i>
+							合同信息
+						</el-divider>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="合同名称" prop="contractName"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.contractName" placeholder="请填写合同名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="合同金额(元)" prop="contractAmount"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.contractAmount" placeholder="请填写合同金额(元)"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="委托方" prop="primaryLinkman"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.primaryLinkman" placeholder="请填写委托方"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="合同类型(大类)" prop="contractTypeFirst"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.contractTypeFirst" placeholder="请填写合同类型(大类)"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="合同类型(小类)" prop="contractType"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.contractType" placeholder="请填写合同类型(小类)"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row  :gutter="15">
+					<el-col :span="24" >
+						<el-divider content-position="left"><i class="el-icon-document"></i>
+							项目基本信息
+						</el-divider>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="项目名称" prop="projectName"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.projectName" placeholder="请填写项目名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="项目所在地" prop="projectPlace"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.projectPlace" placeholder="请填写项目所在地"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="建设地点" prop="buildPlace"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.buildPlace" placeholder="请填写建设地点"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="项目负责人" prop="projectLeader"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.projectLeader" placeholder="请填写项目负责人"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="创建人" prop="createByName"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.createByName" placeholder="请填写创建人"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="创建时间" prop="createTime"
+									  :rules="[
+			 ]">
+							<el-input :disabled="true" v-model="inputForm.createTime" placeholder="请填写创建时间"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12" >
+						<el-form-item label="审核人" prop="auditPeople"
+									  :rules="[
+			 ]">
+							<UserSelectSignatory style="width: 100%" ref="userSelect2"
+												 :disabled="true" :limit='1' :modelValue="inputForm.auditPeople"
+												 @update:modelValue='(value) => {inputForm.auditPeople = value}'></UserSelectSignatory>
+						</el-form-item>
+					</el-col>
+
+				</el-row>
+				<el-row  :gutter="15">
+					<el-col :span="24" v-show="inputForm.status === '2' && status ==='audit'?true:false">
+						<el-divider content-position="left"><i class="el-icon-document"></i>
+							审核人及审核和修改意见
+						</el-divider>
+					</el-col>
+
+					<el-col :span="24" v-if="commonJS.isNotEmpty(inputForm.initialAuditOpinion)">
+						<el-form-item label="审核意见" prop="initialAuditOpinion"
+									  :rules="[
+			 ]">
+							<el-input type="textarea" id="auditData"  :rows="4" :disabled="true" show-word-limit maxlength="500" v-model="inputForm.initialAuditOpinion" placeholder="请填写审核意见"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24" v-if="commonJS.isNotEmpty(inputForm.initialEditOpinion)">
+						<el-form-item label="修改意见" prop="initialEditOpinion"
+									  :rules="[
+			 ]">
+							<el-input type="textarea" id="editData"  :rows="4" :disabled="true" show-word-limit maxlength="500" v-model="inputForm.initialEditOpinion" placeholder="请填写修改意见"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+
+			</el-form>
+			<!--        附件-->
+			<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
+			<template #footer>
+			<span class="dialog-footer">
+			<el-button @click="close()" icon="el-icon-circle-close">关闭</el-button>
+		  </span>
+			</template>
+
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import ProjectInfoService from "@/api/jy/ProjectInfoService";
+	import UserSelectSignatory from '../workClientInfo/clientUserSelect'
+	import UpLoadComponent from '@/views/common/UpLoadComponent'
+	export default {
+		props: {
+			businessId: {
+				type: String,
+				default: ''
+			},
+			formReadOnly: {
+				type: Boolean,
+				default: false
+			},
+			status: {
+				type: String,
+				default: ''
+			}
+		},
+		data () {
+			return {
+				title: '',
+				method: '',
+				visible: false,
+				loading: false,
+				inputForm: {
+					auditId1: '',
+					auditId2: '',
+					auditId3: '',
+					id: '',
+					contractName:'',
+					contractAmount:'',
+					primaryLinkman:'',
+					contractTypeFirst:'',
+					contractType:'',
+					projectName:'',
+					projectPlace:'',
+					buildPlace:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					initialAuditOpinion:'',
+					initialEditOpinion:'',
+					auditOpinion:'',
+					editOpinion:'',
+					workAttachmentDtoList:[],
+					auditPeople:'',
+					status:'',
+					projectId:'',
+					no:'',
+					auditLevel:''
+				},
+				keyWatch: '',
+				tabName:'',
+				isEdit:false
+
+			}
+		},
+		ProjectInfoService:null,
+		created () {
+			this.projectInfoService=new ProjectInfoService()
+		},
+		computed: {
+			bus: {
+				get () {
+					console.log(11111111111111111)
+					this.$refs.uploadComponent.setDividerName('附件')
+					return this.businessId
+
+				},
+				set (val) {
+					this.businessId = val
+				}
+			}
+		},
+		watch: {
+			'keyWatch': {
+				handler (newVal) {
+					if (this.bus) {
+						if (this.bus !== 'false') {
+							this.init('', this.bus)
+						}
+					} else {
+						this.$nextTick(() => {
+							console.log(222222222222222222)
+							this.$refs.inputForm.resetFields()
+						})
+					}
+				}
+			},
+			'loading': {
+				handler (newVal) {
+					this.$emit('changeLoading', newVal)
+					console.log(3333333333333333333)
+					this.$refs.uploadComponent.changeLoading(newVal)
+				}
+			}
+		},
+		components: {
+			UserSelectSignatory,
+			UpLoadComponent,
+		},
+		methods: {
+			getKeyWatch (keyWatch) {
+				this.keyWatch = keyWatch
+			},
+			init (id, auditLevel) {
+				if (auditLevel === '1') {
+					this.title = '一级校审详情'
+				} else if (auditLevel === '2') {
+					this.title = '二级校审详情'
+				} else {
+					this.title = '校审详情'
+				}
+				this.inputForm = {
+					auditId1: '',
+					auditId2: '',
+					auditId3: '',
+					id: '',
+					contractName:'',
+					contractAmount:'',
+					primaryLinkman:'',
+					contractTypeFirst:'',
+					contractType:'',
+					projectName:'',
+					projectPlace:'',
+					buildPlace:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					initialAuditOpinion:'',
+					initialEditOpinion:'',
+					auditOpinion:'',
+					editOpinion:'',
+					workAttachmentDtoList:[],
+					auditPeople:'',
+					status:'',
+					projectId:'',
+					no:'',
+					auditLevel:''
+				}
+				this.inputForm.id = id
+				this.visible = true
+				this.loading = false
+				this.$nextTick(() => {
+					console.log(44444444444444)
+					this.$refs.inputForm.resetFields()
+					this.loading = true
+					this.$refs.uploadComponent.clearUpload()
+					// this.$refs.archiveFile.clearUpload()
+					console.log('id',this.inputForm.id)
+						this.projectInfoService.findByIdAudit(this.inputForm.id).then((data) => {
+							this.inputForm = this.recover(this.inputForm, data)
+							this.inputForm.contractName=data.jyProjectList.contractName
+							this.inputForm.contractAmount=data.jyProjectList.contractAmount
+							this.inputForm.primaryLinkman=data.jyProjectList.primaryLinkman
+							this.inputForm.contractTypeFirst=data.jyProjectList.contractTypeFirst
+							this.inputForm.contractType=data.jyProjectList.contractType
+							this.inputForm.projectName=data.jyProjectList.name
+							this.inputForm.projectPlace=data.jyProjectList.place
+							this.inputForm.buildPlace=data.jyProjectList.buildPlace
+							this.inputForm.createByName=data.jyProjectList.createById
+							this.inputForm.createTime=data.jyProjectList.createTime
+							this.inputForm.projectLeader=data.jyProjectList.leader
+							this.inputForm.projectId=data.projectId
+							this.inputForm.auditLevel=data.auditLevel
+							this.inputForm.no = data.jyProjectList.no
+							console.log('this.inputForm',this.inputForm)
+							if (this.commonJS.isNotEmpty(data.initialAuditOpinion)){
+								this.inputForm.initialAuditOpinion=data.initialAuditOpinion.replace(/<br\/>/g, "\n")
+							}
+							if (this.commonJS.isNotEmpty(data.initialEditOpinion)){
+								this.inputForm.initialEditOpinion=data.initialEditOpinion.replace(/<br\/>/g, "\n")
+							}
+							this.$refs.uploadComponent.newUpload('view', this.inputForm.workAttachmentDtoList, 'jyProjectAudit', null, null, null, null, null)
+							this.loading = false
+						})
+				})
+			},
+			close () {
+				this.$refs.uploadComponent.clearUpload()
+				this.inputForm = {
+					id1: '',
+					id2: '',
+					id3: '',
+					id: '',
+					contractName:'',
+					contractAmount:'',
+					primarkLinkman:'',
+					contractTypeFirst:'',
+					contractType:'',
+					projectName:'',
+					projectPlace:'',
+					buildPlace:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					initialAuditOpinion:'',
+					initialEditOpinion:'',
+					auditOpinion:'',
+					editOpinion:'',
+					workAttachmentDtoList:[],
+					status:'',
+				}
+				this.$refs.inputForm.resetFields()
+				this.visible = false
+			},
+			reapplyForm (callback) {
+				this.loading = true
+				this.projectInfoService.findByIdAudit(this.inputForm.id).then((data) => {
+					// if (data.status !== '4') { // 审核状态不是“驳回”,就弹出提示
+					// 	this.loading = false
+					// 	this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					// 	throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					// } else {
+						this.startFormTrue(callback)
+					// }
+				})
+			},
+			saveForm (callback) {
+				this.doSubmit('save', callback)
+			},
+			startForm (callback) {
+				this.loading = true
+				if (this.commonJS.isNotEmpty(this.inputForm.id)) {
+					this.projectInfoService.findByIdAudit(this.inputForm.id).then((data) => {
+						// if (this.commonJS.isNotEmpty(data.status) && data.status !== '0' && data.status !== '1' && data.status !== '3' && data.status !== '6') { // 审核状态不是“未发起”或“暂存”或“撤回”或"超期未发起",就弹出提示
+						// 	this.loading = false
+						// 	this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						// 	throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						// } else {
+							this.startFormTrue(callback)
+						// }
+					})
+				} else {
+					this.startFormTrue(callback)
+				}
+			},
+			startFormTrue (callback) {
+				this.doSubmit('start', callback)
+			},
+			async agreeForm (callback) {
+				this.loading = true
+				await this.projectInfoService.findByIdAudit(this.inputForm.id).then((data) => {
+					// if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+					// 	this.loading = false
+					// 	this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					// 	throw new Error()
+					// } else {
+						this.doSubmit('agree', callback)
+					// }
+				})
+			},
+			// 表单提交
+			async doSubmit (status, callback) {
+				this.loading = true
+				if (await this.$refs.uploadComponent.checkProgress()) {
+					this.loading = false
+					throw new Error()
+				}
+				if (status === 'save') {
+					// 暂存
+					this.loading = true
+					this.inputForm.status = '1'
+					this.inputForm.workAttachmentDtoList = this.$refs.uploadComponent.getDataList()
+					if (this.commonJS.isEmpty(this.inputForm.auditPeople)) {
+						this.$message.error('请选择审核人')
+						this.loading = false
+						throw new Error('请选择审核人')
+					}
+					this.projectInfoService.saveFormThree(this.inputForm).then((data) => {
+						this.inputForm.assignee = this.inputForm.auditPeople
+						callback(data.businessTable, data.businessId, this.inputForm)
+						this.loading = false
+					}).catch(() => {
+						this.loading = false
+					})
+					return
+				} else if (status === 'start') {
+					// 送审  待审核
+					this.inputForm.status = '2'
+				} else if (status === 'agree') {
+					// 审核同意
+					this.inputForm.status = '5'
+					this.inputForm.auditDate = this.moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+				}
+				this.$refs['inputForm'].validate((valid) => {
+					if (valid) {
+						this.loading = true
+						this.inputForm.workAttachmentDtoList = this.$refs.uploadComponent.getDataList()
+						if (this.commonJS.isEmpty(this.inputForm.auditPeople)) {
+							this.$message.error('请选择审核人')
+							this.loading = false
+							throw new Error('请选择审核人')
+						}
+						this.projectInfoService.saveFormThree(this.inputForm).then((data) => {
+							this.inputForm.assignee = this.inputForm.auditPeople
+							this.inputForm.id = data.businessId
+							let processTitle = ''
+							if (this.inputForm.auditLevel === '1'){
+								processTitle = `${this.$store.state.user.name} 发起了 ${this.inputForm.projectName} - ${this.inputForm.no} ` + `[嘉溢-一级校审]`
+							}else if (this.inputForm.auditLevel === '2'){
+								processTitle = `${this.$store.state.user.name} 发起了 ${this.inputForm.projectName} - ${this.inputForm.no} ` + `[嘉溢-二级校审]`
+							}else if (this.inputForm.auditLevel === '3'){
+								processTitle = `${this.$store.state.user.name} 发起了 ${this.inputForm.projectName} - ${this.inputForm.no} ` + `[嘉溢-三级校审]`
+							}
+							this.inputForm.title = processTitle
+							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 (await this.$refs.uploadComponent.checkProgress()) {
+					this.loading = false
+					throw new Error()
+				} else {
+					if (type === 'reject' || type === 'reback') {
+						this.projectInfoService.findByIdAudit(this.inputForm.id).then((data) => {
+							// if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+							// 	this.loading = false
+							// 	this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+							// 	throw new Error()
+							// } else {
+								// if (type === 'agree') {
+								//   // 同意
+								//   this.inputForm.status = '5'
+								// }
+								if (type === 'reject') {
+									// 驳回
+									this.inputForm.status = '4'
+									this.loading = true
+									this.inputForm.workAttachmentDtoList = this.$refs.uploadComponent.getDataList()
+									this.projectInfoService.saveFormThree(this.inputForm).then((data) => {
+										this.loading = false
+									}).catch(() => {
+										this.loading = false
+									})
+									// return
+								}
+								if (type === 'reback') {
+									// 撤回
+									this.inputForm.status = '3'
+								}
+								if (type === 'reject' || type === 'reback') {
+									let param = {status: this.inputForm.status, id: this.inputForm.id}
+									this.loading = true
+									this.projectInfoService.updateStatusByAuditId(param).then(() => {
+										this.loading = false
+										callback()
+									})
+								}
+							// }
+						})
+					} else if (type === 'hold') {
+						this.projectInfoService.findByIdAudit(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.id}
+								this.projectInfoService.updateStatusByAuditId(param).then(() => {
+									this.loading = false
+									callback()
+								})
+							// }
+						})
+					}
+				}
+			},
+			// 下载一级校审
+			downloadFirstAuditTpl () {
+				// this.$utils.downloadExcel('/sys/project/import/template')
+				this.loading = true
+				if (this.tabName === '一级校审') {
+					this.projectInfoService.downloadFirstAuditTpl(this.inputForm.id, this.inputForm.projectId).then((res) => {
+						console.log('hh',res)
+						// 将二进制流文件写入excel表,以下为重要步骤
+						this.tabName=this.inputForm.projectName+" 报告质量内审单"
+						this.$utils.downloadWord(res, this.tabName)
+						this.loading = false
+					}).catch(function (err) {
+						this.loading = false
+						if (err.response) {
+							console.log(err.response)
+						}
+					})
+				}
+				if (this.tabName === '二级校审') {
+					this.projectInfoService.downloadFirstAuditTpl(this.inputForm.id, this.inputForm.projectId).then((res) => {
+						// 将二进制流文件写入excel表,以下为重要步骤
+						this.tabName=this.inputForm.projectName+" 报告质量内审单"
+						this.$utils.downloadWord(res, this.tabName)
+						this.loading = false
+					}).catch(function (err) {
+						this.loading = false
+						if (err.response) {
+							console.log(err.response)
+						}
+					})
+				}
+				if (this.tabName === '三级校审') {
+					this.projectInfoService.downloadFirstAuditTpl(this.inputForm.id, this.inputForm.projectId).then((res) => {
+						// 将二进制流文件写入excel表,以下为重要步骤
+						this.tabName=this.inputForm.projectName+" 报告质量内审单"
+						this.$utils.downloadWord(res, this.tabName)
+						this.loading = false
+					}).catch(function (err) {
+						this.loading = false
+						if (err.response) {
+							console.log(err.response)
+						}
+					})
+				}
+			},
+
+		}
+	}
+</script>
+<style lang="scss">
+	.el-input-number .el-input__inner {
+		text-align: left;
+	}
+	.el-divider__text {
+		font-size: 16px;
+		font-weight: bold;
+	}
+
+</style>

+ 85 - 6
src/views/jy/workContractInfo/ContractAddForm.vue

@@ -226,6 +226,48 @@
 			<el-tabs v-model="activeName" type="border-card">
 				<el-tab-pane name="contactParty">
 					<template v-slot:label>
+						<span>抄送人员信息</span>
+					</template>
+					<el-row :gutter="15">
+						<UserSelectButton ref="userSelectButton" :disabled="status === 'audit' || status === 'taskFormDetail'" @getValue="(value) => {openUserChoose(value)}"></UserSelectButton>
+					</el-row>
+					<el-row  :gutter="15" style="margin-top: 10px">
+						<el-col :gutter="15">
+							<el-form style="width: 100%;">
+								<vxe-table
+									border
+									:column-config="{resizable: true}"
+									show-overflow
+									show-footer
+									:key="tableKeyUser"
+									ref="userTable"
+									class="vxe-table-element"
+									:data="inputForm.informUserList"
+									style=""
+									@cell-click=""
+									@edit-closed=""
+									highlight-current-row
+								>
+									<vxe-table-column align="center" field="userName" title="姓名"></vxe-table-column>
+									<vxe-table-column align="center" field="officeName" title="部门"></vxe-table-column>
+									<vxe-table-column align="center" title="操作" width="100">
+										<template v-slot="scope">
+											<el-button size="mini" type="danger" :disabled="status === 'audit' || status === 'taskFormDetail'|| method==='view'" @click="removeEvent(scope.row,scope.$rowIndex,'user')">删除</el-button>
+										</template>
+									</vxe-table-column>
+								</vxe-table>
+							</el-form>
+						</el-col>
+					</el-row>
+				</el-tab-pane>
+			</el-tabs>
+
+
+
+
+			<el-tabs v-model="activeName" type="border-card">
+				<el-tab-pane name="contactParty">
+					<template v-slot:label>
 						<span><span style="color: red;border-top: 20px">*</span> 委托方列表</span>
 					</template>
 					<el-row :gutter="15">
@@ -362,6 +404,8 @@
   import dictService from "@/api/sys/dictService";
   import ProjectInfoService from "@/api/jy/ProjectInfoService";
   import ProjectDia from '@/views/jy/project/ProjectDia'
+  import UserSelectButton from '@/components/userSelectButton/DividerButton'
+  import UserService from '@/api/sys/UserService'
   import OSSSerive, {
     httpRequest,
     toHref,
@@ -443,6 +487,7 @@
 			createTime: '',
           contractProperList: [],
           cwWorkClientContactDTOList: [],
+		  informUserList: [],
           contractAmountType: '',
           contractOpposite: '',
           fees: '',
@@ -456,6 +501,7 @@
 			closingDate: '',
 			contractTypeFirst:''
         },
+		  tableKeyUser: '',
 		  activeNameTop: 'contract',
         activeName1: 'contractProper',
 		  activeName:'contactParty',
@@ -504,6 +550,7 @@
       SelectTree,
       WorkClientForm,
       WorkClientChooseForm,
+		UserSelectButton,
       WorkClientChooseRadio
     },
     ossService: null,
@@ -606,6 +653,7 @@
 			createTime: '',
           contractProperList: [],
           cwWorkClientContactDTOList: [],
+		  informUserList: [],
           contractAmountType: '',
           contractOpposite: '',
 			contractTypes:[],
@@ -641,12 +689,8 @@
 					this.inputForm.contractNo=data.no
 					this.inputForm.contractTypes=data.contractTypes
 					this.inputForm.cwWorkClientContactDTOList=data.cwWorkClientContactDTOList
-					if(data.contractType){
-						this.showType(data.contractType)
-					}else {
-						if (data.contractTypeFirst){
-							this.inputForm.contractTypes=data.contractTypeFirst
-						}
+					if(this.inputForm.contractTypes) {
+						this.handleChange(this.inputForm.contractTypes)
 					}
 					this.workClientService.findListByName(data.primaryLinkman).then((da)=>{
 						console.log('11',da)
@@ -705,6 +749,11 @@
           this.$refs.contactTable.remove(row)
           this.inputForm.cwWorkClientContactDTOList.splice(rowIndex, 1)
         }
+	    if (type === 'user') {
+		  this.$refs.userTable.remove(row)
+		  this.inputForm.informUserList.splice(rowIndex, 1)
+		  this.tableKeyUser = Math.random()
+	    }
       },
       openWorkClient () {
         this.$refs.workClientChooseForm.init()
@@ -798,6 +847,8 @@
       // 表单提交
       // 暂存
       doSubmit () {
+      	console.log(this.inputForm)
+      	console.log(this.inputForm.contractTypes)
         this.loading = true
         if (this.commonJS.isEmpty(this.inputForm.cwWorkClientContactDTOList)) {
           this.loading = false
@@ -1022,6 +1073,34 @@
 			}
 
 		},
+		openUserChoose (value) {
+			if (this.commonJS.isNotEmpty(value)) {
+				UserService.queryDetailList(value).then((data) => {
+					if (this.commonJS.isEmpty(this.inputForm.informUserList)) {
+						this.inputForm.informUserList = []
+					}
+					data.forEach(item => {
+						this.inputForm.informUserList.forEach((user, rowIndex) => {
+							if (this.commonJS.isEmpty(item.name) || user.userName === item.name || user.userId === item.id) {
+								this.$refs.userTable.remove(user)
+								this.inputForm.informUserList.splice(rowIndex, 1)
+								this.tableKeyUser = Math.random()
+							}
+						})
+					})
+					data.forEach(item => {
+						let param = {
+							userId: item.id,
+							userName: this.commonJS.isEmpty(item.name) ? '' : item.name,
+							officeName: this.commonJS.isEmpty(item.officeDTO) ? '' : this.commonJS.isEmpty(item.officeDTO.name) ? '' : item.officeDTO.name
+						}
+						this.$refs.userTable.insertAt(param)
+						this.inputForm.informUserList.push(param)
+						this.tableKeyUser = Math.random()
+					})
+				})
+			}
+		},
 
 		/*修改或查询详情是合同类型展示处理*/
 		showType(typeList){

+ 1 - 1
src/views/jy/workContractInfo/JyWorkContractList.vue

@@ -129,7 +129,7 @@
 					<vxe-column min-width="100px" title="合同金额(元)" field="contractAmount" align="center"></vxe-column>
 					<vxe-column min-width="100px" title="创建人" field="createName" align="center"></vxe-column>
 					<vxe-column min-width="150px" title="创建时间" field="createTime" align="center"></vxe-column>
-					<vxe-column min-width="100px"  title="状态" field="filedType" fixed="right" align="center">
+					<vxe-column min-width="110px"  title="状态" field="filedType" fixed="right" align="center">
 						<template #default="scope">
 							<el-button  @click="detailFiled(scope.row)" :type="$dictUtils.getDictLabel('approval_type_status', scope.row.filedType, '')" effect="dark">{{$dictUtils.getDictLabel("approval_type", scope.row.filedType, '未登记')}} </el-button>
 						</template>

+ 103 - 5
src/views/materialManagement/userSeal/SignetAddForm.vue

@@ -58,6 +58,26 @@
 			</el-row>
 			<el-divider content-position="left"><i class="el-icon-document"></i>
 				基本信息
+				<el-link  v-if="commonJS.isEmpty(tabName) && projectData.firstInstanceStatus === '5'"
+						  @click="openAuditDetail(projectData.auditId1, '1')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+					一级校审详情
+				</el-link>
+				<el-link v-if="commonJS.isEmpty(tabName) && projectData.secondInstanceStatus === '5'"
+						 @click="openAuditDetail(projectData.auditId2, '2')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+					二级校审详情
+				</el-link>
+				<el-link v-if="commonJS.isEmpty(tabName) && projectData.thirdInstanceStatus === '5'"
+						 @click="openAuditDetail(projectData.auditId3, '3')" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+					三级校审详情
+				</el-link>
+				<el-link v-if="commonJS.isEmpty(tabName) && projectData.signetStatus === '5'"
+						 @click="openSignetDetail(projectData.signetId)" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+					报告签发详情
+				</el-link>
+				<el-link v-if="commonJS.isEmpty(tabName) && projectData.outStatus === '5'"
+						 @click="openOutDetail(projectData.outId)" type="primary" style="font-weight: bold;font-size: 15px;margin-left: 20px"><i class="el-icon-document"></i>
+					外审详情
+				</el-link>
 			</el-divider>
 			<el-row  :gutter="15">
 				<el-col :span="12">
@@ -103,6 +123,9 @@
 		<!--        附件-->
 		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 		<ProjectForm ref="projectForm" @getProgram="getProgram"></ProjectForm>
+		<ProjectAuditFormDialog ref="auditDetail"></ProjectAuditFormDialog>
+		<SignetAddFormDialogDialog ref="signetDetail"></SignetAddFormDialogDialog>
+		<OutInstanceFormDialog ref="outInstanceDetail"></OutInstanceFormDialog>
 
 	</div>
 </template>
@@ -114,6 +137,10 @@
 	import ProjectForm from './ProjectForm'
 	import dictService from "@/api/sys/dictService";
 	import CommonApi from '@/api/cw/common/CommonApi'
+	import ProjectAuditFormDialog from '@/views/jy/project/ProjectAuditFormDialog'
+	import ProjectInfoService from "@/api/jy/ProjectInfoService";
+	import SignetAddFormDialogDialog from '@/views/materialManagement/userSeal/SignetAddFormDialog'
+	import OutInstanceFormDialog from '@/views/jy/project/OutInstanceFormDialog'
 	export default {
 		props: {
 			businessId: {
@@ -158,13 +185,41 @@
 				typeData:[],
 				keyWatch: '',
 
+				projectData: {
+					auditId1: '',
+					auditId2: '',
+					auditId3: '',
+					id: '',
+					procInsId1:'',
+					procInsId2:'',
+					procInsId3:'',
+					firstInstanceStatus:'',
+					secondInstanceStatus:'',
+					thirdInstanceStatus:'',
+					signetId:'',
+					signetStatus:'',
+					outId:'',
+					outStatus:'',
+					createTime:'',
+					initialAuditOpinion:'',
+					initialEditOpinion:'',
+					auditOpinion:'',
+					editOpinion:'',
+					workAttachmentDtoList:[],
+					auditPeople:'',
+					status:'',
+					projectId:'',
+					no:'',
+					auditLevel:''
+				},
 			}
 		},
 		SignetService: null,
 		commonApi: null,
+		ProjectInfoService:null,
 		created () {
-			console.log('jld ')
 			this.signetService = new SignetService()
+			this.projectInfoService=new ProjectInfoService()
 			this.commonApi = new CommonApi()
 			this.getTypeList()
 		},
@@ -175,7 +230,10 @@
 		},
 		components: {
 			UpLoadComponent,
+			ProjectAuditFormDialog,
 			ProjectForm,
+			SignetAddFormDialogDialog,
+			OutInstanceFormDialog,
 		},
 		computed: {
 			bus: {
@@ -244,16 +302,15 @@
 					this.loading = true
 					this.$refs.uploadComponent.clearUpload()
 					// if (this.commonJS.isNotEmpty(this.inputForm.id)) {
-						console.log('this.inputForm.id', this.inputForm.id)
 						this.signetService.queryById(this.inputForm.id).then((data)=>{
-							console.log('s',data)
+
 							this.inputForm = this.recover(this.inputForm, data)
 							var list=data.projectList
 							this.inputForm.projectList=list
 							this.inputForm.types=data.types
 							this.inputForm.createById=data.createById
 							this.inputForm.typeStatus = data.typeStatus
-							console.log('types',this.inputForm)
+
 							if (this.commonJS.isEmpty(this.inputForm.createDate)) {
 								this.inputForm.createDate = this.moment(new Date()).format('YYYY-MM-DD')
 							}
@@ -263,8 +320,36 @@
 							if (this.status === 'audit' || this.status === 'taskFormDetail') {
 								method = 'view'
 							}
-							console.log('123123123')
 							this.$refs.uploadComponent.newUpload(method, this.inputForm.files, 'jySeal',null, null, null, null, false)
+							console.log('项目id', this.inputForm.projectId)
+							//查询项目各流程节点审核情况与具体信息
+							if(this.inputForm.projectId){
+								const firstProjectId = this.inputForm.projectId.split(",");
+								const firstParam = firstProjectId.length > 0 ? firstProjectId[0] : "";
+								this.projectInfoService.findById(firstParam).then((data)=>{
+									this.projectData.auditId1 = data.auditId1
+									this.projectData.auditId2 = data.auditId2
+									this.projectData.auditId3 = data.auditId3
+									this.projectData.procInsId1 = data.procInsId1
+									this.projectData.procInsId2 = data.procInsId2
+									this.projectData.procInsId3 = data.procInsId3
+									this.projectData.firstInstanceStatus = data.firstInstanceStatus
+									this.projectData.secondInstanceStatus = data.secondInstanceStatus
+									this.projectData.thirdInstanceStatus = data.thirdInstanceStatus
+								})
+								this.projectInfoService.getSignetById(firstParam,1).then((signetData)=>{
+									if(signetData.status === '5'){
+										this.projectData.signetStatus = signetData.status
+										this.projectData.signetId = signetData.id
+									}
+								})
+								this.projectInfoService.getByProjectId(firstParam).then((outData)=>{
+									if(outData.status === '5'){
+										this.projectData.outStatus = outData.status
+										this.projectData.outId = outData.id
+									}
+								})
+							}
 						})
 						this.loading = false
 					// }
@@ -289,6 +374,19 @@
 					this.doSubmit('start', callback)
 				}
 			},
+			// 打开校审明细页面
+			openSignetDetail (projectId) {
+				this.$refs.signetDetail.init(projectId,'view')
+			},
+			// 打开校审明细页面
+			openOutDetail (projectId) {
+				this.$refs.outInstanceDetail.init(projectId,'view')
+			},
+			// 根据项目id以及校审级别查询校审详情
+			// 打开校审明细页面
+			openAuditDetail (projectId, auditLevel) {
+				this.$refs.auditDetail.init(projectId, auditLevel)
+			},
 			async agreeForm(callback) {
 				console.log('进入方法')
 				this.loading = true

+ 509 - 0
src/views/materialManagement/userSeal/SignetAddFormDialog.vue

@@ -0,0 +1,509 @@
+<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+	<div>
+		<el-dialog
+			:title="title"
+			:close-on-click-modal="false"
+			draggable
+			width="1200px"
+			@close="close"
+			@keyup.enter.native=""
+			append-to-body
+			v-model="visible">
+			<el-form size="large" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"
+					 label-width="170px" @submit.native.prevent>
+				<el-row  :gutter="15">
+					<el-col :span="24">
+						<vxe-table
+							border
+							:footer-method="footerMethod2"
+							show-overflow
+							show-footer
+							ref="baseTable"
+							:key="baseKey"
+							class="vxe-table-element"
+							:data="inputForm.projectList"
+							style="margin-left: 5em"
+							@cell-click=""
+							@edit-closed=""
+							keep-source
+							:readonly="true"
+							highlight-current-row
+							:edit-rules="tableRules"
+							:edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true, icon: '-'}"
+						>
+							<vxe-table-column field="name" align="center" title="项目名称" :edit-render="{}" show-overflow="title">
+								<template v-slot:edit="scope">
+									<el-input  :disabled="status === 'audit' || status === 'taskFormDetail' || method === 'view'" @focus="openProgramPageForm(scope.$rowIndex)" placeholder="请填写项目名称" :readonly="true" v-model="scope.row.name"/>
+								</template>
+							</vxe-table-column>
+							<vxe-table-column field="no" align="center" title="项目编号" :edit-render="{}">
+								<template v-slot:edit="scope">
+									<el-input :disabled="true" :readonly="true" placeholder="请填写项目编号" v-model="scope.row.no"/>
+								</template>
+							</vxe-table-column>
+							<vxe-table-column  field="leader" align="center" title="项目负责人" :edit-render="{}">
+								<template v-slot:edit="scope">
+									<el-input :disabled="true" placeholder="请填写项目负责人" v-model="scope.row.leader"/>
+								</template>
+							</vxe-table-column>
+							<vxe-table-column field="createTime" align="center" title="创建时间" :edit-render="{}">
+								<template v-slot:edit="scope">
+									<el-input :disabled="true" placeholder="请填写创建时间" v-model="scope.row.createTime"/>
+								</template>
+							</vxe-table-column>
+							<vxe-table-column title="操作" align="center" width="100">
+								<template v-slot="scope">
+									<el-button :disabled="status === 'audit' || status === 'taskFormDetail' || method === 'view'" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'base')">删除</el-button>
+								</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="12">
+						<el-form-item label="申请人" prop="createByName"
+									  :rules="[ ]">
+							<el-input :disabled="true" v-model="inputForm.createByName" ></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="申请时间" prop="createDate"
+									  :rules="[]">
+							<el-input :disabled="true" v-model="inputForm.createDate" ></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="用印类型" prop="types"
+									  :rules="[
+							 {required: true, message:'用印类型不能为空', trigger:'change'}
+							]">
+							<el-cascader :disabled="status === 'audit' || status === 'taskFormDetail' || method === 'view'"   style="width: 100%" v-model="inputForm.types" :options="typeData" @change="handleChange" placeholder="请选择"  clearable />
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="用印份数" prop="number"
+									  :rules="[
+							 {required: true, message:'用印份数不能为空', trigger:'blur'}
+
+							]">
+							<el-input oninput="value=value.replace(/[^\d]/g,'')" :disabled="status === 'audit' || status === 'taskFormDetail' || method === 'view'" v-model="inputForm.number" placeholder="请输入用印份数" ></el-input>
+						</el-form-item>
+					</el-col>
+
+					<el-col :span="24">
+						<el-form-item label="说明" prop="remarks"
+									  :rules="[
+                        {required: true, message:'说明不能为空', trigger:'blur'}
+               ]">
+							<el-input :disabled="status === 'audit' || status === 'taskFormDetail' || method === 'view'" type="textarea" placeholder="请输入说明"  maxlength="500"  style="width:100%" v-model="inputForm.remarks" show-word-limit></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<!--        附件-->
+			<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
+			<template #footer>
+			<span class="dialog-footer">
+			<el-button @click="close()" icon="el-icon-circle-close">关闭</el-button>
+		  </span>
+			</template>
+
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import ProjectInfoService from "@/api/jy/ProjectInfoService";
+	import UserSelectSignatory from '@/views/jy/drive/clientUserSelect'
+	import UpLoadComponent from '@/views/common/UpLoadComponent'
+	import SignetService from '@/api/jy/SignetService'
+	import dictService from "@/api/sys/dictService";
+	export default {
+		props: {
+			businessId: {
+				type: String,
+				default: ''
+			},
+			formReadOnly: {
+				type: Boolean,
+				default: false
+			},
+			status: {
+				type: String,
+				default: ''
+			}
+		},
+		data () {
+			return {
+				title: '',
+				method: '',
+				visible: false,
+				loading: false,
+				inputForm:{
+					id:'',
+					projectList:[],
+					name:'',
+					no:'',
+					projectLeader:'',
+					projectCreateDate:'',
+					createById:this.$store.state.user.id,
+					createByName:this.$store.state.user.name,
+					createDate:this.moment(new Date()).format('YYYY-MM-DD'),
+					remarks:'',
+					files: [], // 附件信息
+					types:[], //用印类型
+					number:'', //用印份数
+					projectId:'',
+					procInsId: '',
+					projectName:'',
+					typeStatus:''
+				},
+				programRow:'',
+				baseKey:'',
+				typeData:[],
+				keyWatch: '',
+
+				projectData: {
+					auditId1: '',
+					auditId2: '',
+					auditId3: '',
+					id: '',
+					procInsId1:'',
+					procInsId2:'',
+					procInsId3:'',
+					firstInstanceStatus:'',
+					secondInstanceStatus:'',
+					thirdInstanceStatus:'',
+					projectPlace:'',
+					buildPlace:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					initialAuditOpinion:'',
+					initialEditOpinion:'',
+					auditOpinion:'',
+					editOpinion:'',
+					workAttachmentDtoList:[],
+					auditPeople:'',
+					status:'',
+					projectId:'',
+					no:'',
+					auditLevel:''
+				},
+			}
+		},
+		ProjectInfoService:null,
+		SignetService: null,
+		created () {
+			this.projectInfoService=new ProjectInfoService()
+			this.signetService = new SignetService()
+			this.getTypeList()
+		},
+		activated () {
+			this.getTypeList()
+		},
+		computed: {
+			bus: {
+				get () {
+					this.$refs.uploadComponent.setDividerName('附件')
+					return this.businessId
+
+				},
+				set (val) {
+					this.businessId = val
+				}
+			}
+		},
+		watch: {
+			'keyWatch': {
+				handler (newVal) {
+					if (this.bus) {
+						if (this.bus !== 'false') {
+							this.init('', this.bus)
+						}
+					} else {
+						this.$nextTick(() => {
+							this.$refs.inputForm.resetFields()
+						})
+					}
+				}
+			},
+			'loading': {
+				handler (newVal) {
+					this.$emit('changeLoading', newVal)
+					this.$refs.uploadComponent.changeLoading(newVal)
+				}
+			}
+		},
+		components: {
+			UserSelectSignatory,
+			UpLoadComponent,
+		},
+		methods: {
+			getKeyWatch (keyWatch) {
+				this.keyWatch = keyWatch
+			},
+			init (id, method) {
+				this.title = '报告签发详情'
+				this.method = method
+				this.inputForm={
+					id:'',
+					projectList:[],
+					name:'',
+					no:'',
+					projectLeader:'',
+					projectCreateDate:'',
+					createById:'',
+					createByName:'',
+					createDate:'',
+					remarks:'',
+					files: [], // 附件信息
+					types:[], //用印类型
+					number:'', //用印份数
+					projectId:'',
+					procInsId: '',
+					projectName:'',
+					typeStatus:''
+				}
+				this.inputForm.id = id
+				this.visible = true
+				this.loading = false
+				this.$nextTick(() => {
+					this.$refs.inputForm.resetFields()
+					this.loading = true
+					this.$refs.uploadComponent.clearUpload()
+					// if (this.commonJS.isNotEmpty(this.inputForm.id)) {
+					this.signetService.queryById(this.inputForm.id).then((data)=>{
+						this.inputForm = this.recover(this.inputForm, data)
+						var list=data.projectList
+						this.inputForm.projectList=list
+						this.inputForm.types=data.types
+						this.inputForm.createById=data.createById
+						this.inputForm.typeStatus = data.typeStatus
+						if (this.commonJS.isEmpty(this.inputForm.createDate)) {
+							this.inputForm.createDate = this.moment(new Date()).format('YYYY-MM-DD')
+						}
+						if (this.commonJS.isEmpty(this.inputForm.projectList)) {
+							this.inputForm.projectList = []
+						}
+						this.$refs.uploadComponent.newUpload('view', this.inputForm.files, 'jySeal',null, null, null, null, false)
+					})
+					this.loading = false
+					// }
+				})
+			},
+			getTypeList(){
+				dictService.getTypeData().then((data)=>{
+					this.typeData=data
+				})
+			},
+			close() {
+				this.$refs.uploadComponent.clearUpload()
+				this.$refs.inputForm.resetFields()
+				this.inputForm = {
+					id:'',
+					projectList:[],
+					name:'',
+					no:'',
+					projectLeader:'',
+					projectCreateDate:'',
+					createById:'',
+					createByName:'',
+					createDate:'',
+					remarks:'',
+					files: [], // 附件信息
+					types:[], //用印类型
+					number:'', //用印份数
+					projectId:'',
+					procInsId: '',
+				}
+				this.visible = false
+			},
+			reapplyForm (callback) {
+				this.loading = true
+				this.projectInfoService.findByIdAudit(this.inputForm.id).then((data) => {
+					// if (data.status !== '4') { // 审核状态不是“驳回”,就弹出提示
+					// 	this.loading = false
+					// 	this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					// 	throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					// } else {
+					this.startFormTrue(callback)
+					// }
+				})
+			},
+			saveForm (callback) {
+				this.doSubmit('save', callback)
+			},
+			startForm (callback) {
+				this.loading = true
+				if (this.commonJS.isNotEmpty(this.inputForm.id)) {
+					this.projectInfoService.findByIdAudit(this.inputForm.id).then((data) => {
+						// if (this.commonJS.isNotEmpty(data.status) && data.status !== '0' && data.status !== '1' && data.status !== '3' && data.status !== '6') { // 审核状态不是“未发起”或“暂存”或“撤回”或"超期未发起",就弹出提示
+						// 	this.loading = false
+						// 	this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						// 	throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						// } else {
+						this.startFormTrue(callback)
+						// }
+					})
+				} else {
+					this.startFormTrue(callback)
+				}
+			},
+			startFormTrue (callback) {
+				this.doSubmit('start', callback)
+			},
+			async agreeForm (callback) {
+				this.loading = true
+				await this.projectInfoService.findByIdAudit(this.inputForm.id).then((data) => {
+					// if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+					// 	this.loading = false
+					// 	this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					// 	throw new Error()
+					// } else {
+					this.doSubmit('agree', callback)
+					// }
+				})
+			},
+			// 表单提交
+			async doSubmit (status, callback) {
+				this.loading = true
+				if (await this.$refs.uploadComponent.checkProgress()) {
+					this.loading = false
+					throw new Error()
+				}
+				if (status === 'save') {
+					// 暂存
+					this.loading = true
+					this.inputForm.status = '1'
+					this.inputForm.workAttachmentDtoList = this.$refs.uploadComponent.getDataList()
+					if (this.commonJS.isEmpty(this.inputForm.auditPeople)) {
+						this.$message.error('请选择审核人')
+						this.loading = false
+						throw new Error('请选择审核人')
+					}
+					this.projectInfoService.saveFormThree(this.inputForm).then((data) => {
+						this.inputForm.assignee = this.inputForm.auditPeople
+						callback(data.businessTable, data.businessId, this.inputForm)
+						this.loading = false
+					}).catch(() => {
+						this.loading = false
+					})
+					return
+				} else if (status === 'start') {
+					// 送审  待审核
+					this.inputForm.status = '2'
+				} else if (status === 'agree') {
+					// 审核同意
+					this.inputForm.status = '5'
+					this.inputForm.auditDate = this.moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+				}
+				this.$refs['inputForm'].validate((valid) => {
+					if (valid) {
+						this.loading = true
+						this.inputForm.workAttachmentDtoList = this.$refs.uploadComponent.getDataList()
+						if (this.commonJS.isEmpty(this.inputForm.auditPeople)) {
+							this.$message.error('请选择审核人')
+							this.loading = false
+							throw new Error('请选择审核人')
+						}
+						this.projectInfoService.saveFormThree(this.inputForm).then((data) => {
+							this.inputForm.assignee = this.inputForm.auditPeople
+							this.inputForm.id = data.businessId
+							let processTitle = ''
+							if (this.inputForm.auditLevel === '1'){
+								processTitle = `${this.$store.state.user.name} 发起了 ${this.inputForm.projectName} - ${this.inputForm.no} ` + `[嘉溢-一级校审]`
+							}else if (this.inputForm.auditLevel === '2'){
+								processTitle = `${this.$store.state.user.name} 发起了 ${this.inputForm.projectName} - ${this.inputForm.no} ` + `[嘉溢-二级校审]`
+							}else if (this.inputForm.auditLevel === '3'){
+								processTitle = `${this.$store.state.user.name} 发起了 ${this.inputForm.projectName} - ${this.inputForm.no} ` + `[嘉溢-三级校审]`
+							}
+							this.inputForm.title = processTitle
+							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 (await this.$refs.uploadComponent.checkProgress()) {
+					this.loading = false
+					throw new Error()
+				} else {
+					if (type === 'reject' || type === 'reback') {
+						this.projectInfoService.findByIdAudit(this.inputForm.id).then((data) => {
+							// if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+							// 	this.loading = false
+							// 	this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+							// 	throw new Error()
+							// } else {
+							// if (type === 'agree') {
+							//   // 同意
+							//   this.inputForm.status = '5'
+							// }
+							if (type === 'reject') {
+								// 驳回
+								this.inputForm.status = '4'
+								this.loading = true
+								this.inputForm.workAttachmentDtoList = this.$refs.uploadComponent.getDataList()
+								this.projectInfoService.saveFormThree(this.inputForm).then((data) => {
+									this.loading = false
+								}).catch(() => {
+									this.loading = false
+								})
+								// return
+							}
+							if (type === 'reback') {
+								// 撤回
+								this.inputForm.status = '3'
+							}
+							if (type === 'reject' || type === 'reback') {
+								let param = {status: this.inputForm.status, id: this.inputForm.id}
+								this.loading = true
+								this.projectInfoService.updateStatusByAuditId(param).then(() => {
+									this.loading = false
+									callback()
+								})
+							}
+							// }
+						})
+					} else if (type === 'hold') {
+						this.projectInfoService.findByIdAudit(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.id}
+							this.projectInfoService.updateStatusByAuditId(param).then(() => {
+								this.loading = false
+								callback()
+							})
+							// }
+						})
+					}
+				}
+			},
+
+		}
+	}
+</script>
+<style lang="scss">
+	.el-input-number .el-input__inner {
+		text-align: left;
+	}
+	.el-divider__text {
+		font-size: 16px;
+		font-weight: bold;
+	}
+
+</style>