浏览代码

通讯录,会议室预约

sangwenwei 1 年之前
父节点
当前提交
7a9ce9395e

+ 52 - 0
src/api/jy/MeetingRoomService.js

@@ -0,0 +1,52 @@
+import request from '@/utils/httpRequest'
+import { BUSINESS_PATH as prefix } from "../AppPath";
+
+export default class MeetingRoomService{
+	list (param) {
+		return request({
+			url: prefix + '/meetingRoom/list',
+			method: 'get',
+			params: param
+		})
+	}
+
+	queryById (id) {
+		return request({
+			url: prefix + '/meetingRoom/findById',
+			method: 'get',
+			params: {id: id}
+		})
+	}
+
+	saveForm (inputForm) {
+		return request({
+			url: prefix + "/meetingRoom/saveForm",
+			method: 'post',
+			data: inputForm
+		})
+	}
+
+	updateStatusById (params) {
+		return request({
+			url: prefix + '/meetingRoom/updateStatusById',
+			method: 'post',
+			params: params
+		})
+	}
+
+	checkTime(startTime){
+		return request({
+			url: prefix + '/meetingRoom/checkTime',
+			method: 'get',
+			params: {startTime:startTime}
+		})
+	}
+
+	delete (ids) {
+		return request({
+			url: prefix + '/meetingRoom/deleteById',
+			method: 'get',
+			params: {id: ids}
+		})
+	}
+}

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

@@ -206,6 +206,33 @@ export default class ProjectInfoService {
 		})
 	}
 
+	saveFormEia (inputForm) {
+		return request({
+			url: prefix + `/jyProject/saveFormEia`,
+			method: 'post',
+			data: inputForm
+		})
+	}
+
+	updateStatusByEiaId (data) {
+		return request({
+			url: prefix + '/jyProject/updateStatusByEiaId',
+			method: 'post',
+			data: data
+		})
+	}
+
+	/*
+	根据id查找归档信息
+	 */
+	findByIdEia(id){
+		return request({
+			url: prefix + '/jyProject/findByIdEia',
+			method: 'get',
+			params: {id:id}
+		})
+	}
+
 
 
 

+ 8 - 0
src/api/jy/SignetService.js

@@ -33,6 +33,14 @@ export default class SignetService {
 		})
 	}
 
+	delete (ids) {
+		return request({
+			url: prefix + '/useSeal/deleteById',
+			method: 'get',
+			params: {id: ids}
+		})
+	}
+
 
 
 

+ 8 - 0
src/api/jy/WorkContractService.js

@@ -44,4 +44,12 @@ export default class WorkContractService {
 			data: param
 		})
 	}
+
+	delete (ids) {
+		return request({
+			url: prefix + '/jy/workContract/workContractInfo/deleteById',
+			method: 'get',
+			params: {id: ids}
+		})
+	}
 }

+ 712 - 0
src/views/common/JyEiaUpLoadComponent.vue

@@ -0,0 +1,712 @@
+<!--文件上传组件-->
+<template>
+	<div>
+		<el-divider v-if="showDivider" content-position="left"><i class="el-icon-document"></i> {{dividerName}}</el-divider>
+		<el-upload ref="upload" style="display: inline-block; :show-header='status'" action=""
+				   :limit="999" :http-request="httpRequest"
+				   multiple
+				   :on-exceed="(files, fileList) =>{
+                      $message.warning(`当前限制选择 999 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
+                     }"
+				   :show-file-list="false"
+				   :on-change="changes"
+				   :on-progress="uploadVideoProcess"
+				   :file-list="fileList">
+			<template v-if="auth==='view'&&uploadFlag===false" #tip>
+				<el-button :loading="loading" type="primary" size="default" :disabled="true"> 点击上传 </el-button>
+			</template>
+			<template v-else #trigger>
+				<el-button :loading="loading" type="primary" size="default"> 点击上传 </el-button>
+			</template>
+		</el-upload>
+		<el-button v-if="showSign" :loading="loading" type="info" style="float: right;" @click="clickSign">签章</el-button>
+		<div style="height: calc(100% - 80px);margin-top: 10px">
+			<!-- 进度条 -->
+			<el-progress style="margin-left: 5em" v-if="progressFlag" :percentage="loadProgress"></el-progress>
+			<el-table
+				ref="uploadTable"
+				:key="tableKey"
+				v-loading="loading"
+				:data="dataListNew">
+				<el-table-column type="seq" width="40"></el-table-column>
+				<el-table-column label="文件名称" prop="name" align="center">
+					<template #default="scope">
+						<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]"
+							></el-image>
+						</div>
+						<div v-else>
+							<el-link  type="primary" :underline="false" @click="showFile(scope.row)">{{scope.row.name}}</el-link>
+						</div>
+					</template>
+				</el-table-column>
+				<el-table-column label="创建人" prop="createBy.name" align="center"></el-table-column>
+				<el-table-column label="创建时间" prop="createTime" align="center"></el-table-column>
+				<el-table-column label="文件大小" prop="size" align="center">
+					<template #default="scope">
+						{{getSize(scope.row.size)}}
+					</template>
+				</el-table-column>
+				<el-table-column label="文件类型" prop="jyFileType" align="center">
+					<template #header="{ column }">
+						<span style="color: red; font-size: 20px">*</span>
+						<span>{{column.label}}</span>
+					</template>
+					<!--          <template slot="header" scope="scope">-->
+					<!--            <span style="color:red;font-size: 20px">* </span><span>文件类型</span>-->
+					<!--          </template>-->
+					<template #default="scope">
+						<el-select v-if="auth !== 'view'" v-model="scope.row.jyFileType" placeholder="请选择">
+							<el-option
+								v-for="item in $dictUtils.getDictList('jy_project_eia_qualification')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+						<span v-else>{{$dictUtils.getDictLabel("jy_project_eia_qualification", scope.row.jyFileType, '')}}</span>
+					</template>
+				</el-table-column>
+				<el-table-column label="操作" width="200px" fixed="right" align="center">
+					<template  #default="scope">
+						<el-button text type="primary"  icon="el-icon-edit" @click="toHref(scope.row)" :disabled="false">下载</el-button>
+						<el-button text type="primary"  icon="el-icon-delete"  @click="deleteById(scope.row, scope.$index)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
+						<!--<el-button text type="primary" icon="el-icon-edit"
+								 @click="handleUpdate(scope.row, scope.$index)"
+						>{{ scope.row.btn || "修改" }}</el-button>-->
+					</template>
+				</el-table-column>
+			</el-table>
+		</div>
+		<!--    <el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="[url]" :zIndex=9999></el-image-viewer>-->
+
+	</div>
+</template>
+
+<script>
+	// eslint-disable-next-line no-unused-vars
+	import OSSSerivce, {
+		httpRequest,
+		// eslint-disable-next-line no-unused-vars
+		handleRemove,
+		fileName,
+		// 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 ElImageViewer from 'element-ui/packages/image/src/image-viewer'
+	import moment from 'moment'
+	export default {
+		data () {
+			return {
+				progressFlag: false,
+				loadProgress: 0,
+				fileList: [],
+				dataList: [],
+				dataListNew: [],
+				url: '',
+				showViewer: false,
+				ossService: null,
+				auth: '',
+				directory: 'public',
+				maxValue: 300,
+				tableKey: '',
+				fileLoading: true,
+				dividerName: '',
+				uploadFlag: false,
+				delFlag: false,
+				createBy: '',
+				showDivider: true,
+				jyFileType: '',
+				sealType: '',
+				remarks: '',
+				showSign: false,
+				loading: false,
+				dataListLength: ''
+			}
+		},
+		watch: {
+		},
+		created () {
+			this.ossService = new OSSSerivce()
+		},
+		components: {
+			// ElImageViewer,
+			fileTypeComponentA: {
+				render: function (h) {
+					return h('span', {
+						domProps: {
+							innerText: this.$dictUtils.getDictLabel('jy_project_eia_qualification', this.value, '')
+						}
+					})
+				},
+				props: ['options', 'value']
+			},
+			fileTypeComponentB: {
+				data () {
+					return { jyFileType: '' }
+				},
+				props: ['options', 'value'],
+				mounted () {
+					this.jyFileType = this.value
+				},
+				render: function (h) {
+					return h(
+						'el-select',
+						{
+							attrs: {
+								placeholder: '请选择',
+								value: this.$dictUtils.getDictLabel('jy_project_eia_qualification', this.jyFileType, ''),
+								size: 'small',
+								clearable: true
+							},
+							props: ['value'],
+							on: {
+								change: (value) => {
+									this.jyFileType = value
+									this.$emit('updateFileType', value)
+								}
+							}
+						},
+						[
+							this.options.map((item) => {
+								let { label, value } = item
+								return h('el-option', {
+									props: {
+										label,
+										value: parseInt(value),
+										key: value
+									}
+								})
+							})
+						]
+					)
+				}
+			},
+			sealTypeComponentA: {
+				render: function (h) {
+					return h('span', {
+						domProps: {
+							innerText: this.$dictUtils.getDictLabel('cw_seal_type', this.value, '')
+						}
+					})
+				},
+				props: ['options', 'value']
+			},
+			sealTypeComponentB: {
+				data () {
+					return { sealType: '' }
+				},
+				props: ['options', 'value', 'scope'],
+				mounted () {
+					this.sealType = this.value
+				},
+				render: function (h) {
+					return h(
+						'el-select',
+						{
+							attrs: {
+								placeholder: '请选择',
+								value: this.$dictUtils.getDictLabel('cw_seal_type', this.sealType, ''),
+								size: 'small',
+								clearable: true
+							},
+							props: ['value'],
+							on: {
+								change: (value) => {
+									let suffix = this.scope.row.name.substring(this.scope.row.name.lastIndexOf('.') + 1)
+									if (parseInt(value) === 1) {
+										if (suffix === 'pdf' || suffix === 'doc' || suffix === 'docx') {
+											this.sealType = value
+											this.$emit('updateSealType', value)
+										} else {
+											this.$message.error('只有“pdf、doc、docx”格式文件的盖章类型可以是“电子章”')
+											this.sealType = ''
+											this.$emit('updateSealType', '')
+										}
+									} else {
+										this.sealType = value
+										this.$emit('updateSealType', value)
+									}
+								}
+							}
+						},
+						[
+							this.options.map((item) => {
+								let { label, value } = item
+								return h('el-option', {
+									props: {
+										label,
+										value: parseInt(value),
+										key: value
+									}
+								})
+							})
+						]
+					)
+				}
+			},
+			remarksComponentA: {
+				render: function (h) {
+					return h('span', {
+						domProps: {
+							innerText: this.value
+						}
+					})
+				},
+				props: ['value']
+			},
+			remarksComponentB: {
+				data () {
+					return { remarks: '' }
+				},
+				props: ['value'],
+				mounted () {
+					this.remarks = this.value
+				},
+				render: function (h) {
+					return h(
+						'el-input',
+						{
+							attrs: {
+								placeholder: '请输入',
+								value: this.remarks,
+								size: 'small',
+								clearable: true
+							},
+							props: ['value'],
+							on: {
+								input: (value) => {
+									this.remarks = value
+									this.$emit('updateRemarks', value)
+								}
+							}
+						}
+					)
+				}
+			}
+		},
+		mounted () {
+			window.onPreview = this.onPreview
+		},
+		methods: {
+			/**
+			 * dividerName: 组件中divider的名称赋值
+			 * showDivider: ‘附件‘Divider是否展示
+			 *     注:值为空时,默认值为true
+			 *    showDivider=false时 ‘附件‘Divider隐藏
+			 **/
+			setDividerName (dividerName, showDivider) {
+
+				if (this.commonJS.isNotEmpty(dividerName)) {
+					this.dividerName = dividerName
+				}
+				if (this.commonJS.isNotEmpty(showDivider)) {
+					if (showDivider === false) {
+						this.showDivider = false
+					} else {
+						this.showDivider = true
+					}
+				} else {
+					this.showDivider = true
+				}
+			},
+			/**
+			 * 文件上传组件初始化
+			 * @param auth
+			 *    auth的值为"view"时,不可上传/编辑文件
+			 *    auth为其他值时,可上传/编辑文件
+			 * @param fileList  要显示到文件上传列表中的文件。
+			 *    注:文件必须要有url属性并且文件的url属性值必须是在oss中的路径值
+			 *    例:'/attachment-file/xxx/xxx/2022/9/08/xxx.jpg'
+			 * @param directory  要存放到oss的哪个文件夹下。
+			 *    注:值为空时,默认存放到"public"文件夹
+			 * @param maxValue  上传文件允许的最大值,单位:MB
+			 *    注:值为空时,默认值为300MB
+			 * @param dividerName  组件中divider的名称
+			 *    注:值为空时,默认值为‘附件’
+			 * @param uploadFlag  ‘上传文件’按钮是否禁用
+			 *    注:值为空时,默认值为false
+			 *    auth=view&&uploadFlag=false时 ‘上传文件’按钮禁用
+			 * @param delFlag  ‘删除’按钮是否禁用
+			 *    注:值为空时,默认值为false
+			 *    auth=view&&delFlag=false时 ‘删除’按钮禁用
+			 * @param showDivider  ‘附件‘Divider是否展示
+			 *    注:值为空时,默认值为true
+			 *    showDivider=false时 ‘附件‘Divider隐藏
+			 * @param showSign ‘签章’按钮 是否展示
+			 *    注:值为空时,默认值为false 不展示
+			 *    showSign=audit的时候 ‘签章’按钮展示
+			 */
+			async newUpload (auth, fileList, directory, maxValue, dividerName, uploadFlag, delFlag, showDivider, showSign) {
+					console.log('fileList',fileList)
+				if (this.commonJS.isEmpty(showSign)) {
+					this.showSign = false
+				} else {
+					if (showSign === 'audit') {
+						this.showSign = true
+					} else {
+						this.showSign = false
+					}
+				}
+				await this.fileLoadingFalse()
+				if (this.commonJS.isEmpty(fileList)) {
+					this.fileLoading = true
+				} else {
+					this.dataListLength = fileList.length
+				}
+				if (this.commonJS.isEmpty(dividerName)) {
+					this.dividerName = '附件'
+				} else {
+					this.dividerName = dividerName
+				}
+				console.log('dividerName',dividerName)
+				if (directory !== undefined && directory !== null && directory !== '' && directory !== {}) {
+					this.directory = directory
+				} else {
+					this.directory = 'public'
+				}
+				if (maxValue !== undefined && maxValue !== null && maxValue !== '' && maxValue !== 0) {
+					this.maxValue = maxValue
+				} else {
+					this.maxValue = 300
+				}
+				this.auth = auth
+				if (this.commonJS.isEmpty(uploadFlag)) {
+					this.uploadFlag = false
+				} else {
+					if (uploadFlag !== true && uploadFlag !== false) {
+						this.uploadFlag = false
+					} else {
+						this.uploadFlag = uploadFlag
+					}
+				}
+				if (this.commonJS.isEmpty(delFlag)) {
+					this.delFlag = false
+				} else {
+					if (delFlag !== true && delFlag !== false) {
+						this.delFlag = false
+						this.createBy = delFlag
+					} else {
+						this.delFlag = delFlag
+					}
+				}
+
+				for await (let item of fileList) {
+					if (item.url) {
+						await this.ossService.getFileSizeByUrl(item.url).then((data) => {
+							item.lsUrl = data.url
+							item.size = data.size
+							this.dataList.push(item)
+							this.dataListNew.push(item)
+							if (this.dataListNew.length === fileList.length) {
+								this.fileLoading = true
+							}
+						})
+					}
+				}
+				// this.dataList = JSON.parse(JSON.stringify(fileList))
+				// this.dataListNew = JSON.parse(JSON.stringify(fileList))
+				if (showDivider === null) {
+					console.log('showDivider',showDivider)
+					this.showDivider = true
+				} else {
+					if (showDivider === false) {
+						this.showDivider = false
+					} else {
+						this.showDivider = true
+					}
+				}
+			},
+			async httpRequest (file) {
+				await httpRequest(file, fileName(file), this.directory, this.maxValue)
+			},
+			uploadVideoProcess (event, file, fileList) {
+				this.progressFlag = true // 显示进度条
+				this.loadProgress = parseInt(event.percent) // 动态获取文件上传进度
+				if (this.loadProgress >= 100) {
+					this.loadProgress = 100
+					setTimeout(() => {
+						this.progressFlag = false
+					}, 1000) // 一秒后关闭进度条
+				}
+			},
+			getSize (value) {
+				if (this.commonJS.isEmpty(value)) {
+					return '0 B'
+				} else {
+					let val = parseInt(value)
+					if (this.commonJS.isEmpty(val)) {
+						return '0 B'
+					}
+					if (isNaN(val)) {
+						return '0 B'
+					}
+					if (val === 0) {
+						return '0 B'
+					}
+					let k = 1024
+					let sizes = ['B', 'KB', 'MB', 'GB', 'PB', 'TB', 'EB', 'ZB', 'YB']
+					let i = Math.floor(Math.log(val) / Math.log(k))
+					return (val / Math.pow(k, i)).toPrecision(3) + '' + sizes[i]
+				}
+			},
+			async changes (file, fileList) {
+				// if (file.status !== 'ready') {
+				//   return
+				// }
+				if (!beforeAvatarUpload(file, fileList, this.maxValue)) {
+					this.$message.error('文件大小不能超过 ' + this.maxValue + ' MB!')
+					return
+				}
+				this.dataListNew = []
+				this.dataList.forEach((item) => {
+					this.dataListNew.push(item)
+				})
+				for (let item of fileList) {
+					item.createTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+					item.createBy = {
+						id: '',
+						name: ''
+					}
+					item.createBy.id = this.$store.state.user.id
+					item.createBy.name = this.$store.state.user.name
+					this.dataListNew.push(item)
+				}
+				for await (let item of this.dataListNew) {
+					if (item.raw !== undefined && item.raw !== null && item.raw !== {}) {
+						item.url = item.raw.url
+						if (item.raw.url !== undefined && item.raw.url !== null && item.raw.url !== {}) {
+							await this.ossService.getTemporaryUrl(item.raw.url).then((data) => {
+								item.lsUrl = data
+							})
+						}
+					}
+				}
+				this.tableKey = Math.random()
+			},
+			showFile (row) {
+				openWindowOnUrl(row)
+			},
+			onPreview (url) {
+				this.url = url
+				this.showViewer = true
+			},
+			// 关闭查看器
+			closeViewer () {
+				this.url = ''
+				this.showViewer = false
+			},
+			toHref (row) {
+				toHref(row)
+			},
+			async deleteById (row, index) {
+				await this.dataListNew.splice(index, 1)
+				await this.dataList.splice(index, 1)
+				this.tableKey = Math.random()
+			},
+			/**
+			 * 关闭dialog时使用  清除el-upload中上传的文件
+			 */
+			clearUpload () {
+				this.$refs.upload.uploadFiles = []
+				this.dataList = []
+				this.dataListNew = []
+				this.createBy = ''
+			},
+			/**
+			 * 获取当前文件列表中的文件数据
+			 */
+			getDataList () {
+				let _this = this
+				const waitForEach = function () {
+					return new Promise(function (resolve, reject) {
+						_this.dataListNew.forEach((item, index) => {
+							if (item.btnType === 'save') {
+								_this.dataListNew[index].fileTypeComponent = 'fileTypeComponentA'
+								_this.dataListNew[index].sealTypeComponent = 'sealTypeComponentA'
+								_this.dataListNew[index].remarksComponent = 'remarksComponentA'
+								_this.dataListNew[index].btn = '修改'
+								_this.dataListNew[index].btnType = 'edit'
+								_this.dataListNew[index].fileType = _this.fileType
+								_this.dataListNew[index].sealType = _this.sealType
+								_this.dataListNew[index].remarks = _this.remarks
+								_this.dataListNew[index].jyFileType = _this.jyFileType
+							}
+						})
+						_this.tableKey = Math.random()
+						resolve(_this.dataListNew)
+					})
+				}
+				return waitForEach()
+			},
+			/**
+			 * 判断进度条是否结束,附件是否加载完成
+			 * @returns {boolean}
+			 */
+			checkProgress () {
+				if (this.progressFlag === true) {
+					this.$message.warning('请等待附件上传完成再进行操作')
+					return true
+				}
+				if (this.fileLoading === false) {
+					this.$message.warning('请等待附件加载完成再进行操作')
+					if (this.dataListLength === this.dataListNew.length) {
+						this.fileLoading = true
+					}
+					return true
+				}
+				return false
+			},
+			ifName (row) {
+				if (this.commonJS.isEmpty(row.name)) {
+					row.name = '---'
+					return false
+				}
+				let suffix = row.name.substring(row.name.lastIndexOf('.') + 1)
+				if (suffix === 'jpg' || suffix === 'png' || suffix === 'gif' || suffix === 'bmp' || suffix === 'jpeg') {
+					return true
+				} else {
+					return false
+				}
+			},
+			fileLoadingFalse () {
+				this.fileLoading = false
+			},
+			/** 修改||保存按钮操作 */
+			handleUpdate: async function (row, rowIndex) {
+				if (row.btnType === 'edit' || this.commonJS.isEmpty(row.btnType)) {
+					let _this = this
+					const waitForEach = function () {
+						return new Promise(function (resolve, reject) {
+							_this.dataListNew.forEach((item, index) => {
+								if (item.btnType === 'save') {
+									_this.dataListNew[index].fileTypeComponent = 'fileTypeComponentA'
+									_this.dataListNew[index].sealTypeComponent = 'sealTypeComponentA'
+									_this.dataListNew[index].remarksComponent = 'remarksComponentA'
+									_this.dataListNew[index].btn = '修改'
+									_this.dataListNew[index].btnType = 'edit'
+									_this.dataListNew[index].fileType = _this.fileType
+									_this.dataListNew[index].sealType = _this.sealType
+									_this.dataListNew[index].remarks = _this.remarks
+								}
+							})
+							resolve()
+						})
+					}
+					waitForEach().then(() => {
+						this.dataListNew[rowIndex].fileTypeComponent = 'fileTypeComponentB'
+						this.dataListNew[rowIndex].sealTypeComponent = 'sealTypeComponentB'
+						this.dataListNew[rowIndex].remarksComponent = 'remarksComponentB'
+						this.dataListNew[rowIndex].btn = '保存'
+						this.dataListNew[rowIndex].btnType = 'save'
+					})
+				} else {
+					this.dataListNew[rowIndex].fileTypeComponent = 'fileTypeComponentA'
+					this.dataListNew[rowIndex].sealTypeComponent = 'sealTypeComponentA'
+					this.dataListNew[rowIndex].remarksComponent = 'remarksComponentA'
+					this.dataListNew[rowIndex].btn = '修改'
+					this.dataListNew[rowIndex].btnType = 'edit'
+					this.dataListNew[rowIndex].fileType = this.fileType
+					this.dataListNew[rowIndex].sealType = this.sealType
+					this.dataListNew[rowIndex].remarks = this.remarks
+				}
+				this.tableKey = Math.random()
+			},
+			updateFileType (fileType) {
+				this.fileType = fileType
+			},
+			updateSealType (sealType) {
+				this.sealType = sealType
+			},
+			updateRemarks (remarks) {
+				this.remarks = remarks
+			},
+			tableRowClassName ({ row, rowIndex }) {
+				row.index = rowIndex
+			},
+			// 行点击事件
+			tableRowClick (row, column) {
+				if (this.auth !== 'view') {
+					if (column.label !== '备注' && column.label !== '文件名称' && column.label !== '操作') {
+						let _this = this
+						const waitForEach = function () {
+							return new Promise(function (resolve, reject) {
+								_this.dataListNew.forEach((item, index) => {
+									if (item.btnType === 'save') {
+										_this.dataListNew[index].fileTypeComponent = 'fileTypeComponentA'
+										_this.dataListNew[index].sealTypeComponent = 'sealTypeComponentA'
+										_this.dataListNew[index].remarksComponent = 'remarksComponentA'
+										_this.dataListNew[index].btn = '修改'
+										_this.dataListNew[index].btnType = 'edit'
+										_this.dataListNew[index].fileType = _this.fileType
+										_this.dataListNew[index].sealType = _this.sealType
+										_this.dataListNew[index].remarks = _this.remarks
+									}
+								})
+								resolve()
+							})
+						}
+						waitForEach().then(() => {
+							this.fileType = this.dataListNew[row.index].fileType
+							this.sealType = this.dataListNew[row.index].sealType
+							this.remarks = this.dataListNew[row.index].remarks
+							this.dataListNew[row.index].fileTypeComponent = 'fileTypeComponentB'
+							this.dataListNew[row.index].sealTypeComponent = 'sealTypeComponentB'
+							this.dataListNew[row.index].remarksComponent = 'remarksComponentB'
+							this.dataListNew[row.index].btn = '保存'
+							this.dataListNew[row.index].btnType = 'save'
+						})
+						this.tableKey = Math.random()
+					}
+				}
+			},
+			// 点击上传文件按钮的时候,把未保存的文件保存一下
+			clickHandel () {
+				this.dataListNew.forEach((item, index) => {
+					if (item.btnType === 'save') {
+						this.dataListNew[index].fileTypeComponent = 'fileTypeComponentA'
+						this.dataListNew[index].sealTypeComponent = 'sealTypeComponentA'
+						this.dataListNew[index].remarksComponent = 'remarksComponentA'
+						this.dataListNew[index].btn = '修改'
+						this.dataListNew[index].btnType = 'edit'
+						this.dataListNew[index].fileType = this.fileType
+						this.dataListNew[index].sealType = this.sealType
+						this.dataListNew[index].remarks = this.remarks
+					}
+				})
+			},
+			sealTypeChange (scope) {
+				let suffix = scope.row.name.substring(scope.row.name.lastIndexOf('.') + 1)
+				if (parseInt(scope.row.sealType) === 1) {
+					if (suffix !== 'pdf' && suffix !== 'doc' && suffix !== 'docx') {
+						this.$message.error('只有“pdf、doc、docx”格式文件的盖章类型可以是“电子章”')
+						scope.row.sealType = ''
+					}
+				}
+			},
+			// 点击签章按钮事件
+			clickSign () {
+				this.$emit('clickSign')
+			},
+			// 隐藏签章按钮
+			hideSign () {
+				this.showSign = false
+			},
+			// 开启/关闭页面的加载中状态
+			changeLoading (loading) {
+				if (this.commonJS.isNotEmpty(loading)) {
+					this.loading = loading
+				} else {
+					this.loading = false
+				}
+			}
+		}
+	}
+</script>

+ 5 - 5
src/views/cw/invoice/InvoiceFormTask.vue

@@ -50,11 +50,11 @@
 				<vxe-table-column   field="account" align="center"   title="发票金额(元)" :edit-render="{}">
 					<template v-slot:edit="scope">
 						<el-input
-							v-on:input="scope.row.account=scope.row.account.replace(/[^\d.]/g,'')
-							  .replace(/^\./g,'')
-							  .replace(/\.{2,}/g,'.')
-							  .replace('.','$#$').replace(/\./g,'').replace('$#$','.')
-							  .replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
+							v-on:input="scope.row.account=scope.row.account.replace(/[^-0-9.]/g,'')
+  .replace(/^\./g,'')
+  .replace(/\.{2,}/g,'.')
+  .replace('.','$#$').replace(/\./g,'').replace('$#$','.')
+  .replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
 							v-model="scope.row.account"
 							controls-position="right"
 							:controls="false"

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

@@ -703,6 +703,8 @@ export default {
 		// Process_1698644849993 嘉溢-项目外审
 		// Process_1698800678864 嘉溢-报批签发
 		// Process_1698909233438 嘉溢-项目归档
+		// Process_1699235944179 嘉溢-环评项目资质
+		// Process_1699428058248 嘉溢-会议室预约
 
 		// 驳回
 		reject(vars) {
@@ -750,7 +752,9 @@ export default {
 				this.procDefId.includes('Process_1697680423391') ||
 				this.procDefId.includes('Process_1698644849993') ||
 				this.procDefId.includes('Process_1698800678864') ||
-				this.procDefId.includes('Process_1698909233438')
+				this.procDefId.includes('Process_1698909233438') ||
+				this.procDefId.includes('Process_1699235944179') ||
+				this.procDefId.includes('Process_1699428058248')
 			) {
 				console.log('进入新版驳回')
 				this.$confirm(`确定驳回流程吗?`, '提示', {

+ 412 - 0
src/views/jy/daily/MeetingRoomForm.vue

@@ -0,0 +1,412 @@
+<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+	<div>
+		<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="status === 'audit' || status === 'taskFormDetail'"
+				 label-width="160px" @submit.native.prevent>
+			<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="title"
+								  :rules="[ ]">
+						<el-input v-model="inputForm.title" ></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="会议开始时间" prop="startTime"
+								  :rules="[
+								  {required: true, message:'会议开始时间不能为空', trigger:'blur'}]">
+						<el-date-picker
+							style="width: 100%"
+							placement="bottom-start"
+							v-model="inputForm.startTime"
+							type="datetime"
+							placeholder="选择日期时间"
+							format="YYYY-MM-DD HH:mm"
+							value-format="YYYY-MM-DD HH:mm"
+							date-format="YYYY-MM-DD"
+							time-format="HH:mm"
+							:disabled-date="disableDate"
+							:disabled-hours="disabledHour"
+							:disabled-minutes="disabledMinute"
+							:popper-options="{
+							   modifiers: [
+									{
+										name: 'flip',
+										options: {
+											fallbackPlacements: ['bottom'],
+											allowedAutoPlacements: ['bottom'],
+										}
+									}
+								]
+							}"
+							@blur="checkTime"
+						></el-date-picker>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="会议时长" prop="duration"
+								  :rules="[
+							 {required: true, message:'会议时长不能为空', trigger:'blur'}
+							]">
+						<el-select style="width:100%;" v-model="inputForm.duration" class="m-2" placeholder="请选择" size="large" clearable>
+							<el-option   label="30分钟" value="30"></el-option>
+							<el-option   label="1小时" value="1"></el-option>
+							<el-option   label="2小时" value="2"></el-option>
+							<el-option   label="3小时" value="3"></el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<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="24">
+					<el-form-item label="会议说明" prop="remarks"
+								  :rules="[ ]">
+						<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>
+	</div>
+</template>
+
+<script>
+	import XEUtils from 'xe-utils'
+	import MeetingRoom from '@/api/jy/MeetingRoomService'
+	import { ElDatePicker } from 'element-plus';
+	export default {
+		props: {
+			businessId: {
+				type: String,
+				default: ''
+			},
+			formReadOnly: {
+				type: Boolean,
+				default: false
+			},
+			status: {
+				type: String,
+				default: ''
+			}
+		},
+		data () {
+			return {
+				title: '',
+				method: '',
+				loading: false,
+				inputForm: {
+					id: '',
+					title: '',
+					startTime: '',
+					duration: '',
+					createById: this.$store.state.user.id,
+					createByName: this.$store.state.user.name,
+					createDate: '',
+					remarks: '',
+				},
+				baseKey: '',
+				keyWatch: '',
+			}
+		},
+		MeetingRoom:null,
+		created () {
+			console.log('jld ')
+			this.meetingRoomServie=new MeetingRoom()
+		},
+		mounted () {
+		},
+		activated () {
+		},
+		components: {
+			ElDatePicker
+		},
+		computed: {
+			bus: {
+				get () {
+					return this.businessId
+				},
+				set (val) {
+					this.businessId = val
+				}
+			}
+		},
+		watch: {
+			'keyWatch': {
+				handler (newVal) {
+					console.log('几里路')
+					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)
+				}
+			}
+		},
+		methods: {
+			getKeyWatch(keyWatch) {
+				this.keyWatch = keyWatch
+			},
+			init(method, id) {
+				this.method = method
+				this.inputForm={
+					id:'',
+					title:'',
+					startTime:'',
+					duration:'',
+					createById:'',
+					createByName:'',
+					createDate:'',
+					remarks:'',
+				}
+				this.inputForm.id = id
+				this.loading = false
+				this.$nextTick(() => {
+					this.$refs.inputForm.resetFields()
+					this.loading = true
+					if (this.commonJS.isNotEmpty(this.inputForm.id)) {
+						console.log('this.inputForm.id', this.inputForm.id)
+						this.meetingRoomServie.queryById(this.inputForm.id).then((data)=>{
+							console.log('s',data)
+							this.inputForm = this.recover(this.inputForm, data)
+							this.inputForm.createById=data.createById
+							this.inputForm.createByName=data.createName
+							this.inputForm.duration=String(data.duration)
+							if (this.commonJS.isEmpty(this.inputForm.createDate)) {
+								this.inputForm.createDate = this.moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+							}
+						})
+						this.loading = false
+					}
+				})
+			},
+			saveForm(callback) {
+				this.doSubmit('save', callback)
+			},
+			startForm(callback) {
+				this.loading = true
+				if (this.commonJS.isNotEmpty(this.inputForm.id)) {
+					this.meetingRoomServie.queryById(this.inputForm.id).then((data) => {
+						if (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) {
+				console.log('进入方法')
+				this.loading = true
+				await this.meetingRoomServie.queryById(this.inputForm.id).then((data) => {
+					if (data.status !== '2' ) { // status的值不等于“审核中”,就弹出提示
+						this.loading = false
+						this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						throw new Error()
+					} else {
+							this.inputForm.status= '5'
+						let param = {status: this.inputForm.status, id: this.inputForm.id}
+						this.inputForm=JSON.stringify(this.inputForm)
+						this.meetingRoomServie.updateStatusById(param).then(() => {
+							callback(data.businessTable, data.businessId, this.inputForm)
+							this.loading = false
+						}).catch(() => {
+							this.loading = false
+						})
+					}
+				})
+			},
+			reapplyForm(callback) {
+				this.loading = true
+				this.meetingRoomServie.queryById(this.inputForm.id).then((data) => {
+					if (data.status !== '4') { // 审核状态不是“驳回”,就弹出提示
+						this.loading = false
+						this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+						throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
+					} else {
+						this.doSubmit('reapply', callback)
+					}
+				})
+			},
+			// 表单提交
+			async doSubmit(status, callback) {
+				this.loading = true
+				console.log('5',this.inputForm)
+				if (status === 'save') {
+					// 暂存
+					this.loading = true
+					this.inputForm.status = '1'
+					this.meetingRoomServie.saveForm(this.inputForm).then((data) => {
+						callback(data.businessTable, data.businessId, this.inputForm)
+						this.loading = false
+					}).catch(() => {
+						this.loading = false
+					})
+					return
+				} else if (status === 'start') {
+					if (this.commonJS.isEmpty(this.inputForm.startTime)) {
+						this.$message.error('请选择会议开始时间')
+						this.loading = false
+					}
+					if (this.commonJS.isEmpty(this.inputForm.duration)) {
+						this.$message.error('请选择会议时长')
+						this.loading = false
+					}
+					// 送审  待审核
+					this.inputForm.status = '2'
+				} else if (status === 'agree') {
+					this.inputForm.status= '5'
+				} else if (status === 'reapply') {
+					this.inputForm.status = '2'
+				}
+				this.$refs['inputForm'].validate((valid) => {
+					if (valid) {
+						this.loading = true
+						this.meetingRoomServie.saveForm(this.inputForm).then((data) => {
+							callback(data.businessTable, data.businessId, this.inputForm)
+							this.$refs.inputForm.resetFields()
+							this.loading = false
+						}).catch(() => {
+							this.$refs.inputForm.resetFields()
+							this.loading = false
+						})
+					} else {
+						this.loading = false
+					}
+				})
+			},
+			close() {
+				this.inputForm = {
+					id:'',
+					projectList:[],
+					name:'',
+					no:'',
+					projectLeader:'',
+					projectCreateDate:'',
+					createById:'',
+					createByName:'',
+					createDate:'',
+					remarks:'',
+					files: [], // 附件信息
+					types:[], //用印类型
+					number:'', //用印份数
+					projectId:'',
+				}
+				this.visible = false
+			},
+			async updateStatusById(type, callback) {
+				this.loading = true
+					if (type === 'reject' || type === 'reback') {
+						this.meetingRoomServie.queryById(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'
+								}
+								if (type === 'reback') {
+									// 撤回
+									this.inputForm.status = '3'
+								}
+								if (type === 'reject' || type === 'reback') {
+									let param = {status: this.inputForm.status, id: this.inputForm.id}
+									this.meetingRoomServie.updateStatusById(param).then(() => {
+										this.loading = false
+										callback()
+									})
+								}
+							}
+						})
+					} else if (type === 'hold') {
+						this.meetingRoomServie.queryById(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.meetingRoomServie.updateStatusById(param).then(() => {
+									this.loading = false
+									callback()
+								})
+							}
+						})
+					}
+
+			},
+			//禁用日期
+			disableDate(time) {
+				//Date.now()是javascript中的内置函数,它返回自1970年1月1日00:00:00 UTC以来经过的毫秒数。
+				return time.getTime() < Date.now() - 8.64e7;
+			},
+			//禁用小时
+			disabledHour(){
+				const arrs = []
+				arrs.push(0,1,2,3,4,5,6,7,8,12,13,18,19,20,21,22,23)
+				return arrs;
+			},
+			//禁用分钟
+			disabledMinute(time){
+				const arrs = []
+				if (time ===17){
+					for (let i = 0; i <59 ; i++) {
+						arrs.push(i+1)
+					}
+				}
+				if (time === 11){
+					for (let i=0;i<59;i++){
+						arrs.push(i+31)
+					}
+				}
+				return arrs;
+			},
+			checkTime(){
+				if (this.inputForm.startTime !== ''){
+					this.meetingRoomServie.checkTime(this.inputForm.startTime).then((data)=>{
+						if (data === false){
+							this.$message.error('所有人都在忙,请选择其他时间')
+							this.loading = false
+						}
+					})
+				}
+
+			}
+
+		}
+
+	}
+</script>
+<style scoped>
+	/deep/ .el-input-number .el-input__inner {
+		text-align: left;
+	}
+	/deep/ .vxe-footer--row .vxe-footer--column:nth-child(1) .vxe-cell--item {
+		font-weight:700;
+	}
+</style>

+ 494 - 0
src/views/jy/daily/MeetingRoomList.vue

@@ -0,0 +1,494 @@
+<template>
+	<div class="page">
+		<el-form :inline="true"  v-if="searchVisible" class="query-form m-b-10" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
+			<!-- 搜索框-->
+			<el-form-item label="标题" prop="title">
+				<el-input v-model="searchForm.title" placeholder="请输入标题" clearable></el-input>
+			</el-form-item>
+			<el-form-item v-if="showHideItem" label="发起人" prop="createById">
+				<UserSelect :limit='1' :modelValue="searchForm.createById" @update:modelValue='(value, label) => {searchForm.createById = value}'></UserSelect>
+			</el-form-item>
+			<el-form-item v-if="showHideItem"  prop="officeId" label="发起人部门">
+				<SelectTree
+					ref="officeTree"
+					:props="{
+                  value: 'id',             // ID字段名
+                  label: 'name',         // 显示名称
+                  children: 'children'    // 子级字段名
+                }"
+
+					:url="`/system-server/sys/office/treeData?type=2`"
+					:value="searchForm.officeId"
+					size="default"
+					:accordion="true"
+					@getValue="(value) => {searchForm.officeId=value}"/>
+			</el-form-item>
+			<el-form-item v-if="showHideItem" label="会议开始时间" prop="meetingDates">
+				<el-date-picker
+					placement="bottom-start"
+					format="YYYY-MM-DD HH:mm"
+					value-format="YYYY-MM-DD HH:mm"
+					date-format="YYYY-MM-DD"
+					time-format="HH:mm"
+					v-model="searchForm.meetingDates"
+					type="datetimerange"
+					:disabled-date="disableDate"
+					:disabled-hours="disabledHour"
+					:disabled-minutes="disabledMinute"
+					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}" custom>
+				<template #buttons>
+					<el-button v-if="hasPermission('jy_meeting:info:add')" :disabled="isAdmin" type="primary" icon="el-icon-plus" @click="add()">新建</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
+					:menu-config="{}"
+					@sort-change="sortChangeHandle"
+					:sort-config="{remote:true}"
+					:data="dataList"
+					:checkbox-config="{}">
+					<vxe-column type="seq" width="60" title="序号"></vxe-column>
+					<vxe-column min-width="160" align="center" title="标题" field="title"></vxe-column>
+					<vxe-column min-width="160" align="center" title="会议开始时间" field="startTime"></vxe-column>
+					<vxe-column min-width="160" align="center" title="会议时长" field="duration">
+						<template #default="scope">
+							<span v-if="scope.row.duration === 30">{{scope.row.duration}}分钟</span>
+							<span v-else>{{scope.row.duration}}小时</span>
+						</template>
+					</vxe-column>
+					<vxe-column min-width="160" align="center" title="会议说明" field="remarks"></vxe-column>
+					<vxe-column min-width="160" align="center" title="会议发起人" field="createName"></vxe-column>
+					<vxe-column min-width="160" align="center" title="发起人部门" field="officeName"></vxe-column>
+					<vxe-column min-width="160" align="center" title="发起时间" field="createDate"></vxe-column>
+					<vxe-column  min-width="150px" align="center" title="状态" field="status" fixed="right">
+						<template #default="scope">
+							<el-button @click="detail(scope.row)" :type="$dictUtils.getDictLabel('program_project_list_info_status_info', scope.row.status, '')" effect="dark" >{{$dictUtils.getDictLabel("program_project_list_info_status", scope.row.status, '未登记')}} </el-button>
+						</template>
+					</vxe-column>
+					<vxe-column title="操作" width="150px" fixed="right" align="center">
+						<template  #default="scope">
+							<div v-if="isAdmin">
+								<el-button text type="primary" size="small" v-if="scope.row.status==='0' || scope.row.status==='5'" @click="del(scope.row.id)">删除</el-button>
+							</div>
+							<div v-else>
+								<el-button text type="primary" size="small" v-if="scope.row.status==='0' || scope.row.status==='1'|| scope.row.status==='3'" @click="del(scope.row.id)">删除</el-button>
+								<el-button v-if="scope.row.status === '1'|| scope.row.status === '3'" size="small" text type="primary"  @click="edit(scope.row)">修改</el-button>
+								<!--              当前申请人撤回-->
+								<el-button v-if="scope.row.createById === $store.state.user.id && scope.row.status==='2'" text type="primary" size="small" @click="reback(scope.row)">撤回</el-button>
+
+								<el-button v-if="scope.row.status==='2' && checkIsAudit(scope.row)" text type="primary" size="small" @click="examine(scope.row)">审核</el-button>
+								<el-button v-if="scope.row.status === '4'&&scope.row.createById === $store.state.user.id" text type="primary" size="small" @click="adjust(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>
+
+
+	</div>
+
+</template>
+
+<script>
+	import UserSelect from '@/components/userSelect'
+	import SelectTree from '@/components/treeSelect/treeSelect.vue'
+	import MeetingRoom from '@/api/jy/MeetingRoomService'
+	import taskService from '@/api/flowable/taskService'
+	import processService from '@/api/flowable/processService'
+	import userService from '@/api/sys/userService'
+	import pick from 'lodash.pick'
+	import SupplierChooseForm from '@/views/materialManagement/supplier/SupplierChooseForm'
+	export default {
+		data () {
+			return {
+				dialogTableVisible:false,
+				searchVisible: true,
+				showHideItem: false,
+				showHideIcon: 'el-icon-arrow-down',
+				showHideName: '展示',
+				num: 0,
+				searchForm: {
+					title: '',
+					createById: '',
+					officeId: '',
+					meetingDates: [],
+				},
+				dataList: [],
+				tablePage: {
+					total: 0,
+					currentPage: 1,
+					pageSize: 10,
+					orders: []
+				},
+				tableKey: '',
+				loading: false,
+				processDefinitionId: '',
+				procDefKey: '',
+				isAdmin: false,
+				create: '',
+				gridData:[],
+				typeData:[]
+			}
+		},
+		MeetingRoom:null,
+		created () {
+			this.meetingRoomServie=new MeetingRoom()
+		},
+		components: {
+			SelectTree,
+			UserSelect,
+			SupplierChooseForm,
+		},
+		computed: {
+			userName () {
+				return this.$store.state.user.name
+			},
+			user () {
+				this.createName = this.$store.state.user.name
+				return this.$store.state.user
+			}
+		},
+		mounted () {
+			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 () {
+				// 读取流程表单
+				let tabTitle = `发起流程【嘉溢-会议室预约】`
+				let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了 [嘉溢-会议室预约]`
+				taskService.getTaskDef({ procDefId: this.processDefinitionId,
+					status: 'startAndHold'}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskForm',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							procDefId: this.processDefinitionId,
+							procDefKey: this.procDefKey,
+							status: 'startAndHold',
+							title: tabTitle,
+							formType: data.formType,
+							formUrl: data.formUrl,
+							formTitle: processTitle,
+							businessId: 'false',
+							isShow: false,
+							routePath: '/jy/daily/MeetingRoomList'
+						}
+					})
+				})
+			},
+			// 修改
+			edit (row) {
+				let tabTitle = `发起流程【嘉溢-用印流程】`
+				let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了 [嘉溢-用印流程]`
+				taskService.getTaskDef({ procDefId: this.processDefinitionId,
+					businessId: row.id,
+					businessTable: 'jy_meeting_room',
+					status: 'startAndHold'}).then((data) => {
+					this.$router.push({
+						path: '/flowable/task/TaskForm',
+						query: {
+							...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+							procDefId: this.processDefinitionId,
+							procDefKey: this.procDefKey,
+							status: 'startAndHold',
+							title: tabTitle,
+							formType: data.formType,
+							formUrl: data.formUrl,
+							formTitle: processTitle,
+							businessId: row.id,
+							businessTable: 'jy_meeting_room',
+							isShow: false,
+							routePath: '/jy/daily/MeetingRoomList'
+						}
+					})
+				})
+			},
+			// 查看
+			view (row) {
+				this.dialogTableVisible=true
+				console.log('z',this.gridData)
+			},
+			// 查询当前用户是否是管理员用户
+			checkIsAdmin () {
+				userService.is().then((data) => {
+					this.isAdmin = data
+				})
+			},
+			// 获取数据列表
+			refreshList () {
+				this.loading = true
+				this.meetingRoomServie.list({
+					'current': this.tablePage.currentPage,
+					'size': this.tablePage.pageSize,
+					'orders': this.tablePage.orders,
+					...this.searchForm
+				}).then((data) => {
+					console.log('x',data.records)
+					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.processDefinitionId = data.id
+						this.procDefKey = 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) {
+				let ids = id || this.$refs.clientTable.getCheckboxRecords().map(item => {
+					return item.id
+				}).join(',')
+				this.$confirm(`确定删除所选项吗?`, '提示', {
+					confirmButtonText: '确定',
+					cancelButtonText: '取消',
+					type: 'warning'
+				}).then(() => {
+					this.loading = true
+					this.meetingRoomServie.delete(ids).then((data) => {
+						this.$message.success(data)
+						this.refreshList()
+						this.loading = false
+					})
+				})
+			},
+			resetSearch () {
+				this.$refs.searchForm.resetFields()
+				this.searchForm.supplierId = '' // 重置时清空供应商筛选
+				this.refreshList()
+			},
+
+			// 查看修改流程结果
+			detail (row) {
+				if (row.status !== '0' && row.status !== '1') {
+					this.meetingRoomServie.queryById(row.id).then((da)=>{
+						// eslint-disable-next-line eqeqeq
+						taskService.getTaskDef({
+							procInsId: row.procInsId,
+							procDefId: this.processDefinitionId
+						}).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',
+									method: 'view'
+								}
+							})
+						})
+					})
+				}
+			},
+			// 撤回入库修改
+			reback (row) {
+				this.$confirm(`确定要撤回该申请吗?`, '提示', {
+					confirmButtonText: '确定',
+					cancelButtonText: '取消',
+					type: 'warning'
+				}).then(() => {
+					this.meetingRoomServie.queryById(row.id).then((data) => {
+						if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+							this.$message.error('数据已发生改变或不存在,请刷新数据')
+							this.refreshList()
+						} else {
+							processService.revokeProcIns(row.procInsId).then((data) => {
+								let form = {status: '3', id: row.id}
+								this.meetingRoomServie.updateStatusById(form)
+								this.$message.success(data)
+								this.refreshList()
+							})
+						}
+					})
+				})
+			},
+			stopUpdate (id) {
+				this.meetingRoomServie.queryById(id).then((data) => {
+					if (data.status !== '3') { // status的值不等于“撤回”,就弹出提示
+						this.$message.error('数据已发生改变或不存在,请刷新数据')
+						this.refreshList()
+					} else {
+						this.$confirm(`确定要取消修改申请吗?`, '提示', {
+							confirmButtonText: '确定',
+							cancelButtonText: '取消',
+							type: 'warning'
+						}).then(() => {
+							this.wareHouseService.backSourceData(id).then((data) => {
+								if (data.result === 'success') {
+									this.$message.success('取消修改申请成功')
+								} else {
+									this.$message.error('取消修改申请失败')
+								}
+								this.refreshList()
+							}).catch(() => {
+								this.refreshList()
+							})
+						})
+					}
+				})
+			},
+			// 驳回后调整
+			adjust (row) {
+				this.meetingRoomServie.queryById(row.id).then((data) => {
+					if (data.status !== '4') { // status的值不等于“驳回”,就弹出提示
+						this.$message.error('数据已发生改变或不存在,请刷新数据')
+						this.refreshList()
+					} else {
+						this.todo(row)
+					}
+				})
+			},
+			// 审核
+			examine (row) {
+				this.meetingRoomServie.queryById(row.id).then((data) => {
+					if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+						this.$message.error('数据已发生改变或不存在,请刷新数据')
+						this.refreshList()
+					} else {
+						this.todo(row)
+					}
+				})
+			},
+			// 审核或重新调整跳转
+			todo (row) {
+				let cUser = false
+				taskService.getTaskDefInfo({
+					taskId: row.taskId
+				}).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: '/jy/daily/MeetingRoomList',   // 数据处理后需要跳转的页面路径
+						}
+					})
+				})
+			},
+			// 查询当前登录人是否是数据的审核人
+			checkIsAudit (row) {
+				let loginUserId = this.$store.state.user.id  // 获取当前登录用户id
+				if (this.commonJS.isNotEmpty(row.auditUserIds)) {
+					for (const userId of row.auditUserIds) {
+						if (userId === loginUserId) {  // 当数据的审核人中包含当前登录人id时,返回true
+							return true
+						}
+					}
+				}
+				return false
+			},
+			//禁用日期
+			disableDate(time) {
+				//Date.now()是javascript中的内置函数,它返回自1970年1月1日00:00:00 UTC以来经过的毫秒数。
+				return time.getTime() < Date.now() - 8.64e7;
+			},
+			//禁用小时
+			disabledHour(){
+				const arrs = []
+				arrs.push(0,1,2,3,4,5,6,7,8,12,13,18,19,20,21,22,23)
+				return arrs;
+			},
+			//禁用分钟
+			disabledMinute(time){
+				const arrs = []
+				if (time ===17){
+					for (let i = 0; i <59 ; i++) {
+						arrs.push(i+1)
+					}
+				}
+				if (time === 11){
+					for (let i=0;i<59;i++){
+						arrs.push(i+31)
+					}
+				}
+				return arrs;
+			},
+
+
+
+		}
+	}
+</script>

+ 523 - 0
src/views/jy/daily/UserList.vue

@@ -0,0 +1,523 @@
+<template>
+	<splitpanes class="default-theme">
+		<pane size="20">
+			<el-container class="jp-container">
+				<el-header class="m-p-13-15">
+					<el-input
+						placeholder="请输入关键字过滤"
+						clearable
+						v-model="filterText"
+					>
+					</el-input>
+				</el-header>
+				<el-main class="nopadding">
+					<el-tree
+						class="filter-tree"
+						:data="officeTreeData"
+						:props="{
+							value: 'id', // ID字段名
+							label: 'name', // 显示名称
+							children: 'children', // 子级字段名
+						}"
+						node-key="id"
+						default-expand-all
+						:filter-node-method="filterNode"
+						:expand-on-click-node="false"
+						highlight-current
+						@node-click="handleNodeClick"
+						ref="officeTree"
+					>
+						<template #default="{ node, data }">
+							<span class="custom-tree-node el-tree-node__label">
+								<span class="label">
+									<el-icon class="m-r-5">
+										<qiye
+											v-if="data.type === '1'"
+											:style="{
+												color:
+													$TOOL.data.get(
+														'IS_PRIMARY_TENANT'
+													) &&
+													data.tenantDTO &&
+													$utils.getTenantColorById(
+														data.tenantDTO.id
+													),
+											}"
+										></qiye>
+										<bumen
+											v-else
+											:style="{
+												color:
+													$TOOL.data.get(
+														'IS_PRIMARY_TENANT'
+													) &&
+													data.tenantDTO &&
+													$utils.getTenantColorById(
+														data.tenantDTO.id
+													),
+											}"
+										></bumen>
+									</el-icon>
+									{{ node.label }}
+								</span>
+							</span>
+						</template>
+					</el-tree>
+				</el-main>
+			</el-container>
+		</pane>
+		<pane size="80">
+			<el-container class="jp-container">
+				<el-header v-if="searchVisible">
+					<div class="left-panel">
+						<el-form
+							:inline="true"
+							class="query-form"
+							ref="searchForm"
+							:model="searchForm"
+							@keyup.enter="refreshList()"
+							@submit.prevent
+						>
+							<el-form-item prop="loginName" label="登录名:">
+								<el-input
+									v-model="searchForm.loginName"
+									placeholder="请输入登录名"
+									clearable
+								></el-input>
+							</el-form-item>
+							<el-form-item prop="name" label="姓名:">
+								<el-input
+									v-model="searchForm.name"
+									placeholder="请输入姓名"
+									clearable
+								></el-input>
+							</el-form-item>
+						</el-form>
+					</div>
+					<div class="right-panel">
+						<el-button
+							type="primary"
+							class="round"
+							@click="refreshList()"
+							icon="search"
+						>
+							查询</el-button
+						>
+						<el-button
+							type="default"
+							@click="resetSearch()"
+							icon="refresh-right"
+						>重置</el-button
+						>
+					</div>
+				</el-header>
+				<el-main class="nopadding page2">
+					<div class="jp-table">
+						<vxe-toolbar
+							ref="userToolbar"
+							:refresh="{ query: refreshList }"
+							import
+							export
+							print
+							resizable
+							custom
+						>
+							<template #tools>
+								<vxe-button
+									type="text"
+									:title="
+										searchVisible ? '收起检索' : '展开检索'
+									"
+									icon="vxe-icon-search"
+									class="tool-btn"
+									@click="searchVisible = !searchVisible"
+								></vxe-button>
+								<vxe-button
+									type="text"
+									title="下载导入模板"
+									v-if="hasPermission('sys:user:import')"
+									icon="vxe-icon-copy"
+									class="tool-btn m-l-0"
+									@click="downloadTpl()"
+								>
+								</vxe-button>
+							</template>
+						</vxe-toolbar>
+						<div class="jp-table-body">
+							<vxe-table
+								border="inner"
+								auto-resize
+								resizable
+								height="auto"
+								:loading="loading"
+								size="small"
+								ref="userTable"
+								show-header-overflow
+								show-overflow
+								highlight-hover-row
+								:print-config="{}"
+								:import-config="{
+									importMethod: importMethod,
+									types: ['csv', 'xls', 'xlsx'],
+									remote: true,
+								}"
+								:export-config="{
+									remote: true,
+									filename: `用户数据${moment(
+										new Date()
+									).format('YYYY-MM-DD')}`,
+									sheetName: '用户数据',
+									exportMethod: exportMethod,
+									types: ['xlsx'],
+									modes: ['current', 'selected', 'all'],
+								}"
+								@sort-change="sortChangeHandle"
+								:sort-config="{ remote: true }"
+								:data="dataList"
+							>
+								<vxe-table-column
+									v-if="$TOOL.data.get('IS_PRIMARY_TENANT')"
+									width="60"
+								>
+									<template #default="{ row }">
+										<el-avatar
+											:size="30"
+											:style="{
+												background:
+													row.tenantDTO &&
+													$utils.getTenantColorById(
+														row.tenantDTO.id
+													),
+											}"
+										>
+											{{ row.name.substring(0, 1) }}
+										</el-avatar>
+									</template>
+								</vxe-table-column>
+<!--								<vxe-column-->
+<!--									type="checkbox"-->
+<!--									width="40px"-->
+<!--								></vxe-column>-->
+								<vxe-column title="头像" field="photo">
+									<template #default="{ row }">
+										<img
+											:src="
+												row.photo === ''
+													? '/static/img/avatar.png'
+													: row.photo
+											"
+											style="height: 35px"
+										/>
+									</template>
+								</vxe-column>
+								<vxe-column
+									title="登录名"
+									field="loginName"
+									sortable
+								>
+									<template #default="{ row }">
+										<el-link
+											v-bind:class="{
+												'disabled-user':
+													row.loginFlag === '0',
+											}"
+											type="primary"
+											:underline="false"
+											v-if="
+												hasPermission('sys:user:edit')
+											"
+											@click="
+												edit(row.id, row.tenantDTO?.id)
+											"
+										>{{ row.loginName }}</el-link
+										>
+										<el-link
+											v-bind:class="{
+												'disabled-user':
+													row.loginFlag === '0',
+											}"
+											type="primary"
+											:underline="false"
+											v-else-if="
+												hasPermission('sys:user:view')
+											"
+											@click="
+												view(row.id, row.tenantDTO?.id)
+											"
+										>{{ row.loginName }}</el-link
+										>
+										<span
+											v-bind:class="{
+												'disabled-user':
+													row.loginFlag === '0',
+											}"
+											v-else
+										>{{ row.loginName }}</span
+										>
+									</template>
+								</vxe-column>
+
+								<vxe-column title="姓名" field="name" sortable>
+								</vxe-column>
+								<vxe-column title="手机号" field="mobile" sortable>
+								</vxe-column>
+								<vxe-column
+									title="部门"
+									sort-by="o.name"
+									field="officeDTO.name"
+									sortable
+								>
+									<template #default="{ row }">
+										{{
+										row.officeDTO && row.officeDTO.name
+										}}
+									</template>
+								</vxe-column>
+								<vxe-column
+									title="状态"
+									field="loginFlag"
+									sortable
+								>
+									<template #default="{ row }">
+										<el-tag
+											v-if="row.loginFlag === '1'"
+											type="success"
+										>正常</el-tag
+										>
+										<el-tag
+											v-else-if="row.loginFlag === '0'"
+											type="danger"
+										>禁用</el-tag
+										>
+									</template>
+								</vxe-column>
+							</vxe-table>
+							<vxe-pager
+								background
+								size="small"
+								: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>
+				</el-main>
+			</el-container>
+		</pane>
+	</splitpanes>
+</template>
+
+<script>
+	import { Splitpanes, Pane } from "splitpanes";
+	import "splitpanes/dist/splitpanes.css";
+	import { mapState } from "vuex";
+	import userService from "@/api/sys/userService";
+	import officeService from "@/api/sys/officeService";
+	export default {
+		data() {
+			return {
+				searchForm: {
+					loginName: "",
+					name: "",
+					companyDTO: {
+						id: "",
+					},
+					officeDTO: {
+						id: "",
+					},
+				},
+				searchVisible: true,
+				filterText: "",
+				dataList: [],
+				officeTreeData: [],
+				tablePage: {
+					total: 0,
+					currentPage: 1,
+					pageSize: 10,
+					orders: [{ column: "a.create_time", asc: false }],
+				},
+				loading: false,
+			};
+		},
+		components: { Splitpanes, Pane },
+		mounted() {
+			this.$nextTick(() => {
+				// 将表格和工具栏进行关联
+				const $table = this.$refs.userTable;
+				const $toolbar = this.$refs.userToolbar;
+				$table.connect($toolbar);
+			});
+			this.refreshTree();
+			this.refreshList();
+		},
+		watch: {
+			filterText(val) {
+				this.$refs.officeTree.filter(val);
+			},
+		},
+		computed: {
+			...mapState({
+				currentTenantId: (state) => state.user.tenantId,
+			}),
+		},
+		methods: {
+			filterNode(value, data) {
+				if (!value) return true;
+				return data.name.indexOf(value) !== -1;
+			},
+			// 获取数据列表
+			refreshList() {
+				this.loading = true;
+				userService
+					.userList({
+						current: this.tablePage.currentPage,
+						size: this.tablePage.pageSize,
+						orders: this.tablePage.orders,
+						...this.searchForm,
+					})
+					.then((data) => {
+						console.log('data',data)
+						this.dataList = data.records;
+						this.tablePage.total = data.total;
+						this.loading = false;
+					});
+			},
+			refreshTree() {
+				officeService.treeData().then((data) => {
+					this.officeTreeData = data;
+				});
+			},
+			// 当前页
+			currentChangeHandle({ currentPage, pageSize }) {
+				this.tablePage.currentPage = currentPage;
+				this.tablePage.pageSize = pageSize;
+				this.refreshList();
+			},
+			// 排序
+			sortChangeHandle(obj) {
+				this.tablePage.orders = [];
+
+				if (obj.order != null) {
+					this.tablePage.orders = [
+						{
+							column:
+								obj.column.sortBy ||
+								this.$utils.toLine(obj.property),
+							asc: obj.order === "asc",
+						},
+					];
+				} else {
+					this.tablePage.orders = [
+						{ column: "a.create_time", asc: false },
+					];
+				}
+				this.refreshList();
+			},
+
+			// 下载模板
+			downloadTpl() {
+				// this.$utils.downloadExcel('/sys/user/import/template')
+				userService
+					.exportTemplate()
+					.then((data) => {
+						// 将二进制流文件写入excel表,以下为重要步骤
+						this.$utils.downloadExcel(data, "用户导入模板");
+					})
+					.catch(function (err) {
+						if (err.response) {
+							console.log(err.response);
+						}
+					});
+			},
+			handleNodeClick(data) {
+				if (data.type === "1") {
+					this.searchForm.companyDTO.id = data.id;
+					this.searchForm.officeDTO.id = "";
+				} else {
+					this.searchForm.companyDTO.id = "";
+					this.searchForm.officeDTO.id = data.id;
+				}
+				this.refreshList();
+			},
+			// 自定义服务端导入
+			importMethod({ file }) {
+				// 处理表单
+				const formBody = new FormData();
+				formBody.append("file", file);
+				userService.importExcel(formBody).then((result) => {
+					this.$message.success({
+						dangerouslyUseHTMLString: true,
+						message: result,
+					});
+					this.refreshList();
+				});
+			},
+			// 自定义服务端导出
+			exportMethod({ options }) {
+				// 传给服务端的参数
+				const params = {
+					current: this.tablePage.currentPage,
+					size: this.tablePage.pageSize,
+					orders: this.tablePage.orders,
+					...this.searchForm,
+					filename: options.filename,
+					sheetName: options.sheetName,
+					isHeader: options.isHeader,
+					original: options.original,
+					mode: options.mode,
+					selectIds:
+						options.mode === "selected"
+							? options.data.map((item) => item.id)
+							: [],
+					exportFields: options.columns.map(
+						(column) => column.property && column.property.split(".")[0]
+					),
+				};
+				this.loading = true;
+				return userService
+					.exportExcel(params)
+					.then((data) => {
+						// 将二进制流文件写入excel表,以下为重要步骤
+						this.$utils.downloadExcel(data, options.filename);
+						this.loading = false;
+					})
+					.catch(function (err) {
+						if (err.response) {
+							console.log(err.response);
+						}
+					});
+			},
+			resetSearch() {
+				this.searchForm.companyDTO.id = "";
+				this.searchForm.officeDTO.id = "";
+				this.filterText = "";
+				this.$refs.officeTree.setCurrentKey(null);
+				this.$refs.searchForm.resetFields();
+				this.refreshList();
+			},
+		},
+	};
+</script>
+<style scoped>
+	.disabled-user {
+		text-decoration: line-through;
+		color: #999;
+	}
+</style>

+ 6 - 1
src/views/jy/project/OutInstanceForm.vue

@@ -271,7 +271,7 @@
 							method = 'view'
 						}
 						console.log('method2',method)
-						this.$refs.uploadComponent.newUpload(method, this.inputForm.fileList, 'jyProjectOut', null, null, null, null, false)
+						this.$refs.uploadComponent.newUpload(method, this.inputForm.fileList, 'jyProjectOut', null, '附件', null, null, null)
 						// this.$refs.archiveFile.newUpload('view', [], 'cwWorkContract', null, null, null, null, false)
 						this.loading = false
 					})
@@ -368,6 +368,11 @@
 										this.loading = false
 										throw new Error('第' + (index + 1) + '条附件信息没有填写文件类型')
 									}
+									if (list.length <2){
+										this.$message.error('报批稿或专家评审意见表未上传')
+										this.loading = false
+										throw new Error('报批稿或专家评审意见表未上传')
+									}
 								})
 							}else {
 								this.$message.error('请上传文件')

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

@@ -271,7 +271,7 @@
 							method = 'view'
 						}
 						console.log('method2',method)
-						this.$refs.uploadComponent.newUpload(method, this.inputForm.fileList, 'jyProjectArchive', null, null, null, null, false)
+						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
 					})
@@ -368,6 +368,11 @@
 										this.loading = false
 										throw new Error('第' + (index + 1) + '条附件信息没有填写文件类型')
 									}
+									if (list.length < 5){
+										this.$message.error('批复,报告的关键页或报告文本未上传')
+										this.loading = false
+										throw new Error('批复,报告的关键页或报告文本未上传')
+									}
 								})
 							}else {
 								this.$message.error('请上传文件')

+ 18 - 6
src/views/jy/project/ProjectDia.vue

@@ -210,9 +210,9 @@
 								  highlight-current-row
 								  :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
 							  >
-								  <vxe-table-column field="name" title="联系人" :edit-render="{}"  align="center">
+								  <vxe-table-column field="clientName" title="联系人" :edit-render="{}"  align="center">
 									  <template v-slot:edit="scope">
-										  <el-input :disabled="true" v-model="scope.row.name" ></el-input>
+										  <el-input :disabled="true" v-model="scope.row.clientName" ></el-input>
 									  </template>
 								  </vxe-table-column>
 								  <!--					<vxe-table-column  align="center" field="clientType" title="人员类型" :edit-render="{name: '$select', options: clientTypes}">-->
@@ -313,6 +313,9 @@
 			  <el-tab-pane label="归档" name="archive">
 				  <ProjectArchiveForm ref="projectArchiveForm" :formReadOnly="true"></ProjectArchiveForm>
 			  </el-tab-pane>
+			  <el-tab-pane label="环评资质" name="eia" >
+					  <ProjectEiaForm ref="projectEiaForm" :formReadOnly="true"></ProjectEiaForm>
+			  </el-tab-pane>
 		  </el-tabs>
 		  <template #footer>
 			<span class="dialog-footer">
@@ -342,6 +345,7 @@
 	import OutInstanceForm from './OutInstanceForm'
 	import ReportsInstanceForm from './ReportsInstanceForm'
 	import ProjectArchiveForm from './ProjectArchiveForm'
+	import ProjectEiaForm from './ProjectEiaForm'
   export default {
     props: {
       businessId: {
@@ -408,7 +412,8 @@
 		  sealId:'',
 		  outInstanceId:'',
 		  reportsSubmitId:'',
-		  archiveId:''
+		  archiveId:'',
+		  eiaId:''
       }
     },
 	  ProjectInfoService:null,
@@ -437,7 +442,8 @@
 		SignetAddForm,
 		OutInstanceForm,
 		ReportsInstanceForm,
-		ProjectArchiveForm
+		ProjectArchiveForm,
+		ProjectEiaForm
     },
     methods: {
 		getKeyWatch (keyWatch) {
@@ -543,7 +549,7 @@
 				this.inputForm.clientList.splice(rowIndex, 1)
 			}
 		},
-		init (method, id,auditId1, auditId2, auditId3,sealId,outInstanceId,reportsSubmitId,archiveId) {
+		init (method, id,auditId1, auditId2, auditId3,sealId,outInstanceId,reportsSubmitId,archiveId,eiaId) {
 			this.auditIdfirst = auditId1
 			this.auditIdsecond = auditId2
 			this.auditIdthird = auditId3
@@ -551,8 +557,9 @@
 			this.sealId=sealId
 			this.reportsSubmitId=reportsSubmitId
 			this.archiveId=archiveId
+			this.eiaId=eiaId
 			this.method = method
-			// console.log('method', method)
+			console.log('eiaId', eiaId)
 			this.inputForm = {
 				id: '', // 主键值(新增不传,修改必传)
 				no: '', // 编号(新增不传,修改必传)
@@ -907,6 +914,11 @@
 					this.$refs.projectArchiveForm.init('view', this.archiveId)
 				}
 			}
+			if (paneName === 'eia') {
+				if (this.commonJS.isNotEmpty(this.eiaId)) {
+					this.$refs.projectEiaForm.init('view', this.eiaId)
+				}
+			}
 		}
     }
   }

+ 582 - 0
src/views/jy/project/ProjectEiaForm.vue

@@ -0,0 +1,582 @@
+<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+	<div>
+		<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-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>
+			<el-row  :gutter="15">
+				<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>
+			<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>
+		<!--        附件-->
+		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
+
+
+	</div>
+</template>
+
+<script>
+	import ProjectInfoService from "@/api/jy/ProjectInfoService";
+	import UserSelectSignatory from '../workClientInfo/clientUserSelect'
+	import UpLoadComponent from '@/views/common/JyEiaUpLoadComponent'
+	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:''
+				},
+				keyWatch: '',
+				tabName:''
+
+			}
+		},
+		ProjectInfoService:null,
+		created () {
+			this.projectInfoService=new ProjectInfoService()
+		},
+		computed: {
+			bus: {
+				get () {
+					this.$refs.uploadComponent.setDividerName('附件')
+					return this.businessId
+
+				},
+				set (val) {
+					this.businessId = val
+				}
+			}
+		},
+		watch: {
+			'keyWatch': {
+				handler (newVal) {
+					console.log('dsad')
+					if (this.bus) {
+						console.log('dsad',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 (method, id,tabName) {
+				this.tabName = tabName
+				this.method = method
+				console.log('method', method)
+				this.inputForm = {
+					id: '',
+					contractName:'',
+					contractAmount:'',
+					primaryLinkman:'',
+					contractTypeFirst:'',
+					contractType:'',
+					projectName:'',
+					projectPlace:'',
+					buildPlace:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					fileList:[],
+					status:'',
+					projectId:'',
+					remarks:''
+				}
+				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.$refs.uploadComponent.clearUpload()
+					// this.$refs.archiveFile.clearUpload()
+					console.log('id',this.inputForm.id)
+					this.projectInfoService.findByIdEia(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
+						console.log('data', data)
+						if (this.status === 'taskFormDetail') {
+							method = 'view'
+						}
+						console.log('method2',method)
+						this.$refs.uploadComponent.newUpload(method, this.inputForm.fileList, 'jyProjectEia', null, '附件', null, null, null)
+						// this.$refs.archiveFile.newUpload('view', [], 'cwWorkContract', null, null, null, null, false)
+						this.loading = false
+					})
+				})
+			},
+			close () {
+				this.$refs.uploadComponent.clearUpload()
+				this.inputForm = {
+					id: '',
+					contractName:'',
+					contractAmount:'',
+					primarkLinkman:'',
+					contractTypeFirst:'',
+					contractType:'',
+					projectName:'',
+					projectPlace:'',
+					buildPlace:'',
+					projectLeader:'',
+					createByName:'',
+					createTime:'',
+					remarks:'',
+					fileList:[],
+					status:'',
+				}
+				this.$refs.inputForm.resetFields()
+				this.visible = false
+			},
+			reapplyForm (callback) {
+				this.loading = true
+				this.projectInfoService.findByIdEia(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.findByIdEia(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.findByIdEia(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'
+					if (this.$refs.uploadComponent.checkProgress()) {
+						this.loading = false
+						throw new Error()
+					}else {
+						this.$refs.uploadComponent.getDataList().then((list)=>{
+							if (this.commonJS.isNotEmpty(list)){
+								list.forEach((item, index) => {
+									if (this.commonJS.isEmpty(item.jyFileType)) {
+										this.$message.error('第' + (index + 1) + '条附件信息没有填写文件类型')
+										this.loading = false
+										throw new Error('第' + (index + 1) + '条附件信息没有填写文件类型')
+									}
+								})
+							}else {
+								this.$message.error('请上传文件')
+								this.loading = false
+								throw new Error('请上传文件')
+							}
+							this.inputForm.fileList = list
+							this.projectInfoService.saveFormEia(this.inputForm).then((data) => {
+								this.inputForm.assignee = this.inputForm.auditPeople
+								this.inputForm.id = data.businessId
+								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') {
+					// 审核同意
+					if (this.$store.state.user.office.name ==='办公室'){
+						this.inputForm.status = '5'
+					}else {
+						this.inputForm.status = '2'
+					}
+				}
+				this.$refs['inputForm'].validate((valid) => {
+					if (valid) {
+						this.loading = true
+						if (this.$refs.uploadComponent.checkProgress()) {
+							this.loading = false
+							throw new Error()
+						}else {
+							var count=0
+							var count1=0
+							var count2=0
+							this.$refs.uploadComponent.getDataList().then((list)=>{
+								if (this.commonJS.isNotEmpty(list)){
+									list.forEach((item, index) => {
+										if (this.commonJS.isEmpty(item.jyFileType)) {
+											this.$message.error('第' + (index + 1) + '条附件信息没有填写文件类型')
+											this.loading = false
+											throw new Error('第' + (index + 1) + '条附件信息没有填写文件类型')
+										} else if (this.$store.state.user.office.name === '办公室'){
+											if (item.jyFileType === '3'){
+												count2++
+											}
+											if (count2 === 0){
+												this.$message.error('请上传文件资质')
+												this.loading = false
+												throw new Error('请上传文件资质')
+											}
+										}
+										// if (list.length < 2){
+										// 	this.$message.error('承诺书或信息表未上传')
+										// 	this.loading = false
+										// 	throw new Error('承诺书或信息表未上传')
+										// }
+
+										if (item.jyFileType === '1'){
+											count++
+										}
+										if (item.jyFileType === '2'){
+											count1++
+										}
+										if (count === 0 || count1 === 0){
+											this.$message.error('承诺书或信息表未上传')
+											this.loading = false
+											throw new Error('承诺书或信息表未上传')
+										}
+									})
+								}else {
+									this.$message.error('请上传文件')
+									this.loading = false
+									throw new Error('请上传文件')
+								}
+
+								this.inputForm.fileList = list
+								this.projectInfoService.saveFormEia(this.inputForm).then((data) => {
+									this.inputForm.id = data.businessId
+									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.findByIdEia(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.saveFormEia(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.updateStatusByEiaId(param).then(() => {
+										this.loading = false
+										callback()
+									})
+								}
+							}
+						})
+					} else if (type === 'hold') {
+						this.projectInfoService.findByIdEia(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.updateStatusByEiaId(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.$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.downloadSecondAuditTpl(this.inputForm.id, this.inputForm.projectId).then((res) => {
+						// 将二进制流文件写入excel表,以下为重要步骤
+						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.downloadThirdlyAuditTpl(this.inputForm.id, this.inputForm.projectId).then((res) => {
+						// 将二进制流文件写入excel表,以下为重要步骤
+						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>

+ 10 - 10
src/views/jy/project/ProjectForm.vue

@@ -47,10 +47,10 @@
 						</el-form-item>
 					</el-col>
 					<el-col :span="12">
-						<el-form-item label="委托方" prop="clientName"
+						<el-form-item label="委托方" prop="primaryLinkman"
 									  :rules="[
                  ]">
-							<el-input :disabled="true" v-model="inputForm.clientName" placeholder="请填写委托方"></el-input>
+							<el-input :disabled="true" v-model="inputForm.primaryLinkman" placeholder="请填写委托方"></el-input>
 						</el-form-item>
 					</el-col>
 					<el-col :span="12">
@@ -334,7 +334,7 @@
 					contractId: '', // 合同id
 					contractName: '', // 合同名称
 					client: '', // 委托方
-					clientName: '', // 委托方名称
+					primaryLinkman: '', // 委托方名称
 					amount: '', // 合同金额
 					contractType: '', // 合同类别
 					name: '', // 项目名称
@@ -445,7 +445,7 @@
 					contractId: '', // 合同id
 					contractName: '', // 合同名称
 					client: '', // 委托方
-					clientName: '', // 委托方名称
+					primaryLinkman: '', // 委托方名称
 					amount: '', // 合同金额
 					contractType: '', // 合同类别
 					name: '', // 项目名称
@@ -485,7 +485,7 @@
 					// this.$refs.archiveFile.clearUpload()
 					if (this.commonJS.isNotEmpty(this.inputForm.id)) {
 						this.projectInfoService.findById(this.inputForm.id).then((data) => {
-							console.log(1231231)
+							console.log(data)
 							this.inputForm = this.recover(this.inputForm, data)
 							this.inputForm.members=data.projectMembers
 							this.inputForm.clientList=data.clientList
@@ -561,7 +561,7 @@
 				waitForEach().then(() => {
 					this.inputForm.contractId = row.id // 合同id
 					this.inputForm.contractName = row.name // 合同名称
-					this.inputForm.clientName = row.primaryLinkman // 委托方名称
+					this.inputForm.primaryLinkman = row.primaryLinkman // 委托方名称
 					this.inputForm.amount = row.contractAmount // 合同金额
 					this.inputForm.contractType = row.contractType // 合同类型(小类)
 					this.inputForm.contractTypeFirst = row.contractTypeFirst // 合同类型(大类)
@@ -611,9 +611,9 @@
 			},
 			//添加委托方联系人
 			getContact(row){
-				console.log('o',this.$store.state.user)
-				this.inputForm.clientList.push({name: row.linkmanList[0].name,id: row.linkmanList[0].id,linkPhone:row.linkmanList[0].linkPhone,linkMobile:row.linkmanList[0].linkMobile,position:row.linkmanList[0].position})
-				this.$refs.clientTable.insertAt({name: row.linkmanList[0].name,id: row.linkmanList[0].id,linkPhone:row.linkmanList[0].linkPhone,linkMobile:row.linkmanList[0].linkMobile,position:row.linkmanList[0].position})
+				console.log('o',row)
+				this.inputForm.clientList.push({clientName: row.clientName,id: row.client,linkPhone:row.linkPhone,linkMobile:row.linkMobile,position:row.position})
+				this.$refs.clientTable.insertAt({clientName: row.clientName,id: row.client,linkPhone:row.linkPhone,linkMobile:row.linkMobile,position:row.position})
 				this.clientTableKey = Math.random()
 			},
 			// 删除
@@ -863,7 +863,7 @@
 			getWorkClientChoose2 (list) {
 				console.log('list',list)
 				this.inputForm.clientList.push({id: list.linkId, clientName: list.clientName,linkPhone:list.phone,linkMobile:list.mobile,position:list.position})
-				this.$refs.clientTable.insertAt({ name: list.name,linkPhone:list.phone,linkMobile:list.mobile,position:list.position})
+				this.$refs.clientTable.insertAt({ clientName: list.name,linkPhone:list.phone,linkMobile:list.mobile,position:list.position})
 				this.clientTableKey = Math.random()
 
 				console.log('1231312',this.inputForm.clientList)

+ 161 - 3
src/views/jy/project/ProjectList.vue

@@ -201,6 +201,13 @@
 							<el-button  @click="issuedDetail(scope.row)" :type="$dictUtils.getDictLabel('program_project_list_info_status_info', scope.row.reportIssuance, '')" effect="dark" >{{$dictUtils.getDictLabel("program_project_list_info_status", scope.row.reportIssuance, '未登记')}} </el-button>
 						</template>
 					</vxe-column>
+					<vxe-column min-width="120" align="center" title="环评资质" field="eiaStatus">
+						<template #default="scope">
+							<!--							<el-link  type="primary" :underline="false" v-if="scope.row.contractStatus ==='1'" @click="viewContract(scope.row.contractId)">{{scope.row.contractName}}</el-link>-->
+							<el-button  type="primary" :underline="false" v-if="scope.row.contractTypeFirst === '2'" :type="$dictUtils.getDictLabel('program_project_list_info_status_info', scope.row.eiaStatus, '')" @click="eiaDetail(scope.row)">{{$dictUtils.getDictLabel("program_project_list_info_status", scope.row.eiaStatus, '未登记')}}</el-button>
+							<span v-else  style="color: red">无需登记</span>
+						</template>
+					</vxe-column>
 					<vxe-column min-width="120" align="center" title="项目归档" field="reviewStatus">
 						<template #default="scope">
 							<el-button @click="archiveDetail(scope.row)" :type="$dictUtils.getDictLabel('program_project_list_info_status_info', scope.row.reviewStatus, '')" effect="dark" >{{$dictUtils.getDictLabel("program_project_archive_list_info_status", scope.row.reviewStatus, '未登记')}} </el-button>
@@ -263,7 +270,7 @@
 							<el-button v-if="hasPermission('jy_project:info:edit')&&(scope.row.createBy === $store.state.user.id)&&scope.row.thirdInstanceStatus === '4'" text type="primary"   @click="adjustThird(scope.row)">驳回调整</el-button>
 
 <!--							&lt;!&ndash;外审发起&ndash;&gt;-->
-							<el-button v-if="hasPermission('jy_project:info:edit')&&(scope.row.createBy === $store.state.user.id) &&scope.row.reportIssuance === '5' && (scope.row.outInstance === null ||scope.row.outInstance === undefined ||scope.row.outInstance === '' ||scope.row.outInstance === '0' || scope.row.outInstance === '1' || scope.row.outInstance === '3')" text type="primary"  @click="issued(scope.row)">发起外审</el-button>
+							<el-button :disabled="scope.row.eiaStatus !== '5'" v-if="hasPermission('jy_project:info:edit')&&(scope.row.createBy === $store.state.user.id) &&scope.row.reportIssuance === '5' && (scope.row.outInstance === null ||scope.row.outInstance === undefined ||scope.row.outInstance === '' ||scope.row.outInstance === '0' || scope.row.outInstance === '1' || scope.row.outInstance === '3')" text type="primary"  @click="issued(scope.row)">发起外审</el-button>
 <!--							&lt;!&ndash;外审撤回&ndash;&gt;-->
 							<el-button v-if="hasPermission('jy_project:info:edit')&&(scope.row.createBy === $store.state.user.id) && scope.row.outInstance === '2'" text type="primary"  @click="issuedReback(scope.row)">外审撤回</el-button>
 <!--							&lt;!&ndash; 外审  审核&ndash;&gt;-->
@@ -276,7 +283,7 @@
 							<el-button v-if="hasPermission('jy_project:info:edit')&&(scope.row.createBy === $store.state.user.id) &&scope.row.outInstance === '5' && (scope.row.reportsSubmit === null ||scope.row.reportsSubmit === undefined ||scope.row.reportsSubmit === '' ||scope.row.reportsSubmit === '0')" text type="primary"  @click="reportsDoSubmit(scope.row)">报批签发</el-button>
 							<!--							&lt;!&ndash;报批签发撤回&ndash;&gt;-->
 							<el-button v-if="hasPermission('jy_project:info:edit')&&(scope.row.createBy === $store.state.user.id) && scope.row.reportsSubmit === '2'" text type="primary"  @click="reportsSubmitReback(scope.row)">报批签发撤回</el-button>
-							<el-button v-if="scope.row.reportsSubmit === '1'|| scope.row.reportsSubmit === '3'" size="small" text type="primary"  @click="edit(scope.row)">报批签发修改</el-button>
+							<el-button v-if="scope.row.reportsSubmit === '1'|| scope.row.reportsSubmit === '3'" text type="primary"  @click="edit(scope.row)">报批签发修改</el-button>
 							<!--							&lt;!&ndash; 报批签发  审核&ndash;&gt;-->
 							<el-button v-if="scope.row.reportsSubmit==='2' && checkIsAuditIssued(scope.row)" text type="primary"  @click="reportsSubmitCheck(scope.row)">报批签发审核</el-button>
 							<!--							&lt;!&ndash; 报批签发  被驳回后当前申请人重新调整&ndash;&gt;-->
@@ -294,6 +301,15 @@
 <!--							&lt;!&ndash; 项目归档  被驳回后当前申请人重新调整&ndash;&gt;-->
 							<el-button v-if="hasPermission('jy_project:info:edit')&&(scope.row.createBy === $store.state.user.id)&&scope.row.reviewStatus === '4'" text type="primary"  @click="adjustArchive(scope.row)">驳回调整</el-button>
 
+							<!--							&lt;!&ndash; 环评资质&ndash;&gt;-->
+							<el-button v-if="hasPermission('jy_project:info:edit')&&(scope.row.createBy === $store.state.user.id)&& scope.row.status === '5' && scope.row.contractTypeFirst === '2' && scope.row.outInstance ==='0'  &&(scope.row.eiaStatus === ''||scope.row.eiaStatus === undefined||scope.row.eiaStatus === null||scope.row.eiaStatus === '0'||scope.row.eiaStatus === '1'||scope.row.eiaStatus === '3')" text type="primary" @click="eiaPush(scope.row)">环评资质</el-button>
+							<!--							&lt;!&ndash; 项目归档撤回&ndash;&gt;-->
+							<el-button v-if="hasPermission('jy_project:info:edit')&&(scope.row.createBy === $store.state.user.id)&&scope.row.eiaStatus === '2'" text type="primary" @click="eiaReback(scope.row)">环评资质撤回</el-button>
+							<!--							&lt;!&ndash; 项目归档  审核&ndash;&gt;-->
+							<el-button v-if="scope.row.eiaStatus==='2' && checkIsAuditEia(scope.row)" text type="primary"  @click="examineEia(scope.row)">资质审核</el-button>
+							<!--							&lt;!&ndash; 项目归档  被驳回后当前申请人重新调整&ndash;&gt;-->
+							<el-button v-if="hasPermission('jy_project:info:edit')&&(scope.row.createBy === $store.state.user.id)&&scope.row.eiaStatus === '4'" text type="primary"  @click="adjustEia(scope.row)">资质驳回调整</el-button>
+
 							<!--一级校审ftl文件下载-->
 							<!--              <el-button v-if="hasPermission('program:registered:edit')" text type="primary"  icon="el-icon-circle-check"  @click="downloadFirstAuditTpl(scope.row)">一级校审下载</el-button>-->
 							<!--              <el-button v-if="hasPermission('program:registered:edit')" text type="primary"  icon="el-icon-circle-check"  @click="downloadSecondAuditTpl(scope.row)">二级校审下载</el-button>-->
@@ -389,6 +405,8 @@ export default {
 			procDefKeyReports:'',
 			processDefinitionIdArchive:'',
 			procDefKeyArchive:'',
+			processDefinitionIdEia:'',
+			procDefKeyEia:'',
 		}
 	},
 	ProjectInfoService:null,
@@ -449,7 +467,7 @@ export default {
 		},
 		// 查看
 		view (row) {
-			this.$refs.projectDia.init('view', row.id,row.auditId1, row.auditId2, row.auditId3,row.sealId,row.outInstanceId,row.reportsSubmitId,row.archiveId)
+			this.$refs.projectDia.init('view', row.id,row.auditId1, row.auditId2, row.auditId3,row.sealId,row.outInstanceId,row.reportsSubmitId,row.archiveId,row.eiaId)
 		},
 		// 获取数据列表
 		refreshList () {
@@ -519,6 +537,13 @@ export default {
 				}
 			})
 
+			processService.getByName('嘉溢-环评项目资质').then((data) => {
+				if (!this.commonJS.isEmpty(data.id)) {
+					this.processDefinitionIdEia = data.id
+					this.procDefKeyEia = data.key
+				}
+			})
+
 		},
 		// 当前页
 		currentChangeHandle ({ currentPage, pageSize }) {
@@ -1580,6 +1605,139 @@ export default {
 			})
 		},
 
+		//环评资质
+		eiaPush(row){
+			// 读取流程表单
+			let title = `发起流程【嘉溢-环评项目资质】`
+			let processTitle = `${this.userName} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了[嘉溢-环评项目资质]`
+			let status = 'startAndHold'
+			if (row.eiaStatus === '3') {
+				status = 'startAndClose'
+			} else if (row.eiaStatus === '4') {
+				status = 'reapplyFlag'
+			}
+			taskService.getTaskDef({ procDefId: this.processDefinitionIdEia,
+				businessId: row.eiaId,
+				businessTable: 'jy_project_eia_quelification'}).then((data) => {
+				this.$router.push({
+					path: '/flowable/task/TaskForm',
+					query: {
+						...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title'),
+						procDefId: this.processDefinitionIdEia,
+						procDefKey: this.procDefKeyEia,
+						title: title,
+						formType: data.formType,
+						formUrl: data.formUrl,
+						formTitle: processTitle,
+						businessTable: 'jy_project_eia_quelification',
+						businessId: row.eiaId,
+						isShow: 'false',
+						status: status,
+						routePath: '/jy/project/ProjectList'
+					}
+				})
+			})
+		},
+		// 查询当前登录人是否是数据的审核人  环评资质
+		checkIsAuditEia (row) {
+			let loginUserId = this.$store.state.user.id  // 获取当前登录用户id
+			if (this.commonJS.isNotEmpty(row.eiaId)) {
+				for (const userId of row.eiaId) {
+					if (userId === loginUserId) {  // 当数据的审核人中包含当前登录人id时,返回true
+						return true
+					}
+				}
+			}
+			return false
+		},
+		//查看环评资质审批流程结果
+		eiaDetail(row){
+			if (row.eiaStatus !== '0' && row.eiaStatus !== '1') {
+				// eslint-disable-next-line eqeqeq
+				taskService.getTaskDef({
+					procInsId: row.procInsIdEia,
+					procDefId: this.processDefinitionIdEia
+				}).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.eiaId,
+							status: 'reback'
+						}
+					})
+				})
+			}
+		},
+		//环评资质撤回
+		eiaReback(row){
+			this.$confirm(`确定要撤回该申请吗?`, '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning'
+			}).then(async () => {
+				await this.projectInfoService.findByIdEia(row.eiaId).then((data) => {
+					if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+						this.$message.error('数据已发生改变或不存在,请刷新数据')
+						this.refreshList()
+					} else {
+						processService.revokeProcIns(row.procInsIdEia).then((data) => {
+							let form = {status: '3', id: row.eiaId}
+							this.projectInfoService.updateStatusByEiaId(form)
+							this.$message.success(data)
+							this.refreshList()
+						})
+					}
+				})
+			})
+		},
+		//环评资质审核
+		examineEia(row){
+			this.projectInfoService.findByIdEia(row.eiaId).then((data) => {
+				if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
+					this.$message.error('数据已发生改变或不存在,请刷新数据')
+					this.refreshList()
+				} else {
+					this.todoEia(row)
+				}
+			})
+		},
+		// 审核或重新调整跳转  环评资质
+		todoEia (row) {
+			let cUser = false
+			taskService.getTaskDefInfo({
+				taskId: row.taskIdEia
+			}).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: '/jy/project/ProjectList'   // 数据处理后需要跳转的页面路径
+					}
+				})
+			})
+		},
+		//环评资质驳回后重新调整
+		adjustEia(row){
+			this.projectInfoService.findByIdEia(row.eiaId).then((data) => {
+				if (data.status !== '4') { // status的值不等于“驳回”,就弹出提示
+					this.$message.error('数据已发生改变或不存在,请刷新数据')
+					this.refreshList()
+				} else {
+					this.todoEia(row)
+				}
+			})
+		},
+
 	}
 }
 </script>

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

@@ -141,6 +141,8 @@
 							<el-button v-if="scope.row.filedType==='2' && checkIsAudit(scope.row)" text type="primary"   @click="examineFiled(scope.row)">审核</el-button>
 							<!--              合同归档  被驳回后当前申请人重新调整-->
 							<el-button v-if="hasPermission('jy_work_contract:info:edit')&&scope.row.createId === $store.state.user.id&&scope.row.filedType === '4'" text type="primary"   @click="adjustFiled(scope.row)">驳回调整</el-button>
+<!--							删除-->
+							<el-button v-if="hasPermission('jy_work_contract:info:del')&&(scope.row.filedType === '1' || scope.row.filedType === '3') &&scope.row.createId === $store.state.user.id" text type="primary"  @click="delete(scope.row.id)">删除</el-button>
 							</template>
 					</vxe-column>
 				</vxe-table>
@@ -647,7 +649,25 @@
 					}
 				}
 				return false
-			}
+			},
+			// 删除
+			delete (id) {
+				let ids = id || this.$refs.typeDictTable.getCheckboxRecords().map(item => {
+					return item.id
+				}).join(',')
+				this.$confirm(`确定删除所选项吗?`, '提示', {
+					confirmButtonText: '确定',
+					cancelButtonText: '取消',
+					type: 'warning'
+				}).then(() => {
+					this.loading = true
+					this.workContractService.delete(ids).then((data) => {
+						this.$message.success(data)
+						this.refreshList()
+						this.loading = false
+					})
+				})
+			},
 		}
 	}
 </script>

+ 67 - 46
src/views/jy/workContractInfo/WorkContractForm.vue

@@ -63,7 +63,7 @@
 			label: 'label', // 显示名称
 			children: 'children', // 子级字段名
 			multiple: true,
-			emitPath: false
+			emitPath: true
 		}"
 							/>
 
@@ -378,7 +378,8 @@
 					effectiveDate: '',
 					closingDate: '',
 					contractTypeFirst:'',
-					filedNo:''
+					filedNo:'',
+					status:''
 				},
 				activeName1: 'contractProper',
 				activeName:'contactParty',
@@ -884,42 +885,42 @@
 				})
 			},
 			//将合同类型进行绑定
-			handleChange(value){
-				if(value.length > 0 ){
-					// 处理禁用状态
-					this.$nextTick(() => {
-						var options = []
-						var optionKey = '';
-						this.typeData.forEach(option => {
-							if (value.find(array => array[0] === option.value)) {
-								option.disabled = false
-								optionKey = option.value
-							} else {
-								option.disabled = true
-							}
-							options.push(option)
-						})
-
-						this.typeData.forEach(option => {
-							if (option.value === optionKey) {
-								option.children.forEach(child => {
-									child.disabled = false
-								})
-							} else {
-								option.disabled = true
-							}
-							options.push(option)
-						})
-						// 重新进行赋值
-						this.options = options
-					})
-				} else {
-					this.typeData.forEach(option => {
-						option.disabled = false
-					})
-				}
-
-			},
+			// handleChange(value){
+			// 	if(value.length > 0 ){
+			// 		// 处理禁用状态
+			// 		this.$nextTick(() => {
+			// 			var options = []
+			// 			var optionKey = '';
+			// 			this.typeData.forEach(option => {
+			// 				if (value.find(array => array[0] === option.value)) {
+			// 					option.disabled = false
+			// 					optionKey = option.value
+			// 				} else {
+			// 					option.disabled = true
+			// 				}
+			// 				options.push(option)
+			// 			})
+			//
+			// 			this.typeData.forEach(option => {
+			// 				if (option.value === optionKey) {
+			// 					option.children.forEach(child => {
+			// 						child.disabled = false
+			// 					})
+			// 				} else {
+			// 					option.disabled = true
+			// 				}
+			// 				options.push(option)
+			// 			})
+			// 			// 重新进行赋值
+			// 			this.options = options
+			// 		})
+			// 	} else {
+			// 		this.typeData.forEach(option => {
+			// 			option.disabled = false
+			// 		})
+			// 	}
+			//
+			// },
 
 			/*修改或查询详情是合同类型展示处理*/
 			showType(typeList){
@@ -950,7 +951,7 @@
 
 			// 表单提交
 			// 暂存
-			doSubmit () {
+			saveForm () {
 				this.loading = true
 				if (this.commonJS.isEmpty(this.inputForm.cwWorkClientContactDTOList)) {
 					this.loading = false
@@ -972,7 +973,7 @@
 								this.loading = false
 								throw new Error('至少上传一个附件信息')
 							}
-							this.inputForm.fees = this.inputForm.contractFees.join(',')
+							// this.inputForm.fees = this.inputForm.contractFees.join(',')
 							this.contractService.save(this.inputForm).then((data) => {
 								this.$refs.inputForm.resetFields()
 								this.loading = false
@@ -1007,20 +1008,40 @@
 			},
 			// 送审
 			startFormTrue (callback) {
-				this.$refs['inputForm'].validate(async (valid) => {
+				// this.$refs['inputForm'].validate(async (valid) => {
+				// 	if (valid) {
+				// 		this.loading = true
+				// 		this.inputForm.workAttachmentList = this.$refs.uploadComponent.getDataList()
+				// 		this.inputForm.filedType = '2'
+				// 		console.log('in',this.inputForm)
+				// 		var dataList=[]
+				// 		dataList.push(this.inputForm.contractTypes)
+				// 		this.inputForm.contractTypes=dataList
+				// 		await this.contractService.save(this.inputForm).then((data) => {
+				// 			this.inputForm.id = data.businessId
+				// 			callback(data.businessTable, data.businessId, this.inputForm)
+				// 			this.$refs.inputForm.resetFields()
+				// 			this.loading = false
+				// 		}).catch(() => {
+				// 			this.$refs.inputForm.resetFields()
+				// 			this.loading = false
+				// 		})
+				// 	} else {
+				// 		this.loading = false
+				// 	}
+				// })
+				this.$refs['inputForm'].validate((valid) => {
 					if (valid) {
 						this.loading = true
+						console.log('this.inputForm', this.inputForm)
 						this.inputForm.workAttachmentList = this.$refs.uploadComponent.getDataList()
 						this.inputForm.filedType = '2'
-						console.log('in',this.inputForm)
-
-						await this.contractService.save(this.inputForm).then((data) => {
+						console.log('3',this.inputForm)
+						this.contractService.save(this.inputForm).then((data) => {
 							this.inputForm.id = data.businessId
 							callback(data.businessTable, data.businessId, this.inputForm)
-							this.$refs.inputForm.resetFields()
 							this.loading = false
 						}).catch(() => {
-							this.$refs.inputForm.resetFields()
 							this.loading = false
 						})
 					} else {

+ 4 - 4
src/views/materialManagement/userSeal/SignetList.vue

@@ -89,7 +89,7 @@
           <vxe-column min-width="160" align="center" title="申请人" field="createByName"></vxe-column>
           <vxe-column min-width="160" align="center" title="申请人部门" field="office"></vxe-column>
           <vxe-column min-width="160" align="center" title="申请时间" field="createDate"></vxe-column>
-			<vxe-column  min-width="150px" align="center" title="状态" field="status" >
+			<vxe-column  min-width="150px" align="center" title="状态" field="status" fixed="right">
 				<template #default="scope">
 					<el-button @click="detail(scope.row)" :type="$dictUtils.getDictLabel('program_project_list_info_status_info', scope.row.status, '')" effect="dark" >{{$dictUtils.getDictLabel("program_project_list_info_status", scope.row.status, '未登记')}} </el-button>
 				</template>
@@ -352,7 +352,7 @@ export default {
           type: 'warning'
         }).then(() => {
           this.loading = true
-          this.wareHouseService.remove(ids).then((data) => {
+          this.signetService.delete(ids).then((data) => {
             this.$message.success(data)
             this.refreshList()
             this.loading = false
@@ -407,7 +407,7 @@ export default {
                 let form = {status: '3', id: row.id}
                 this.signetService.updateStatusById(form)
                 this.$message.success(data)
-                this.refreshList()
+			    this.refreshList()
               })
             }
           })
@@ -509,7 +509,7 @@ export default {
 		},
 		//查看项目信息
 		openProject(row){
-			this.$refs.projectDia.init('view', row.id,row.auditId1, row.auditId2, row.auditId3,row.sealId,row.outInstanceId,row.reportsSubmitId,row.archiveId)
+			this.$refs.projectDia.init('view', row.id,row.auditId1, row.auditId2, row.auditId3,row.sealId,row.outInstanceId,row.reportsSubmitId,row.archiveId,row.eiaId)
 		}
     }
   }