2024-10-23 22:27:58 +08:00
|
|
|
|
<template>
|
|
|
|
|
<a-modal
|
|
|
|
|
title='预约详情'
|
|
|
|
|
style='top: 20px'
|
|
|
|
|
width='1200px'
|
|
|
|
|
v-model='visible'
|
|
|
|
|
:ok-button-props='{style:{display:"none"}}'
|
|
|
|
|
@ok='handleSubmit'
|
|
|
|
|
>
|
2024-10-24 22:31:53 +08:00
|
|
|
|
<a-alert v-if='order.status == 7' message="预约成功,待开始" type="success" show-icon style='margin-bottom: 10px' />
|
|
|
|
|
<a-alert v-if='order.status == 1' message="已取消" :description='order.operate[order.operate.length - 1].content' type="info" show-icon style='margin-bottom: 10px' />
|
|
|
|
|
<a-alert v-if='order.status == 3' message="已驳回" :description='order.operate[order.operate.length - 1].content' type="error" show-icon style='margin-bottom: 10px' />
|
|
|
|
|
<a-alert v-if='order.status == 4' message="占用" type="info" show-icon style='margin-bottom: 10px' />
|
|
|
|
|
<a-alert v-if='order.status == 5' message="待审核" type="info" show-icon style='margin-bottom: 10px' />
|
|
|
|
|
<a-alert v-if='order.status == 9' message="进行中" type="success" show-icon style='margin-bottom: 10px' />
|
|
|
|
|
<a-alert v-if='order.status == 11' message="已结束" type="warning" show-icon style='margin-bottom: 10px' />
|
2024-10-23 22:27:58 +08:00
|
|
|
|
<a-card title='会议室情况'>
|
|
|
|
|
<a-tabs default-active-key='1' @change='callback'>
|
|
|
|
|
<a-tab-pane key='1' tab='会议室详情'>
|
|
|
|
|
<a-carousel autoplay>
|
|
|
|
|
<div v-for='item in banner'>
|
|
|
|
|
<img :src='item' />
|
|
|
|
|
</div>
|
|
|
|
|
</a-carousel>
|
|
|
|
|
<a-descriptions title='' bordered>
|
|
|
|
|
<a-descriptions-item label='会议室名称'>
|
|
|
|
|
{{ roomDetail.name }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='会议室概况'>
|
|
|
|
|
{{ roomDetail.floor }} | {{ roomDetail.roomNum }} | {{ roomDetail.capacityNum }}人 |
|
|
|
|
|
{{ roomDetail.typeName }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='会议室设备'>
|
|
|
|
|
{{ roomDetail.device }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='会议室描述'>
|
|
|
|
|
{{ roomDetail.content }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
</a-descriptions>
|
|
|
|
|
</a-tab-pane>
|
|
|
|
|
<a-tab-pane key='2' tab='预约情况' force-render>
|
|
|
|
|
<a-table :columns='recordCol' :data-source='recordList'>
|
|
|
|
|
</a-table>
|
|
|
|
|
</a-tab-pane>
|
|
|
|
|
</a-tabs>
|
|
|
|
|
</a-card>
|
|
|
|
|
<a-card title='预约信息' style='margin-top: 10px'>
|
|
|
|
|
<a-descriptions title='' bordered>
|
|
|
|
|
<a-descriptions-item label='会议时间'>
|
|
|
|
|
{{ order.timeSlot }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='会议名称'>
|
|
|
|
|
{{ order.title }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='参会人数'>
|
|
|
|
|
{{ order.personNum }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='参会领导'>
|
|
|
|
|
{{ order.leader }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='预约部门'>
|
|
|
|
|
{{ order.userOrg }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='会议预约人'>
|
|
|
|
|
{{ order.bookingUserName }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='联系方式'>
|
|
|
|
|
{{ order.bookingUserPhone }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='备注' :span='2'>
|
|
|
|
|
{{ order.remark }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='会议服务' :span='3'>
|
|
|
|
|
{{ order.service }}
|
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
<a-descriptions-item label='会务人员' :span='3'>
|
2024-10-24 22:31:53 +08:00
|
|
|
|
音控组:{{ order.staff.music }}
|
|
|
|
|
<br />
|
|
|
|
|
会务服务组:{{ order.staff.serve }}
|
2024-10-23 22:27:58 +08:00
|
|
|
|
</a-descriptions-item>
|
|
|
|
|
</a-descriptions>
|
|
|
|
|
</a-card>
|
|
|
|
|
</a-modal>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
|
|
|
|
import {
|
|
|
|
|
meetingRoomDetail, getDep, saveMeetingReservation, getOrderInfo
|
|
|
|
|
} from '@/api/admin/meeting/meetingReservation'
|
|
|
|
|
import pick from 'lodash.pick'
|
|
|
|
|
import storage from 'store'
|
|
|
|
|
import moment from 'moment'
|
|
|
|
|
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
|
|
|
|
import { getMeetingDict } from '@/api/admin/meeting/roomContent'
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
name: 'RoomOrderDetailModal',
|
|
|
|
|
props: {},
|
|
|
|
|
components: {},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
visible: false,
|
|
|
|
|
labelCol: {
|
|
|
|
|
xs: { span: 24 },
|
|
|
|
|
sm: { span: 8 }
|
|
|
|
|
},
|
|
|
|
|
wrapperCol: {
|
|
|
|
|
xs: { span: 35 },
|
|
|
|
|
sm: { span: 16 }
|
|
|
|
|
},
|
|
|
|
|
id: '',
|
|
|
|
|
rId: '',
|
|
|
|
|
banner: '',
|
|
|
|
|
roomDetail: {},
|
|
|
|
|
recordList: [],
|
|
|
|
|
order: {},
|
|
|
|
|
recordCol: [{
|
|
|
|
|
title: '预约时间',
|
|
|
|
|
dataIndex: 'time'
|
|
|
|
|
}, {
|
|
|
|
|
title: '预约单位',
|
|
|
|
|
dataIndex: 'userOrg'
|
|
|
|
|
}, {
|
|
|
|
|
title: '预约人',
|
|
|
|
|
dataIndex: 'bookingUserName'
|
|
|
|
|
}, {
|
|
|
|
|
title: '联系方式',
|
|
|
|
|
dataIndex: 'bookingUserPhone'
|
|
|
|
|
}]
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
beforeCreate() {
|
|
|
|
|
},
|
|
|
|
|
created() {
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
// this.getDict()
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
show(id) {
|
|
|
|
|
this.rId = id
|
|
|
|
|
getOrderInfo({ id: this.rId }).then((res) => {
|
|
|
|
|
this.id = res.mr.roomId
|
2024-10-24 22:31:53 +08:00
|
|
|
|
// 获取会议室信息
|
2024-10-23 22:27:58 +08:00
|
|
|
|
this.getRoomInfo()
|
2024-10-24 22:31:53 +08:00
|
|
|
|
// 处理会议时间
|
2024-10-23 22:27:58 +08:00
|
|
|
|
let sTime = res.mr.start
|
|
|
|
|
let eTime = res.mr.end
|
|
|
|
|
res.mr.timeSlot = moment(sTime).format('YYYY-MM-DD HH:mm') + '~' + moment(eTime).format('HH:mm')
|
|
|
|
|
// 处理会议服务
|
|
|
|
|
let service = ''
|
|
|
|
|
for (let key in res.serve) {
|
|
|
|
|
service += '#' + res.serve[key]['name'] + ' '
|
|
|
|
|
}
|
|
|
|
|
res.mr.service = service
|
2024-10-24 22:31:53 +08:00
|
|
|
|
// 处理会务人员
|
|
|
|
|
let staff = {
|
|
|
|
|
music: '',
|
|
|
|
|
serve: ''
|
|
|
|
|
}
|
|
|
|
|
for (let key in res.waiters) {
|
|
|
|
|
if (res.waiters[key].type == '1') {
|
|
|
|
|
// 音控组
|
|
|
|
|
staff.music += '#' + res.waiters[key].username + ' '
|
|
|
|
|
}
|
|
|
|
|
if (res.waiters[key].type == '3') {
|
|
|
|
|
// 会务服务组
|
|
|
|
|
staff.serve += '#' + res.waiters[key].username + ' '
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (staff.music == '') {
|
|
|
|
|
staff.music = '无'
|
|
|
|
|
}
|
|
|
|
|
if (staff.serve == '') {
|
|
|
|
|
staff.serve = '无'
|
|
|
|
|
}
|
|
|
|
|
res.mr.staff = staff
|
2024-10-23 22:27:58 +08:00
|
|
|
|
this.order = res.mr
|
2024-10-24 22:31:53 +08:00
|
|
|
|
|
2024-10-23 22:27:58 +08:00
|
|
|
|
})
|
|
|
|
|
this.visible = true
|
|
|
|
|
},
|
|
|
|
|
getRoomInfo() {
|
|
|
|
|
meetingRoomDetail({
|
|
|
|
|
roomId: this.id
|
|
|
|
|
}).then(res => {
|
|
|
|
|
let detail = res.room // 详细信息
|
|
|
|
|
let recordList = res.mr // 预约信息
|
|
|
|
|
let bannerList = [] // 轮播图
|
|
|
|
|
if (detail.imgs) {
|
|
|
|
|
try {
|
|
|
|
|
bannerList = detail.imgs.map(item => process.env.VUE_APP_MODEL_BASE_URL + item.url)
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.log(`JSON error : ${error}`)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
let newRecordList = []
|
|
|
|
|
for (let key in recordList) {
|
|
|
|
|
let eachObj = recordList[key]
|
|
|
|
|
let sTime = eachObj['start']
|
|
|
|
|
let eTime = eachObj['end']
|
|
|
|
|
eachObj['date'] = moment(sTime).format('YYYY-MM-DD')
|
|
|
|
|
eachObj['time'] = moment(sTime).format('YYYY-MM-DD HH:mm') + '~' + moment(eTime).format('HH:mm')
|
|
|
|
|
newRecordList.push(eachObj)
|
|
|
|
|
}
|
|
|
|
|
this.recordList = newRecordList
|
|
|
|
|
this.roomDetail = detail
|
|
|
|
|
this.banner = bannerList
|
|
|
|
|
// this.getDict(detail.ext1)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
/* For demo */
|
|
|
|
|
.ant-carousel >>> .slick-dots {
|
|
|
|
|
height: auto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-carousel >>> .slick-slide img {
|
|
|
|
|
border: 5px solid #fff;
|
|
|
|
|
display: block;
|
|
|
|
|
margin: auto;
|
|
|
|
|
max-width: 300px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-carousel >>> .slick-thumb {
|
|
|
|
|
bottom: -45px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-carousel >>> .slick-thumb li {
|
|
|
|
|
width: 60px;
|
|
|
|
|
height: 45px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-carousel >>> .slick-thumb li img {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
filter: grayscale(100%);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-carousel >>> .slick-thumb li.slick-active img {
|
|
|
|
|
filter: grayscale(0%);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.self-item-cell {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.self-item-cell .self-item {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
align-items: center;
|
|
|
|
|
width: 50%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.self-item-cell .self-item:first-of-type {
|
|
|
|
|
margin-right: 10px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.self-item-cell .self-item .title {
|
|
|
|
|
margin-right: 10px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.self-item-cell .self-item .input {
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
</style>
|