فهرست منبع

Merge remote-tracking branch 'origin/master'

user5 10 ماه پیش
والد
کامیت
660f2cf2a0

+ 62 - 0
src/api/dailyOfficeWork/MeetingRoomService.js

@@ -0,0 +1,62 @@
+import request from '@/utils/httpRequest'
+import { PUBLIC_MODULES_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(startDate,meetNumber){
+		return request({
+			url: prefix + '/meetingRoom/checkTime',
+			method: 'get',
+			params: {startDate:startDate,meetNumber:meetNumber}
+		})
+	}
+
+	delete (ids) {
+		return request({
+			url: prefix + '/meetingRoom/deleteById',
+			method: 'get',
+			params: {id: ids}
+		})
+	}
+
+
+	exportFile(params) {
+		return request({
+			url: prefix + "/meetingRoom/export",
+			method: "get",
+			params: params,
+			responseType: "blob",
+		});
+	}
+}

+ 488 - 0
src/views/dailyOfficeWork/daily/MeetingForm.vue

@@ -0,0 +1,488 @@
+<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+	<div>
+		<el-dialog
+			:title="title"
+			:close-on-click-modal="false"
+			draggable
+			width="1300px"
+			@close="close"
+			@keyup.enter.native=""
+			v-model="visible">
+		<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="status === 'audit' || status === 'taskFormDetail'|| method === 'view'"
+				 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="[ {required: true, message:'标题不能为空', trigger:'blur'}]">
+						<el-input v-model="inputForm.title" class="m-2" placeholder="请输入会议标题" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="会议室编号" prop="meetNumber"
+								  :rules="[
+							 {required: true, message:'会议室编号不能为空', trigger:'change'}
+							]">
+						<el-select style="width:100%;" v-model="inputForm.meetNumber" @change="checkTime" class="m-2" placeholder="请选择" clearable>
+							<el-option
+								v-for="item in $dictUtils.getDictList('meet_number')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="会议开始时间" prop="startDate"
+								  :rules="[
+								  {required: true, message:'会议开始日期不能为空', trigger:'blur'}]">
+						<el-date-picker
+							style="width:50%;"
+							v-model="inputForm.startDate"
+							type="date"
+							value-format="YYYY-MM-DD"
+							placeholder="请选择日期"
+							:disabled-date="disableDate"
+							:size="default"
+							:clearable="true"
+							@change="checkTime"
+						/>
+						<el-select v-model="inputForm.startTime" placeholder="请选择时间" style="width:50%;" clearable>
+							<el-option
+								v-for="item in dateList"
+								:disabled="item.disabled"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="会议时长" prop="duration"
+								  :rules="[
+							 {required: true, message:'会议时长不能为空', trigger:'change'}
+							]">
+						<el-select style="width:100%;" v-model="inputForm.duration" class="m-2" placeholder="请选择" clearable>
+							<el-option
+								v-for="item in $dictUtils.getDictList('meet_time_long')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="会议发起人" prop="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>
+			<template #footer>
+			<span class="dialog-footer">
+			  <el-button  @click="close()" icon="el-icon-circle-close">关闭</el-button>
+			  <el-button  type="primary" v-if="method != 'view'" @click="doSubmit()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+			</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import XEUtils from 'xe-utils'
+	import MeetingRoom from '@/api/dailyOfficeWork/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,
+				visible: false,
+				inputForm: {
+					id: '',
+					title: '',
+					startTime: '',
+					startDate: '',
+					duration: '',
+					createById: this.$store.state.user.id,
+					createByName: this.$store.state.user.name,
+					createDate: '',
+					remarks: '',
+					meetNumber:'',
+				},
+				baseKey: '',
+				keyWatch: '',
+				dateList:[]
+			}
+		},
+		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) {
+					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:'',
+					startDate:'',
+					duration:'',
+					createById:'',
+					createByName:'',
+					createDate:'',
+					remarks:'',
+					meetNumber:'',
+				}
+				if (method === 'add') {
+					this.title = `新建会议室预约信息`
+				} else if (method === 'edit') {
+					this.inputForm.id = id
+					this.title = '修改会议室预约信息'
+				} else if (method === 'view') {
+					this.inputForm.id = id
+					this.title = '查看会议室预约信息'
+				}
+				this.loading = false
+				this.visible= true
+				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.isNotEmpty(this.inputForm.startDate)){
+								this.checkTime()
+							}
+							if (this.commonJS.isEmpty(this.inputForm.createDate)) {
+								this.inputForm.createDate = this.moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+							}
+							if(this.commonJS.isNotEmpty(data.startTime)){
+								this.inputForm.startTime = data.startTime
+							}
+						})
+						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.startDate)|| 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
+					}
+					if (this.commonJS.isEmpty(this.inputForm.title)) {
+						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
+						console.log('form',this.inputForm)
+						this.meetingRoomServie.saveForm(this.inputForm).then((data) => {
+							this.visible = false
+							this.$emit('refreshList')
+						}).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(){
+				this.dateList=this.$dictUtils.getDictList('meeting_date')
+				console.log('this.dateList',this.dateList)
+				this.inputForm.startTime=''
+				if (this.commonJS.isNotEmpty(this.inputForm.startDate) && this.commonJS.isNotEmpty(this.inputForm.meetNumber)){
+					this.meetingRoomServie.checkTime(this.inputForm.startDate,this.inputForm.meetNumber).then((data)=>{
+						console.log('data',data)
+						if (this.commonJS.isNotEmpty(data)){
+							var num = [];
+							for (var key in data) {
+								console.log(data[key])
+								let date1=data[key].replace(/:/g, '')
+
+								for (let i=0;i<this.dateList.length;i++){
+									let date2=this.dateList[i].value.replace(/:/g, "")
+									console.log('date2',date2)
+									if (date1===date2){
+										num.push(i)
+									}
+								}
+
+							}
+							console.log('num', num)
+							for (let i=0;i<num.length;i++){
+								console.log('num[i]', num[i])
+								this.dateList[num[i]].disabled = true
+							}
+
+						}
+					})
+
+				}
+
+
+			}
+
+		}
+
+	}
+</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>

+ 525 - 0
src/views/dailyOfficeWork/daily/MeetingRoomForm.vue

@@ -0,0 +1,525 @@
+<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="[ {required: true, message:'标题不能为空', trigger:'blur'}]">
+						<el-input v-model="inputForm.title" class="m-2" placeholder="请输入会议标题" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="会议室编号" prop="meetNumber"
+								  :rules="[
+							 {required: true, message:'会议室编号不能为空', trigger:'change'}
+							]">
+						<el-select style="width:100%;" v-model="inputForm.meetNumber" @change="checkTime" class="m-2" placeholder="请选择" clearable>
+							<el-option
+								v-for="item in $dictUtils.getDictList('meet_number')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="会议开始时间" prop="startDate"
+								  :rules="[
+								  {required: true, message:'会议开始日期不能为空', trigger:'blur'}]">
+						<el-date-picker
+							style="width:50%;"
+							v-model="inputForm.startDate"
+							type="date"
+							value-format="YYYY-MM-DD"
+							placeholder="请选择日期"
+							:disabled-date="disableDate"
+							:clearable="true"
+							@change="checkTime"
+						/>
+						<el-select v-model="inputForm.startTime" placeholder="请选择时间" style="width:50%;" clearable>
+							<el-option
+								v-for="item in dateList"
+								:disabled="item.disabled"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="会议时长" prop="duration"
+								  :rules="[
+							 {required: true, message:'会议时长不能为空', trigger:'change'}
+							]">
+						<el-select style="width:100%;" v-model="inputForm.duration" class="m-2" placeholder="请选择" clearable>
+							<el-option
+								v-for="item in $dictUtils.getDictList('meet_time_long')"
+								:key="item.value"
+								:label="item.label"
+								:value="item.value">
+							</el-option>
+
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="会议发起人" prop="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/dailyOfficeWork/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: '',
+					startDate: '',
+					duration: '',
+					createById: this.$store.state.user.id,
+					createByName: this.$store.state.user.name,
+					createDate: '',
+					remarks: '',
+					meetNumber:''
+				},
+				baseKey: '',
+				keyWatch: '',
+				dateList:[]
+			}
+		},
+		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) {
+					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:'',
+					startDate:'',
+					duration:'',
+					createById:'',
+					createByName:'',
+					createDate:'',
+					remarks:'',
+					meetNumber:''
+				}
+				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(data.duration)){
+								this.inputForm.duration=''
+							}
+							if(this.commonJS.isNotEmpty(this.inputForm.startDate)){
+								this.checkTime()
+							}
+							if (this.commonJS.isEmpty(this.inputForm.createDate)) {
+								this.inputForm.createDate = this.moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
+							}
+							if(this.commonJS.isNotEmpty(data.startTime)){
+								this.inputForm.startTime = data.startTime
+							}
+						})
+						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'
+					if (this.commonJS.isEmpty(this.inputForm.startTime)){
+						this.inputForm.startTime = null
+					}
+					if (this.commonJS.isEmpty(this.inputForm.startDate)){
+						this.inputForm.startDate = null
+					}
+					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.startDate)|| this.commonJS.isEmpty(this.inputForm.startTime)) {
+						this.loading = false
+						this.$message.error('请选择会议开始时间')
+						this.loading = false
+					}
+					if (this.commonJS.isEmpty(this.inputForm.duration)) {
+						this.loading = false
+						this.$message.error('请选择会议时长')
+						this.loading = false
+					}
+					if (this.commonJS.isEmpty(this.inputForm.title)) {
+						this.loading = false
+						this.$message.error('请输入会议标题')
+						this.loading = false
+					}
+					if (this.commonJS.isEmpty(this.inputForm.meetNumber)) {
+						this.loading = false
+						this.$message.error('请选择会议室编号')
+						this.loading = false
+					}
+					if (this.commonJS.isNotEmpty(this.inputForm.startTime)){
+						console.log('this.dateList',this.dateList)
+						for (let i = 0; i <this.dateList.length ; i++) {
+							if (this.dateList[i].disabled === true && this.dateList[i].value === this.inputForm.startTime){
+								this.loading = false
+								this.$message.error('会议室当前无空余,请选择其他时间')
+								throw new Error()
+							}
+						}
+					}
+					// 送审  待审核
+					this.inputForm.status = '2'
+				} else if (status === 'agree') {
+					this.inputForm.status= '5'
+				} else if (status === 'reapply') {
+					if (this.commonJS.isEmpty(this.inputForm.meetNumber)) {
+						this.loading = false
+						this.$message.error('请选择会议室编号')
+						this.loading = false
+					}
+					if (this.commonJS.isNotEmpty(this.inputForm.startDate)){
+						const now = this.moment(new Date()).format('YYYY-MM-DD'); // 获取当前时间
+						console.log('now',now)
+						if (new Date(now) > new Date(this.inputForm.startDate)){
+							this.loading = false
+							this.$message.error('请选择今天或之后的日期')
+							throw new Error()
+						}
+					}
+					if (this.commonJS.isNotEmpty(this.inputForm.startTime)){
+						console.log('this.dateList',this.dateList)
+						for (let i = 0; i <this.dateList.length ; i++) {
+							if (this.dateList[i].disabled === true && this.dateList[i].value === this.inputForm.startTime){
+								this.loading = false
+								this.$message.error('会议室当前无空余,请选择其他时间')
+								throw new Error()
+							}
+						}
+					}
+					this.inputForm.status = '2'
+				}
+				this.$refs['inputForm'].validate((valid) => {
+					if (valid) {
+						this.loading = true
+						console.log('form',this.inputForm)
+						this.meetingRoomServie.saveForm(this.inputForm).then((data) => {
+							let processTitle = `${this.$store.state.user.name} 在 ${this.moment(new Date()).format('YYYY-MM-DD HH:mm')} 发起了 [会议室预约流程]`
+							this.inputForm.title = processTitle
+							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) {
+				const now = new Date(); // 获取当前时间
+				const fivePM = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 17, 0, 0); // 设置下午五点的时间
+				// 判断当前时间是否在下午五点之前
+				if (now.getTime() < fivePM.getTime()){
+					//Date.now()是javascript中的内置函数,它返回自1970年1月1日00:00:00 UTC以来经过的毫秒数。
+					return time.getTime() < Date.now() - 8.64e7;
+				}else {
+					return time.getTime() < Date.now()
+				}
+
+
+			},
+			//禁用小时
+			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;
+			},
+			async checkTime(){
+				this.dateList=this.$dictUtils.getDictList('meeting_date')
+				console.log('this.dateList',this.dateList)
+				this.inputForm.startTime=''
+				if (this.commonJS.isNotEmpty(this.inputForm.startDate) && this.commonJS.isNotEmpty(this.inputForm.meetNumber)){
+					this.meetingRoomServie.checkTime(this.inputForm.startDate,this.inputForm.meetNumber).then((data)=>{
+						console.log('data',data)
+						if (this.commonJS.isNotEmpty(data)){
+							var num = [];
+							for (var key in data) {
+								console.log(data[key])
+								let date1=data[key].replace(/:/g, '')
+
+								for (let i=0;i<this.dateList.length;i++){
+									let date2=this.dateList[i].value.replace(/:/g, "")
+									console.log('date2',date2)
+									if (date1===date2){
+										num.push(i)
+									}
+								}
+
+							}
+							console.log('num', num)
+							for (let i=0;i<num.length;i++){
+								console.log('num[i]', num[i])
+								this.dateList[num[i]].disabled = true
+							}
+
+						}
+					})
+
+				}
+
+
+			}
+
+		}
+
+	}
+</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>

+ 551 - 0
src/views/dailyOfficeWork/daily/MeetingRoomList.vue

@@ -0,0 +1,551 @@
+<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  label="发起人" prop="createById">
+				<UserSelect :limit='1' :modelValue="searchForm.createById" @update:modelValue='(value, label) => {searchForm.createById = value}'></UserSelect>
+			</el-form-item>
+			<el-form-item   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
+					style="width:50%;"
+					v-model="searchForm.meetingDates"
+					type="daterange"
+					value-format="YYYY-MM-DD"
+					placeholder="请选择日期"
+				/>
+			</el-form-item>
+			<el-form-item v-if="showHideItem" label="会议室编号" prop="meetNumber">
+				<el-select v-model="searchForm.meetNumber" placeholder="请选择" style="width:100%;">
+					<el-option
+						v-for="item in $dictUtils.getDictList('meet_number')"
+						:key="item.value"
+						:label="item.label"
+						:value="item.value">
+					</el-option>
+				</el-select>
+			</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 ref="toolbarRef" :refresh="{query: refreshList}" export custom>
+				<template #buttons>
+					<el-button :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="roomTable"
+					show-header-overflow
+					show-overflow
+					highlight-hover-row
+					:menu-config="{}"
+					@sort-change="sortChangeHandle"
+					:export-config="{
+									remote: true,
+									filename: `会议室预约数据${moment(new Date()).format('YYYY-MM-DD')}`,
+									sheetName: `会议室预约数据${moment(new Date()).format('YYYY-MM-DD')}`,
+									exportMethod: exportMethod,
+									types: ['xls'],
+									modes: ['current', 'selected', 'all']
+								  }"
+					: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="meetNumber">
+						<template #default="scope">
+							<el-link type="primary" :underline="false"  @click="view(scope.row)">{{$dictUtils.getDictLabel("meet_number", scope.row.meetNumber, '未登记')}}</el-link>
+						</template>
+					</vxe-column>
+					<vxe-column min-width="160" align="center" title="标题" field="title"></vxe-column>
+					<vxe-column min-width="160" align="center" title="会议开始时间" field="startDateTime"></vxe-column>
+					<vxe-column min-width="160" align="center" title="会议结束时间" field="endDateTime"></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-if="scope.row.duration != 30 && scope.row.duration != 24">{{scope.row.duration}}小时</span>
+							<span v-else-if="scope.row.duration === 24">全天</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="isAdmin" @click="adminEdit(scope.row.id)">修改</el-button>
+								<el-button text type="primary" size="small" v-if="isAdmin" @click="del(scope.row.id)">删除</el-button>
+							</div>
+							<div v-else>
+								<el-button v-if=" (scope.row.status === '1'|| scope.row.status === '3') &&scope.row.createById === $store.state.user.id" size="small" text type="primary"  @click="edit(scope.row)">修改</el-button>
+								<el-button text type="primary" size="small" v-if="(scope.row.status==='0' || scope.row.status==='1'|| scope.row.status==='3') &&scope.row.createById === $store.state.user.id" @click="del(scope.row.id)">删除</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>
+
+			<MeetingForm ref="meetingForm" @refreshList="refreshList"></MeetingForm>
+	</div>
+
+</template>
+
+<script>
+	import UserSelect from '@/components/userSelect'
+	import SelectTree from '@/components/treeSelect/treeSelect.vue'
+	import MeetingRoom from '@/api/dailyOfficeWork/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'
+	import MeetingForm from './MeetingForm'
+	export default {
+		data () {
+			return {
+				dialogTableVisible:false,
+				searchVisible: true,
+				showHideItem: false,
+				showHideIcon: 'el-icon-arrow-down',
+				showHideName: '展示',
+				num: 0,
+				searchForm: {
+					title: '',
+					createById: '',
+					officeId: '',
+					meetingDates: [],
+					meetNumber:'',
+				},
+				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,
+			MeetingForm
+		},
+		computed: {
+			userName () {
+				return this.$store.state.user.name
+			},
+			user () {
+				this.createName = this.$store.state.user.name
+				return this.$store.state.user
+			}
+		},
+		mounted () {
+			this.$nextTick(() => {
+				// 将表格和工具栏进行关联
+				const $table = this.$refs.roomTable;
+				const $toolbar = this.$refs.toolbarRef;
+				$table.connect($toolbar);
+			});
+			this.refreshList()
+		},
+		activated () {
+			this.refreshList()
+		},
+		methods: {
+			showHide () {
+				if (this.showHideItem === false) {
+					this.showHideItem = true
+					this.showHideIcon = 'el-icon-arrow-up'
+					this.showHideName = '隐藏'
+				} else {
+					this.showHideItem = false
+					this.showHideIcon = 'el-icon-arrow-down'
+					this.showHideName = '展示'
+				}
+			},
+			// 新增
+			add () {
+				// 读取流程表单
+				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: '/dailyOfficeWork/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: '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: 'meeting_room',
+							isShow: false,
+							routePath: '/dailyOfficeWork/daily/MeetingRoomList'
+						}
+					})
+				})
+			},
+			// 查看
+			view (row) {
+				console.log('row',row)
+				this.$refs.meetingForm.init('view',row.id)
+			},
+			adminEdit(id){
+				this.$refs.meetingForm.init('edit',id)
+			},
+			// 查询当前用户是否是管理员用户
+			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: '/dailyOfficeWork/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;
+			},
+
+
+			// 自定义服务端导出
+			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.map(item => item.id) : [],
+					exportFields: options.columns.map(column => column.property)
+				}
+				return this.meetingRoomServie.exportFile(params).then((res) => {
+					// 将二进制流文件写入excel表,以下为重要步骤
+					this.$utils.downloadExcel(res, options.filename+ ".xls")
+				}).catch(function (err) {
+					if (err.response) {
+						console.log(err.response)
+					}
+				})
+			},
+
+
+
+		}
+	}
+</script>

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

@@ -827,6 +827,7 @@ export default {
 		// Process_1722404901733 中审-报销文件补充
 		// Process_1722412442950 项目-报销文件补充
 		// Process_1722416114655 咨询-报销文件补充
+		// Process_1723517404891 会议室预约
 		// 驳回
 		reject(vars) {
 			if (this.procDefId.includes('Process_1667978088459') ||
@@ -920,7 +921,8 @@ export default {
 				this.procDefId.includes('Process_1722389642543') ||
 				this.procDefId.includes('Process_1722404901733') ||
 				this.procDefId.includes('Process_1722412442950') ||
-				this.procDefId.includes('Process_1722416114655')
+				this.procDefId.includes('Process_1722416114655') ||
+				this.procDefId.includes('Process_1723517404891')
 			) {
 				console.log('进入新版驳回')
 				this.$confirm(`确定驳回流程吗?`, '提示', {