''
liukangdong
2024-07-04 5a85dcab83e969d6b21c599b512a15117e9b8651
h5/pages/staff/meetingDetail.vue
@@ -10,7 +10,7 @@
    <!--  -->
    <view class="empty"></view>
    <view class="module_list">
      <view class="item">
      <view class="item" v-if="detail.meetingContent">
        <view class="label">会议内容</view>
        <view class="value">
          <!-- <text>主要讨论智能会议室系统选型,请大家一定要按时来开会,时间宝贵。感谢大家!</text> -->
@@ -24,7 +24,7 @@
          />
        </view>
      </view>
      <view class="item">
      <view class="item" v-if="detail.userResponseList && detail.userResponseList.length > 0">
        <view class="label">参会人员</view>
        <view class="value">
          <view class="personnel">
@@ -33,13 +33,19 @@
              v-for="mem in detail.userResponseList"
              :key="mem.id"
            >
              <image :src="mem.avatar ? mem.avatar : require('@/static/meeting/common/default_user@2x.png')" class="avatar" mode=""></image>
              <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">
      <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">
@@ -54,13 +60,13 @@
          </template>
        </view>
      </view>
      <view class="item">
      <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"
        <view class="value" v-if="detail.bookingUser"
          >{{ detail.bookingUser.companyName || "" }}
          {{ detail.bookingUser.realname }}
          {{ detail.bookingUser.mobile }}</view
@@ -69,22 +75,72 @@
    </view>
    <view class="empty empty2"></view>
    <view class="main_footer" v-if="detail.meetingStatus == '1'">
      <view class="btn" @click="handleCancel(detail.id)">撤回</view>
      <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="handleSub('2')">结束</view>
      <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 } from '@/api'
import { meetingDetail, cancelById, closeMeetignById } from '@/api'
export default {
  data() {
    return {
      param: {},
      detail: {},
      cancelParam: {},
      isShowCancel: false,
      isShowClose: false,
      id: ''
    }
  },
@@ -99,30 +155,30 @@
        this.detail = res.data
      })
    },
    handleCancel(id) {
      uni.showModal({
        title: '提示',
        // confirmText: '确认',
        content: '确认撤回该会议吗',
        success: function (res) {
          if (res.confirm) {
            cancelById({ id }).then(res => {
              if (res.code === 200) {
                setTimeout(() => {
                  uni.showToast({
                    title: '撤回成功',
                    icon: 'success'
                  })
                })
                setTimeout(() => {
                  uni.navigateBack()
                })
              }
    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
@@ -189,10 +245,12 @@
          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 {
@@ -241,4 +299,31 @@
.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>