<template> 
 | 
  <view class="main_app"> 
 | 
    <view class="status_wrap"> 
 | 
      <image 
 | 
        class="bg" 
 | 
        src="../../static/driver/bg_renwu@2x.png" 
 | 
        mode="" 
 | 
      ></image> 
 | 
      <view class="name" v-if="param.status == 1">请与{{ param.arriveDate.slice(0,11) }}现场签到</view> 
 | 
      <view class="name" v-if="param.status == 2">前方排队:{{param.lineUpNum}}辆</view> 
 | 
      <view class="name" v-if="param.status == 5">月台作业中</view> 
 | 
      <view class="name" v-if="param.status == 6">作业已完成</view> 
 | 
      <view class="id_card">{{ param.carCodeFront }}</view> 
 | 
      <view class="status">{{statusMap[param.status]}}</view> 
 | 
    </view> 
 | 
    <!--  --> 
 | 
    <view class="main_content"> 
 | 
      <view class="line"> 
 | 
        <view class="label">司机姓名</view> 
 | 
        <view class="value">{{param.driverName}}</view> 
 | 
      </view> 
 | 
      <view class="line"> 
 | 
        <view class="label">手机号</view> 
 | 
        <view class="value">{{param.drivierPhone}}</view> 
 | 
      </view> 
 | 
            <template v-if="param.type != 4"> 
 | 
                <view class="line"> 
 | 
                  <view class="label">运输单号</view> 
 | 
                  <view class="value" @click="showDetail = true"> 
 | 
                    <text class="waybill_num">{{param.code}}</text> 
 | 
                    <text class="btn">运单详情</text> 
 | 
                  </view> 
 | 
                </view> 
 | 
                <view class="line"> 
 | 
                  <view class="label">作业类型</view> 
 | 
                  <view class="value">市公司外协车卸货</view> 
 | 
                </view> 
 | 
            </template> 
 | 
            <template v-else> 
 | 
                <view class="line"> 
 | 
                  <view class="label">合同编号</view> 
 | 
                  <view class="value">{{param.contractNum}}</view> 
 | 
                </view> 
 | 
                <view class="line"> 
 | 
                  <view class="label">入库类型</view> 
 | 
                  <view class="value">{{param.inType == 0 ? '整托盘' : '件烟'}}</view> 
 | 
                </view> 
 | 
                <view class="line"> 
 | 
                  <view class="label">作业量</view> 
 | 
                  <view class="value">{{param.totalNum}}万支</view> 
 | 
                </view> 
 | 
            </template> 
 | 
      <view class="line"> 
 | 
        <view class="label">车牌照</view> 
 | 
        <view class="value">前:{{param.carCodeFront}} | 后:{{param.carCodeBack}}</view> 
 | 
      </view> 
 | 
      <!--  --> 
 | 
      <view class="line" v-if="param.status == 1"> 
 | 
        <view class="label">距离园区</view> 
 | 
        <view class="value"> 
 | 
          <view class="">{{param.getDistance}}公里</view> 
 | 
          <view class="btn" @click="getLocation"> 
 | 
                        <image class="icon mr6" src="../../static/driver/position.png"></image> 
 | 
            重新定位 
 | 
          </view> 
 | 
        </view> 
 | 
      </view> 
 | 
            <view class="line" v-if="param.signDate"> 
 | 
              <view class="label">签到时间</view> 
 | 
              <view class="value">{{param.signDate}}</view> 
 | 
            </view> 
 | 
            <view class="line" v-if="param.startDate"> 
 | 
              <view class="label">开始作业</view> 
 | 
              <view class="value">{{param.startDate}}</view> 
 | 
            </view> 
 | 
            <view class="line" v-if="param.doneDate"> 
 | 
              <view class="label">作业完成</view> 
 | 
              <view class="value">{{param.doneDate}}</view> 
 | 
            </view> 
 | 
      <view v-if="param.status == 1" class="warnning"> 
 | 
        <u-icon name="info-circle" color="#ED4545" class="mr12"></u-icon> 
 | 
        如无法获取定位,请用微信扫描园区大屏二维 
 | 
      </view> 
 | 
      <!--             <view class="line"> 
 | 
                <view class="label">签到时间</view> 
 | 
                <view class="value">2022</view> 
 | 
            </view> 
 | 
            <view class="line"> 
 | 
                <view class="label">入园时间</view> 
 | 
                <view class="value">2022</view> 
 | 
            </view> 
 | 
            <view class="line"> 
 | 
                <view class="label">作业完成</view> 
 | 
                <view class="value">2022</view> 
 | 
            </view> --> 
 | 
      <view v-if="param.status == 1" class="signIn_wrap" @click="handleSignIn"> 
 | 
        <image 
 | 
          :src=" 
 | 
            param.getDistance < signDistance 
 | 
              ? require('@/static/driver/btn_qiandao@2x.png') 
 | 
              : require('@/static/driver/btn_qiandao_fail@2x.png') 
 | 
          " 
 | 
          class="img" 
 | 
          mode="widthFix" 
 | 
        ></image> 
 | 
        <view class="handle">{{ param.getDistance > signDistance ? '无法签到' : '签到' }}</view> 
 | 
        <view class="time">{{nowTime}}</view> 
 | 
      </view> 
 | 
    </view> 
 | 
    <view class="space"></view> 
 | 
    <!-- 等待叫号 --> 
 | 
    <view v-if="param.status == 2" class="padding_wrap"> 
 | 
      <view class="btn check" @click="handleQueue">查看排队情况</view> 
 | 
    </view> 
 | 
  
 | 
    <!-- modal --> 
 | 
    <u-popup 
 | 
      :show="showDetail" 
 | 
      :round="10" 
 | 
      :safeAreaInsetBottom="true" 
 | 
      closeOnClickOverlay 
 | 
      :closeable="true" 
 | 
      mode="bottom" 
 | 
      @close="showDetail = false" 
 | 
    > 
 | 
      <view class="detail_modal"> 
 | 
        <view class="modal_title">运单详情</view> 
 | 
        <view class="id_card"> 
 | 
          <view class="last">皖</view> 
 | 
          <view class="name">AD1111</view> 
 | 
        </view> 
 | 
        <!--  --> 
 | 
        <view class="info"> 
 | 
          <view class="line"> 
 | 
            <view class="label">运输单号</view> 
 | 
            <view class="value">2222</view> 
 | 
          </view> 
 | 
          <view class="line"> 
 | 
            <view class="label">驾驶员</view> 
 | 
            <view class="value">2222</view> 
 | 
          </view> 
 | 
          <view class="line"> 
 | 
            <view class="label">总运输量</view> 
 | 
            <view class="value">2222</view> 
 | 
          </view> 
 | 
          <view class="line"> 
 | 
            <view class="label">运输公司</view> 
 | 
            <view class="value">2222</view> 
 | 
          </view> 
 | 
        </view> 
 | 
        <view class="separate"></view> 
 | 
        <view class="contract_list"> 
 | 
          <view class="title">合同号:111</view> 
 | 
          <view class="address">aadd</view> 
 | 
          <view class="list"> 
 | 
            <view class="line"> 
 | 
              <view class="label">物料:</view> 
 | 
              <view class="value">黄山黑马</view> 
 | 
            </view> 
 | 
            <view class="line"> 
 | 
              <view class="label">数量:</view> 
 | 
              <view class="value">黄山黑马</view> 
 | 
            </view> 
 | 
            <view class="line"> 
 | 
              <view class="label">物料:</view> 
 | 
              <view class="value">黄山黑马</view> 
 | 
            </view> 
 | 
            <view class="line"> 
 | 
              <view class="label">数量:</view> 
 | 
              <view class="value">黄山黑马</view> 
 | 
            </view> 
 | 
          </view> 
 | 
        </view> 
 | 
      </view> 
 | 
    </u-popup> 
 | 
  </view> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
    import { driverTaskJobDetail, driverSignInTask } from '@/api'; 
 | 
    import { statusMap } from '@/utils/config.js'; 
 | 
    import dayjs from 'dayjs'; 
 | 
export default { 
 | 
  data() { 
 | 
    return { 
 | 
            statusMap, 
 | 
      param: { 
 | 
        status: '0' 
 | 
      }, 
 | 
            jobId: '', 
 | 
            // lat: '', 
 | 
            // lnt: '', 
 | 
            lat: '31.783205', 
 | 
            lnt: '117.262635', 
 | 
            nowTime: '', 
 | 
            signDistance: uni.getStorageSync('driverGuide').signDistance, 
 | 
      showDetail: false, 
 | 
    } 
 | 
  }, 
 | 
    onLoad(option) { 
 | 
        this.jobId = option.id 
 | 
        // if(option.status && option.status == '1'){ 
 | 
        //     this.getLocation() 
 | 
        // }else{ 
 | 
        //     this.getDetail() 
 | 
        // } 
 | 
        this.getDetail() 
 | 
        setInterval(() => { 
 | 
            this.nowTime = dayjs().format('HH:mm:ss') 
 | 
        }) 
 | 
    }, 
 | 
  methods: { 
 | 
    handleSignIn() { 
 | 
            const { param, signDistance, lat, lnt, jobId } = this 
 | 
            if(param.getDistance > signDistance) return 
 | 
            driverSignInTask({ 
 | 
                jobId, lat, lnt,signType: 0 
 | 
            }).then(res => { 
 | 
                this.showToast('签到成功') 
 | 
                this.getDetail() 
 | 
            }) 
 | 
    }, 
 | 
        getDetail() { 
 | 
            const { jobId, lat, lnt } = this 
 | 
            driverTaskJobDetail({ 
 | 
                jobId: this.jobId, 
 | 
                lat, 
 | 
                lnt 
 | 
            }).then(ress => { 
 | 
                this.param = { ...ress.data } 
 | 
            }) 
 | 
        }, 
 | 
    getLocation() { 
 | 
            const { jobId } = this 
 | 
      uni.getLocation({ 
 | 
        type: 'wgs84', 
 | 
        success: (res) => { 
 | 
                    this.lat = res.latitude 
 | 
                    this.lnt = res.longitude 
 | 
                    this.getDetail() 
 | 
        }, 
 | 
                fail:(err) => { 
 | 
                    this.showToast('获取定位失败') 
 | 
                } 
 | 
      }) 
 | 
    }, 
 | 
        handleQueue() { 
 | 
            uni.navigateTo({ 
 | 
                url:'/pages/driver/queueUp?jobId=' + this.jobId 
 | 
            }) 
 | 
        }, 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss"> 
 | 
.main_app { 
 | 
  padding: 0; 
 | 
  .main_content { 
 | 
    background: #ffffff; 
 | 
    border-radius: 20rpx 20rpx 0rpx 0rpx; 
 | 
    padding: 16rpx 30rpx; 
 | 
    position: relative; 
 | 
    bottom: 32rpx; 
 | 
        z-index: 999; 
 | 
    .line { 
 | 
      padding: 24rpx 0 28rpx; 
 | 
      border-bottom: 1rpx solid #e5e5e5; 
 | 
      display: flex; 
 | 
      .label { 
 | 
        width: 150rpx; 
 | 
        font-size: 30rpx; 
 | 
        color: #666666; 
 | 
      } 
 | 
      .value { 
 | 
        flex: 1; 
 | 
        display: flex; 
 | 
        justify-content: space-between; 
 | 
        align-items: center; 
 | 
        font-size: 30rpx; 
 | 
        .waybill_num { 
 | 
          flex: 1; 
 | 
        } 
 | 
        .btn { 
 | 
          font-size: 28rpx; 
 | 
          color: $uni-color-primary; 
 | 
          display: flex; 
 | 
                    align-items: center; 
 | 
                    .icon{ 
 | 
                        width: 30rpx; 
 | 
                        height: 30rpx; 
 | 
                    } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
    .warnning { 
 | 
      display: flex; 
 | 
      color: #ed4545; 
 | 
      align-items: center; 
 | 
      margin: 40rpx 0; 
 | 
    } 
 | 
    .signIn_wrap { 
 | 
      margin: 80rpx auto; 
 | 
      width: 260rpx; 
 | 
      height: 260rpx; 
 | 
      position: relative; 
 | 
      color: #fff; 
 | 
      z-index: 1; 
 | 
      display: flex; 
 | 
      flex-direction: column; 
 | 
      justify-content: center; 
 | 
      align-items: center; 
 | 
      .handle { 
 | 
        font-weight: 600; 
 | 
        font-size: 40rpx; 
 | 
        line-height: 56rpx; 
 | 
      } 
 | 
      .time { 
 | 
        color: rgba(255, 255, 255, 0.7); 
 | 
      } 
 | 
      .img { 
 | 
        position: absolute; 
 | 
        top: 0; 
 | 
        left: 0; 
 | 
        width: 100%; 
 | 
        z-index: -1; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  .status_wrap { 
 | 
    height: 200rpx; 
 | 
    width: 100%; 
 | 
    padding: 30rpx; 
 | 
    position: relative; 
 | 
    color: #fff; 
 | 
    .bg { 
 | 
      width: 100%; 
 | 
      height: 100%; 
 | 
      position: absolute; 
 | 
      top: 0; 
 | 
      left: 0; 
 | 
      z-index: -1; 
 | 
    } 
 | 
    .name { 
 | 
      font-weight: 600; 
 | 
      font-size: 40rpx; 
 | 
      line-height: 56rpx; 
 | 
      margin-bottom: 12rpx; 
 | 
    } 
 | 
    .id_card { 
 | 
      color: rgba(255, 255, 255, 0.8); 
 | 
    } 
 | 
    .status { 
 | 
      position: absolute; 
 | 
      right: 0; 
 | 
      top: 30rpx; 
 | 
      height: 68rpx; 
 | 
      line-height: 68rpx; 
 | 
      background: #ffffff; 
 | 
      padding: 0 24rpx; 
 | 
      border-radius: 34rpx 0rpx 0rpx 34rpx; 
 | 
      font-size: 26rpx; 
 | 
      color: $uni-color-primary; 
 | 
    } 
 | 
  } 
 | 
  .space { 
 | 
    width: 750rpx; 
 | 
    height: 200rpx; 
 | 
  } 
 | 
  .padding_wrap { 
 | 
    position: fixed; 
 | 
        z-index: 999; 
 | 
    padding: 0 30rpx 64rpx; 
 | 
    bottom: 0; 
 | 
    left: 0; 
 | 
    width: 100%; 
 | 
    display: flex; 
 | 
    justify-content: space-between; 
 | 
    .btn { 
 | 
      height: 96rpx; 
 | 
      line-height: 96rpx; 
 | 
      text-align: center; 
 | 
      width: 100%; 
 | 
      font-size: 36rpx; 
 | 
      color: #333333; 
 | 
      background: #ffffff; 
 | 
      border-radius: 48rpx; 
 | 
      border: 1rpx solid #999999; 
 | 
    } 
 | 
    .check { 
 | 
      background: $uni-color-primary; 
 | 
      border: 1rpx solid $uni-color-primary; 
 | 
      color: #fff; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
.detail_modal { 
 | 
  padding: 36rpx 30rpx; 
 | 
  .modal_title { 
 | 
    font-weight: 600; 
 | 
    font-size: 32rpx; 
 | 
    color: #222222; 
 | 
    line-height: 44rpx; 
 | 
    text-align: center; 
 | 
    margin-bottom: 36rpx; 
 | 
  } 
 | 
  .contract_list { 
 | 
    .list { 
 | 
      background: #f7f7f7; 
 | 
      border-radius: 8rpx; 
 | 
      padding: 20rpx; 
 | 
      .line { 
 | 
        display: flex; 
 | 
        margin-bottom: 20rpx; 
 | 
        &:nth-of-type(3n) { 
 | 
          border-top: 1rpx solid #e5e5e5; 
 | 
          padding-top: 20rpx; 
 | 
        } 
 | 
        .label { 
 | 
          color: #666666; 
 | 
          width: 86rpx; 
 | 
        } 
 | 
        .value { 
 | 
          flex: 1; 
 | 
          color: #222222; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
    .title { 
 | 
      font-weight: 600; 
 | 
      font-size: 30rpx; 
 | 
      color: $uni-color-primary; 
 | 
      margin-bottom: 12rpx; 
 | 
    } 
 | 
    .address { 
 | 
      font-size: 26rpx; 
 | 
      color: #666666; 
 | 
      margin-bottom: 20rpx; 
 | 
    } 
 | 
  } 
 | 
  .info { 
 | 
    .line { 
 | 
      display: flex; 
 | 
      margin-bottom: 20rpx; 
 | 
      .label { 
 | 
        font-size: 30rpx; 
 | 
        color: #666666; 
 | 
        width: 150rpx; 
 | 
      } 
 | 
      .value { 
 | 
        flex: 1; 
 | 
        font-size: 30rpx; 
 | 
        color: #222222; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  .separate { 
 | 
    width: 750rpx; 
 | 
    height: 2rpx; 
 | 
    margin: 30rpx -30rpx; 
 | 
    border: 1rpx solid #e5e5e5; 
 | 
  } 
 | 
  .id_card { 
 | 
    border-radius: 8rpx; 
 | 
    display: flex; 
 | 
    height: 60rpx; 
 | 
    line-height: 60rpx; 
 | 
    font-weight: 600; 
 | 
    font-size: 36rpx; 
 | 
    color: #111111; 
 | 
    text-align: center; 
 | 
    margin-bottom: 30rpx; 
 | 
    .last { 
 | 
      background: #e9f5f6; 
 | 
      width: 60rpx; 
 | 
      border-radius: 8rpx 0rpx 0rpx 8rpx; 
 | 
      border: 1rpx solid #dfdede; 
 | 
    } 
 | 
    .name { 
 | 
      width: 186rpx; 
 | 
      border: 1rpx solid #dfdede; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</style> 
 |