| <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 || item.approveType == 0" 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) { | 
|         uni.setStorageSync('ywinfo',{}) | 
|         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; | 
|                             border-radius: 50%; | 
|             } | 
|             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> |