<template>
|
<view class="main_app">
|
<view class="head_app">
|
<view class="title">{{ detail.meetingName }}</view>
|
<view class="text"
|
>{{ detail.roomName }}|{{ detail.meetingDate }}
|
{{ detail.meetingTime }}</view
|
>
|
</view>
|
<!-- -->
|
<view class="empty"></view>
|
<view class="module_list">
|
<view class="item" v-if="detail.meetingContent">
|
<view class="label">会议内容</view>
|
<view class="value">
|
<!-- <text>主要讨论智能会议室系统选型,请大家一定要按时来开会,时间宝贵。感谢大家!</text> -->
|
<u-textarea
|
border="none"
|
v-model="detail.meetingContent"
|
disabled
|
:maxlength="300"
|
placeholder="请输入会议内容"
|
placeholder-class="placeholder9"
|
/>
|
</view>
|
</view>
|
<view class="item" v-if="detail.userResponseList && detail.userResponseList.length > 0">
|
<view class="label">参会人员</view>
|
<view class="value">
|
<view class="personnel">
|
<view
|
class="per_item"
|
v-for="mem in detail.userResponseList"
|
:key="mem.id"
|
>
|
<image
|
v-if="mem.avatar"
|
:src="mem.avatar"
|
class="avatar"
|
mode=""
|
></image>
|
<view v-else class="avatar">{{ mem.realname.slice(0, 1) }}</view>
|
<view class="name">{{ mem.realname }}</view>
|
</view>
|
</view>
|
</view>
|
</view>
|
<view class="item" v-if="detail.projectsResponseList && detail.projectsResponseList.length > 0">
|
<view class="label">服务项</view>
|
<view class="value">
|
<template v-for="(ser, serI) in detail.projectsResponseList">
|
<text :key="ser.id">{{ ser.name }}</text>
|
<text
|
:key="ser.id"
|
class="mr12 ml12"
|
v-if="serI != detail.projectsResponseList.length - 1"
|
>
|
|
|
</text>
|
</template>
|
</view>
|
</view>
|
<view class="item" v-if="detail.remark || detail.meetingRemark">
|
<view class="label">备注</view>
|
<view class="value">{{ detail.remark || detail.meetingRemark }}</view>
|
</view>
|
<view class="item">
|
<view class="label">预约人</view>
|
<view class="value" v-if="detail.bookingUser"
|
>{{ detail.bookingUser.companyName || "" }}
|
{{ detail.bookingUser.realname }}
|
{{ detail.bookingUser.mobile }}</view
|
>
|
</view>
|
</view>
|
<view class="empty empty2"></view>
|
<view class="main_footer" v-if="detail.meetingStatus == '1'">
|
<view class="btn" @click="openCancel">撤回</view>
|
<view class="btn agree" @click="handleEdit">修改</view>
|
</view>
|
<view class="main_footer" v-if="detail.meetingStatus == '2'">
|
<view class="btn agree" @click="openClose">结束</view>
|
</view>
|
<!-- 撤回 -->
|
<u-popup
|
catchtouchmove
|
:show="isShowCancel"
|
closeable
|
:round="12"
|
mode="bottom"
|
@close="isShowCancel = false"
|
>
|
<view class="cancel_modal">
|
<view class="title">撤销预约</view>
|
<view class="line">
|
<view class="label">撤回说明</view>
|
<textarea
|
class="textarea"
|
placeholder="请输入"
|
maxlength="300"
|
v-model="cancelParam.businessRemark"
|
/>
|
</view>
|
<view class="sub_btn" @click="handleCancel('0')">提交</view>
|
</view>
|
</u-popup>
|
<!-- 结束 -->
|
<u-popup
|
catchtouchmove
|
closeable
|
:show="isShowClose"
|
:round="12"
|
mode="bottom"
|
@close="isShowClose = false"
|
>
|
<view class="cancel_modal">
|
<view class="title">结束预约</view>
|
<view class="line">
|
<view class="label">结束说明</view>
|
<textarea
|
class="textarea"
|
placeholder="请输入"
|
maxlength="300"
|
v-model="cancelParam.businessRemark"
|
/>
|
</view>
|
<view class="sub_btn" @click="handleCancel('1')">提交</view>
|
</view>
|
</u-popup>
|
</view>
|
</template>
|
|
<script>
|
import { meetingDetail, cancelById, closeMeetignById } from '@/api'
|
export default {
|
data() {
|
return {
|
param: {},
|
detail: {},
|
|
cancelParam: {},
|
isShowCancel: false,
|
isShowClose: false,
|
id: ''
|
}
|
},
|
onLoad(option) {
|
this.id = option.id
|
this.getDetail()
|
},
|
methods: {
|
getDetail() {
|
const { id } = this
|
meetingDetail({ id }).then(res => {
|
this.detail = res.data
|
})
|
},
|
openCancel() {
|
this.isShowCancel = true
|
this.cancelParam = {}
|
},
|
openClose() {
|
this.isShowClose = true
|
this.cancelParam = {}
|
},
|
handleCancel(str) {
|
const { id } = this.detail
|
let fn = str == '0' ? cancelById : closeMeetignById
|
fn({ id, ...this.cancelParam }).then(res => {
|
if (res.code === 200) {
|
setTimeout(() => {
|
uni.showToast({
|
title: '提交成功',
|
icon: 'success'
|
})
|
})
|
setTimeout(() => {
|
uni.navigateBack()
|
})
|
}
|
})
|
},
|
handleEdit() {
|
const { id } = this
|
uni.navigateTo({
|
url: `/pages/staff/meetingSubOrder?id=${id}`
|
})
|
},
|
handleSub() {
|
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss">
|
page {
|
background-color: #f7f7f7;
|
}
|
.main_app {
|
padding: 0;
|
.head_app {
|
padding: 30rpx;
|
background-color: #fff;
|
.title {
|
font-weight: 600;
|
font-size: 36rpx;
|
color: #222222;
|
margin-bottom: 30rpx;
|
}
|
.text {
|
font-size: 28rpx;
|
color: #666666;
|
}
|
}
|
}
|
.module_list {
|
background-color: #fff;
|
padding: 0 30rpx;
|
.item {
|
padding: 30rpx 0;
|
border-bottom: 1rpx solid #e5e5e5;
|
|
.label {
|
font-size: 26rpx;
|
color: #666666;
|
margin-bottom: 20rpx;
|
}
|
|
.value {
|
font-size: 30rpx;
|
display: flex;
|
align-items: center;
|
::v-deep textarea {
|
padding: 0;
|
background-color: #fff !important;
|
}
|
.personnel {
|
display: flex;
|
width: 100%;
|
overflow-x: auto;
|
.per_item {
|
flex-shrink: 0;
|
display: flex;
|
flex-direction: column;
|
justify-content: center;
|
align-items: center;
|
justify-content: center;
|
margin-right: 24rpx;
|
.avatar {
|
width: 72rpx;
|
height: 72rpx;
|
margin: 0;
|
border-radius: 50%;
|
}
|
.name {
|
font-size: 26rpx;
|
color: #777777;
|
}
|
}
|
}
|
}
|
}
|
}
|
.main_footer {
|
padding-bottom: 64rpx;
|
display: flex;
|
justify-content: space-between;
|
position: fixed;
|
bottom: 0;
|
left: 0;
|
width: 100%;
|
background-color: #fff;
|
padding: 0 30rpx;
|
.btn {
|
flex: 1;
|
height: 88rpx;
|
line-height: 88rpx;
|
background: #ffffff;
|
border-radius: 44rpx;
|
border: 1rpx solid #999999;
|
font-size: 32rpx;
|
text-align: center;
|
margin: 16rpx 8rpx;
|
}
|
|
.agree {
|
background: $uni-color-primary;
|
color: #fff;
|
border: 1rpx solid $uni-color-primary;
|
}
|
}
|
.empty {
|
width: 750rpx;
|
height: 20rpx;
|
background-color: #f7f7f7;
|
margin: 0 -30rpx;
|
}
|
.empty2 {
|
height: 280rpx !important;
|
}
|
.cancel_modal {
|
height: 440rpx;
|
padding: 30rpx;
|
.title {
|
padding: 0 30rpx 50rpx;
|
text-align: center;
|
}
|
.line {
|
.label {
|
margin-bottom: 10rpx;
|
}
|
textarea {
|
height: 120rpx;
|
}
|
}
|
.sub_btn {
|
background-color: $uni-color-primary;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
color: #fff;
|
border-radius: 44rpx;
|
width: 690rpx;
|
height: 88rpx;
|
margin: 20rpx auto;
|
}
|
}
|
</style>
|