<template> 
 | 
  <view class="main_app"> 
 | 
    <view class="status_wrap"> 
 | 
      <view class="name">{{info.driverName}}的入园预约</view> 
 | 
      <view class="desc">{{info.carCodeFront}}</view> 
 | 
      <view class="status" v-if="info.status != 2 && info.status != 3">{{ statusMap[info.status] }}</view> 
 | 
            <image v-if="info.status == 2" class="icon" src="../../static/ic_passed@2x.png" mode=""></image> 
 | 
            <image v-if="info.status == 3" class="icon" src="../../static/ic_refused@2x.png" mode=""></image> 
 | 
    </view> 
 | 
    <!--  --> 
 | 
    <view class="emyty"></view> 
 | 
    <view class="module_list"> 
 | 
      <view class="item"> 
 | 
        <view class="label">入园原因</view> 
 | 
        <view class="value">{{info.inReason}}</view> 
 | 
      </view> 
 | 
      <view class="item"> 
 | 
        <view class="label">合同编号</view> 
 | 
        <view class="value">{{info.contractNum}}</view> 
 | 
      </view> 
 | 
            <view class="item"> 
 | 
              <view class="label">到场时间</view> 
 | 
              <view class="value" v-if="info.arriveDate">{{info.arriveDate.slice(0,16)}}</view> 
 | 
            </view> 
 | 
            <view class="item"> 
 | 
              <view class="label">准运证照片</view> 
 | 
              <view class="value"> 
 | 
                    <image 
 | 
                        v-if="info.transportImg" 
 | 
                      class="avatar_wrap" 
 | 
                      :src="info.prefixUrl + info.transportImg" 
 | 
                    ></image> 
 | 
                </view> 
 | 
            </view> 
 | 
            <view class="item"> 
 | 
              <view class="label">入库类型</view> 
 | 
              <view class="value">{{info.inType == 0 ? '整托盘' : '件烟'}}</view> 
 | 
            </view> 
 | 
            <view class="item"> 
 | 
              <view class="label">总运数量</view> 
 | 
              <view class="value">{{info.totalNum}}万支</view> 
 | 
            </view> 
 | 
      <view class="emyty"></view> 
 | 
      <view class="item"> 
 | 
        <view class="label">司机姓名</view> 
 | 
        <view class="value">{{info.driverName}} 
 | 
        </view> 
 | 
      </view> 
 | 
      <view class="item"> 
 | 
        <view class="label">手机号</view> 
 | 
        <view class="value">{{info.driverPhone}}</view> 
 | 
      </view> 
 | 
            <view class="item"> 
 | 
              <view class="label">车牌照</view> 
 | 
              <view class="value">前 {{info.carCodeFront}},后 {{info.carCodeBack}}</view> 
 | 
            </view> 
 | 
    </view> 
 | 
    <!-- 流程 --> 
 | 
    <view class="flow_wrap"> 
 | 
      <view class="flow_title">流程</view> 
 | 
      <view class="list" v-if="info.approveDateVO != null && info.approveDateVO.approveList != null"> 
 | 
        <view class="item" v-for="item,index in info.approveDateVO.approveList"> 
 | 
                <view v-if="index != info.approveDateVO.approveList.length - 1" class="separate"></view> 
 | 
          <view class="avatar_wrap"> 
 | 
            <image 
 | 
              class="img" 
 | 
              :src=" 
 | 
                item.faceImg 
 | 
                  ? item.faceImg 
 | 
                  : require('@/static/meeting/common/default_user@2x.png') 
 | 
              " 
 | 
            /> 
 | 
            <image 
 | 
                        v-if="item.status == 2" 
 | 
              class="status" 
 | 
              src="@/static/staff/liucheng_success@2x.png" 
 | 
              mode="widthFix" 
 | 
            /> 
 | 
                    <image 
 | 
                        v-if="item.status == 3" 
 | 
                      class="status" 
 | 
                      src="@/static/staff/liucheng_fail@2x.png" 
 | 
                      mode="widthFix" 
 | 
                    /> 
 | 
          </view> 
 | 
          <view class="content"> 
 | 
            <view class="head"> 
 | 
              <view class="event">{{ item.title }}</view> 
 | 
              <view class="time">{{item.createDate}}</view> 
 | 
            </view> 
 | 
            <view class="name_wrap"> 
 | 
              <text>{{item.memberName}}<text v-if="item.statusInfo" class="status">({{item.statusInfo}})</text></text> 
 | 
            </view> 
 | 
                    <view v-if="item.approveType == 1" class="carbon"> 
 | 
                      <view class="carbon_item" v-for="child in item.approveList" 
 | 
                :key="child.id"> 
 | 
                        <image :src=" 
 | 
                    child.faceImg 
 | 
                      ? child.faceImg 
 | 
                      : require('@/static/meeting/common/default_user@2x.png') 
 | 
                  "></image> 
 | 
                        <view class="text">{{ child.memberName }}</view> 
 | 
                      </view> 
 | 
                    </view> 
 | 
          </view> 
 | 
        </view> 
 | 
      </view> 
 | 
    </view> 
 | 
    <view class="emyty"></view> 
 | 
    <view class="main_footer"> 
 | 
      <view v-if="info.status == 0 || info.status == 1" class="btn" @click="handleCancel">撤回申请</view> 
 | 
       <view v-if="info.status == 0 || info.status == 1" class="btn agree" @click="handleEdit">修改</view> 
 | 
       <view v-if="info.status == 3" class="btn agree aga" @click="handleAga">再次申请</view> 
 | 
    </view> 
 | 
  </view> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
    import { driverApplyDetail, driverCarRevoke } from '@/api' 
 | 
export default { 
 | 
  data() { 
 | 
    return { 
 | 
      showApprModal: false, 
 | 
      info: {}, 
 | 
            statusMap: { 
 | 
                0: '待审批', 
 | 
                1: '审批中', 
 | 
                2: '已通过', 
 | 
                3: '已拒绝', 
 | 
                4: '已取消', 
 | 
            }, 
 | 
    } 
 | 
  }, 
 | 
    onLoad(option) { 
 | 
        this.getDetail(option.id) 
 | 
    }, 
 | 
  methods: { 
 | 
        handleCancel(){ 
 | 
            const { info } = this 
 | 
            uni.showModal({ 
 | 
                title: '提示', 
 | 
                content: '您确认要撤回当前申请吗?', 
 | 
                success: function (res) { 
 | 
                    if (res.confirm) { 
 | 
                        driverCarRevoke({ 
 | 
                            id: info.id, info: '' 
 | 
                        }) 
 | 
                    } else if (res.cancel) { 
 | 
                        console.log('用户点击取消'); 
 | 
                    } 
 | 
                } 
 | 
            }); 
 | 
        }, 
 | 
        handleEdit(){ 
 | 
            uni.navigateTo({ 
 | 
                url: '/pages/driver/reserved?id=' + this.info.id 
 | 
            }) 
 | 
        }, 
 | 
        handleAga(){ 
 | 
            const { info } = this 
 | 
            uni.navigateTo({ 
 | 
                url: `/pages/driver/reserved?id=${info.id}&type=reject` 
 | 
            }) 
 | 
        }, 
 | 
        getDetail(id) { 
 | 
            driverApplyDetail({id}).then(res => { 
 | 
                this.info = res.data 
 | 
                if(this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0 ){ 
 | 
                    this.info.approveDateVO.approveList.forEach(item => { 
 | 
                        if(item.approveList && item.approveList.length == 1 && item.type !== 1){ 
 | 
                            item.title = item.approveList[0].title 
 | 
                            item.faceImg = item.approveList[0].faceImg 
 | 
                            item.memberName = item.approveList[0].memberName 
 | 
                            item.statusInfo = item.approveList[0].statusInfo 
 | 
                            item.approveList = [] 
 | 
                        } 
 | 
                    }) 
 | 
                } 
 | 
            }) 
 | 
        }, 
 | 
    handleSub(flag) { 
 | 
      if (flag === '1') { 
 | 
  
 | 
      } else { 
 | 
  
 | 
      } 
 | 
      this.showApprModal = true 
 | 
    } 
 | 
  }, 
 | 
} 
 | 
</script> 
 | 
<style> 
 | 
page { 
 | 
  background-color: #f7f7f7; 
 | 
} 
 | 
</style> 
 | 
<style lang="scss"> 
 | 
.main_app { 
 | 
  background-color: #fff; 
 | 
  padding-bottom: 0; 
 | 
  
 | 
  .flow_wrap { 
 | 
    padding: 30rpx 0; 
 | 
  
 | 
    .flow_title { 
 | 
      font-weight: 600; 
 | 
      font-size: 32rpx; 
 | 
      color: #222222; 
 | 
      margin-bottom: 24rpx; 
 | 
    } 
 | 
  
 | 
    .list { 
 | 
      .item { 
 | 
        display: flex; 
 | 
        margin-bottom: 48rpx; 
 | 
                position: relative; 
 | 
                .separate { 
 | 
                  position: absolute; 
 | 
                  width: 4rpx; 
 | 
                  height: calc( 100% - 52rpx ); 
 | 
                  background-color: #eeeeee; 
 | 
                  left: 40rpx; 
 | 
                  top: 90rpx; 
 | 
                } 
 | 
        .avatar_wrap { 
 | 
          width: 80rpx; 
 | 
          height: 80rpx; 
 | 
          position: relative; 
 | 
          margin-right: 20rpx; 
 | 
  
 | 
          .img { 
 | 
            width: 80rpx; 
 | 
            height: 80rpx; 
 | 
            border-radius: 50%; 
 | 
          } 
 | 
  
 | 
          .status { 
 | 
            width: 28rpx; 
 | 
            height: 28rpx; 
 | 
            border-radius: 50%; 
 | 
            position: absolute; 
 | 
            right: 0; 
 | 
            bottom: 0; 
 | 
          } 
 | 
  
 | 
        } 
 | 
  
 | 
        .content { 
 | 
          flex: 1; 
 | 
  
 | 
          .head { 
 | 
            display: flex; 
 | 
            justify-content: space-between; 
 | 
            margin-bottom: 4rpx; 
 | 
  
 | 
            .event { 
 | 
              font-size: 30rpx; 
 | 
            } 
 | 
  
 | 
            .time { 
 | 
              font-size: 26rpx; 
 | 
              color: #999999; 
 | 
            } 
 | 
          } 
 | 
  
 | 
          .name_wrap { 
 | 
            font-size: 26rpx; 
 | 
            color: #777777; 
 | 
  
 | 
            .status { 
 | 
              color: $uni-color-primary; 
 | 
            } 
 | 
          } 
 | 
  
 | 
          .remark { 
 | 
            margin-top: 12rpx; 
 | 
            background-color: #f7f7f7; 
 | 
            padding: 14rpx 20rpx; 
 | 
            border-radius: 8rpx; 
 | 
            font-size: 26rpx; 
 | 
            color: #666666; 
 | 
            line-height: 36rpx; 
 | 
          } 
 | 
        } 
 | 
        .carbon { 
 | 
          display: flex; 
 | 
          width: 590rpx; 
 | 
          overflow-x: auto; 
 | 
          margin-top: 12rpx; 
 | 
          .carbon_item { 
 | 
            text-align: center; 
 | 
            flex-shrink: 0; 
 | 
            width: 100rpx; 
 | 
            image { 
 | 
              width: 60rpx; 
 | 
              height: 60rpx; 
 | 
              margin: 0 auto; 
 | 
            } 
 | 
            view { 
 | 
              font-size: 26rpx; 
 | 
              color: #777777; 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .module_list { 
 | 
    .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; 
 | 
  
 | 
        .avatar_wrap { 
 | 
          margin-right: 20rpx; 
 | 
          width: 120rpx; 
 | 
          height: 120rpx; 
 | 
          border-radius: 8rpx; 
 | 
          border: 2rpx solid #e5e5e5; 
 | 
        } 
 | 
  
 | 
        .info { 
 | 
          flex: 1; 
 | 
          display: flex; 
 | 
          flex-direction: column; 
 | 
          justify-content: space-between; 
 | 
          font-size: 26rpx; 
 | 
          color: #666666; 
 | 
  
 | 
          .name { 
 | 
            font-size: 30rpx; 
 | 
            color: #333333; 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .status_wrap { 
 | 
    position: relative; 
 | 
    padding: 30rpx 0; 
 | 
    .name { 
 | 
      font-weight: 600; 
 | 
      font-size: 32rpx; 
 | 
      margin-bottom: 20rpx; 
 | 
      color: #222222; 
 | 
    } 
 | 
  
 | 
    .desc { 
 | 
      font-size: 26rpx; 
 | 
      color: #999999; 
 | 
    } 
 | 
  
 | 
    .status { 
 | 
      position: absolute; 
 | 
      right: -30rpx; 
 | 
      top: 0; 
 | 
      height: 60rpx; 
 | 
      line-height: 60rpx; 
 | 
      padding: 0 32rpx; 
 | 
      border-radius: 0rpx 0rpx 0rpx 30rpx; 
 | 
      background-color: #e9edff; 
 | 
      color: $uni-color-primary; 
 | 
    } 
 | 
        .icon{ 
 | 
            width: 120rpx; 
 | 
            height: 120rpx; 
 | 
            border-radius: 50%; 
 | 
            position: absolute; 
 | 
            right: 0rpx; 
 | 
            top: 20rpx; 
 | 
             
 | 
        } 
 | 
  } 
 | 
  
 | 
  .main_footer { 
 | 
    padding-bottom: 64rpx; 
 | 
    display: flex; 
 | 
    justify-content: space-between; 
 | 
         
 | 
    .btn { 
 | 
      width: 336rpx; 
 | 
      height: 88rpx; 
 | 
      line-height: 88rpx; 
 | 
      background: #ffffff; 
 | 
      border-radius: 44rpx; 
 | 
      border: 1rpx solid #999999; 
 | 
      font-size: 32rpx; 
 | 
      text-align: center; 
 | 
      margin: 16rpx 0; 
 | 
    } 
 | 
  
 | 
    .agree { 
 | 
      background: $uni-color-primary; 
 | 
      color: #fff; 
 | 
      border: 1rpx solid $uni-color-primary; 
 | 
    } 
 | 
        .aga{ 
 | 
            width: 100%; 
 | 
        } 
 | 
  } 
 | 
  
 | 
  .appr_modal { 
 | 
    padding: 36rpx 30rpx 0; 
 | 
  
 | 
    .title { 
 | 
      font-weight: 600; 
 | 
      font-size: 32rpx; 
 | 
      color: #222222; 
 | 
      margin-bottom: 40rpx; 
 | 
      text-align: center; 
 | 
    } 
 | 
  
 | 
    textarea { 
 | 
      box-sizing: border-box; 
 | 
      width: 690rpx; 
 | 
      background-color: #f7f7f7; 
 | 
      font-size: 28rpx; 
 | 
      color: #333333; 
 | 
      padding: 24rpx; 
 | 
      border-radius: 8rpx; 
 | 
      margin-bottom: 30rpx; 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .emyty { 
 | 
    width: 750rpx; 
 | 
    height: 20rpx; 
 | 
    background-color: #f7f7f7; 
 | 
    margin: 0 -30rpx; 
 | 
  } 
 | 
} 
 | 
</style> 
 |