<template> 
 | 
  <view class="main_app"> 
 | 
    <view class="status_wrap"> 
 | 
      <view class="name">{{info.driverName}}的入园预约</view> 
 | 
      <view class="gray">{{info.carCodeFront}}</view> 
 | 
            <view class="desc" :class="{ 
 | 
                gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4', 
 | 
              }">{{ infoStatus }}</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 v-if="info.arriveDate" class="value">{{info.arriveDate.slice(0,16)}}</view> 
 | 
            </view> 
 | 
            <view class="item"> 
 | 
              <view class="label">准运证/运单照片</view> 
 | 
              <view class="value"> 
 | 
                    <image 
 | 
                    @click="priviewImage(info.prefixUrl + info.transportImg)" 
 | 
                        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" :key="item.id"> 
 | 
              <view class="separate"></view> 
 | 
              <view class="avatar"> 
 | 
                  <image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" /> 
 | 
                  <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img" 
 | 
                      src="@/static/staff/ic_shenpiren@2x.png" /> 
 | 
                        <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image> 
 | 
                  <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span> 
 | 
                  <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.checkDate }}</view> 
 | 
                  </view> 
 | 
                  <view class="name_wrap"> 
 | 
                      <text>{{ item.memberName 
 | 
                }}<text :class="{ status: item.statusInfo == '处理中' || item.status == '1'  }" 
 | 
                              v-if="item.statusInfo">({{ item.statusInfo }})</text></text> 
 | 
                  </view> 
 | 
                  <view v-if="item.checkInfo" class="remark">{{ 
 | 
              item.checkInfo 
 | 
            }}</view> 
 | 
                  <!-- 抄送人 --> 
 | 
                  <view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children"> 
 | 
                      <view class="child" v-for="child in item.approveList" :key="child.id"> 
 | 
                          <image v-if="child.faceImg" class="child_img" :src="child.faceImg" /> 
 | 
                          <view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view> 
 | 
                          <view>{{ child.memberName }}</view> 
 | 
                      </view> 
 | 
                  </view> 
 | 
              </view> 
 | 
          </view> 
 | 
      </view> 
 | 
    </view> 
 | 
    <view class="emyty"></view> 
 | 
    <view v-if=" 
 | 
      info.approveDateVO != null && 
 | 
      info.approveDateVO.canBeApproved != null && 
 | 
      info.approveDateVO.canBeApproved == 1 
 | 
    " class="main_footer"> 
 | 
      <view class="btn" @click="handleSub('0')">拒绝</view> 
 | 
      <view class="btn agree" @click="handleSub('1')">同意</view> 
 | 
    </view> 
 | 
  
 | 
    <!--  --> 
 | 
    <u-popup 
 | 
      :show="showApprModal" 
 | 
      :round="10" 
 | 
      :safeAreaInsetBottom="true" 
 | 
      mode="bottom" 
 | 
      @close="showApprModal = false" 
 | 
    > 
 | 
      <view class="appr_modal"> 
 | 
        <view class="title">{{ this.flag == '0' ? '拒绝' : '同意' }}</view> 
 | 
        <textarea 
 | 
                    v-model="checkInfo" 
 | 
          :placeholder="this.flag == '0' ? '拒绝说明,必填' : '同意说明,非必填'" 
 | 
          placeholder-class="placeholder9" 
 | 
        /> 
 | 
        <view class="main_footer"> 
 | 
          <view class="btn" @click="showApprModal = false">取消</view> 
 | 
          <view class="btn agree" @click="handleAppy">提交</view> 
 | 
        </view> 
 | 
      </view> 
 | 
    </u-popup> 
 | 
  </view> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
    import { driverApplyDetail, carUseBookAppr } from '@/api' 
 | 
export default { 
 | 
  data() { 
 | 
    return { 
 | 
      showApprModal: false, 
 | 
            checkInfo: '', 
 | 
            infoStatus: '', 
 | 
            flag: '1', 
 | 
      info: {}, 
 | 
            type: 0, 
 | 
            statusMap: { 
 | 
                0: '待审批', 
 | 
                1: '审批中', 
 | 
                2: '已通过', 
 | 
                3: '已拒绝', 
 | 
                4: '已取消', 
 | 
            }, 
 | 
    } 
 | 
  }, 
 | 
    onLoad(option) { 
 | 
        uni.setStorageSync('ywinfo',{}) 
 | 
        this.type = option.objType 
 | 
        this.infoStatus = option.info 
 | 
        this.getDetail(option.id) 
 | 
    }, 
 | 
  methods: { 
 | 
        priviewImage(url) { 
 | 
            uni.previewImage({ 
 | 
                urls: [url] 
 | 
            }) 
 | 
        }, 
 | 
        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 = [] 
 | 
                        } 
 | 
                    }) 
 | 
                } 
 | 
                console.log('this.info.approveDateVO', this.info.approveDateVO.approveList); 
 | 
            }) 
 | 
        }, 
 | 
        handleAppy() { 
 | 
            const {flag,checkInfo, type,info } = this 
 | 
            if(flag == 0 && checkInfo == '') return this.showToast('拒绝说明必填') 
 | 
            carUseBookAppr({ 
 | 
                checkInfo,objId: info.id,objType: 6,status: flag == 0 ? 3 : 2 
 | 
            }).then(res => { 
 | 
                if(res.code == 200){ 
 | 
                    setTimeout(() => { 
 | 
                        this.showToast('操作成功') 
 | 
                    }) 
 | 
                    this.showApprModal = false 
 | 
                    uni.navigateBack() 
 | 
                } 
 | 
            }) 
 | 
        }, 
 | 
    handleSub(flag) { 
 | 
            this.flag = flag 
 | 
            this.checkInfo = '' 
 | 
      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: 100%; 
 | 
                  background-color: #eeeeee; 
 | 
                  left: 40rpx; 
 | 
                  transform: translate(-50%, 0); 
 | 
                  top: 80rpx; 
 | 
              } 
 | 
   
 | 
              .avatar { 
 | 
                  width: 80rpx; 
 | 
                  height: 80rpx; 
 | 
                  position: relative; 
 | 
                  margin-right: 20rpx; 
 | 
                  display: flex; 
 | 
                  align-items: center; 
 | 
                  justify-content: center; 
 | 
   
 | 
                  .img { 
 | 
                      width: 80rpx; 
 | 
                      height: 80rpx; 
 | 
                      border-radius: 50%; 
 | 
                  } 
 | 
   
 | 
                  .img_name { 
 | 
                      font-size: 32rpx; 
 | 
                      color: #FFFFFF; 
 | 
                  } 
 | 
   
 | 
                  .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; 
 | 
                      } 
 | 
                  } 
 | 
   
 | 
                  .children { 
 | 
                      display: flex; 
 | 
                      flex-wrap: wrap; 
 | 
                      margin-top: 12rpx; 
 | 
   
 | 
                      .child { 
 | 
                          display: flex; 
 | 
                          flex-direction: column; 
 | 
                          justify-content: center; 
 | 
                          align-items: center; 
 | 
                          margin-right: 12rpx; 
 | 
                          font-size: 26rpx; 
 | 
                          color: #777777; 
 | 
   
 | 
                          .child_img { 
 | 
                              width: 48rpx; 
 | 
                              height: 48rpx; 
 | 
                              border-radius: 50%; 
 | 
                              margin-bottom: 2rpx; 
 | 
                          } 
 | 
   
 | 
                          .child_name { 
 | 
                              margin-bottom: 2rpx; 
 | 
                              width: 48rpx; 
 | 
                              height: 48rpx; 
 | 
                              text-align: center; 
 | 
                              justify-content: center; 
 | 
                              padding-top: 4rpx; 
 | 
                              font-size: 28rpx; 
 | 
                              border-radius: 50%; 
 | 
                              color: #FFFFFF; 
 | 
                              background-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; 
 | 
                      } 
 | 
                  } 
 | 
              } 
 | 
   
 | 
              &:nth-last-child(1) { 
 | 
                  .separate { 
 | 
                      height: 0; 
 | 
                  } 
 | 
              } 
 | 
          } 
 | 
      } 
 | 
  } 
 | 
  
 | 
  .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: #ed4545; 
 | 
            margin-bottom: 12rpx; 
 | 
    } 
 | 
        .gray { 
 | 
            color: #999999; 
 | 
            margin-bottom: 12rpx; 
 | 
        } 
 | 
  
 | 
    .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; 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .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> 
 |