ll
liukangdong
2025-02-13 5d8d536b79f7cc2e0719dd93c0069b80639e3bf1
h5/pages/driver/taskDetail.vue
@@ -4,10 +4,12 @@
         <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 == 3">入园等待</view>
         <view class="name" v-if="param.status == 4">请入园停靠{{param.platformName}}作业</view>
         <view class="name" v-if="param.status == 3">入园等待</view>
         <view class="name" v-if="param.status == 4">请入园停靠{{param.platformName}}作业</view>
         <view class="name" v-if="param.status == 5">月台作业中</view>
         <view class="name" v-if="param.status == 6">作业已完成</view>
         <view class="name" v-if="param.status == 6">作业已完成</view>
         <view class="name" v-if="param.status == 7">转移中</view>
         <view class="name red" v-if="param.status == 8">异常挂起</view>
         <view class="id_card">{{ param.carCodeFront }}</view>
         <view class="status">{{statusMap[param.status]}}</view>
      </view>
@@ -21,7 +23,7 @@
            <view class="label">手机号</view>
            <view class="value">{{param.drivierPhone}}</view>
         </view>
         <template v-if="param.type != 4">
         <template v-if="param.billCode">
            <view class="line">
               <view class="label">运输单号</view>
               <view class="value" @click="wmsDetail">
@@ -31,9 +33,9 @@
            </view>
            <view class="line">
               <view class="label">作业类型</view>
               <view class="value" v-if="param.type == 0">自有车卸货</view>
               <view class="value" v-if="param.type == 1">自有车装货</view>
               <view class="value" v-if="param.type == 2">外协车卸货</view>
               <view class="value" v-if="param.type == 0">自有车卸货</view>
               <view class="value" v-if="param.type == 1">自有车装货</view>
               <view class="value" v-if="param.type == 2">外协车卸货</view>
               <view class="value" v-if="param.type == 3">外协车装货</view>
            </view>
         </template>
@@ -96,15 +98,14 @@
         </view> -->
         <view v-if="param.status == 1" class="signIn_wrap" @click="handleSignIn">
            <image :src="
            param.getDistance < signDistance
            (param.getDistance || param.getDistance == 0) && 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="handle">{{ !param.getDistance || 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>
@@ -139,24 +140,24 @@
                  <view class="label">运输公司</view>
                  <view class="value">{{ wmsInfo.carrierName }}</view>
               </view>
            </view>
            <view class="contract_wrap">
               <view class="contract_list" v-for="item in wmsInfo.wmsJobContractVOList">
                  <view class="title">合同号:{{ item.contractCode }}</view>
                  <view class="address">收货地:{{ item.address }}</view>
                  <view class="list">
                     <view class="item" v-for="line in item.platformWmsDetailList">
                        <view class="line">
                           <view class="label">物料:</view>
                           <view class="value">{{ line.materialName }}</view>
                        </view>
                        <view class="line">
                           <view class="label">数量:</view>
                           <view class="value">{{ line.ioQty }}</view>
                        </view>
                     </view>
                  </view>
               </view>
            </view>
            <view class="contract_wrap">
               <view class="contract_list" v-for="item in wmsInfo.wmsJobContractVOList">
                  <view class="title">合同号:{{ item.contractCode }}</view>
                  <view class="address">收货地:{{ item.address }}</view>
                  <view class="list">
                     <view class="item" v-for="line in item.platformWmsDetailList">
                        <view class="line">
                           <view class="label">物料:</view>
                           <view class="value">{{ line.materialName }}</view>
                        </view>
                        <view class="line">
                           <view class="label">数量:</view>
                           <view class="value">{{ line.ioQty }}万支</view>
                        </view>
                     </view>
                  </view>
               </view>
            </view>
         </view>
      </u-popup>
@@ -181,24 +182,37 @@
               status: '0'
            },
            jobId: '',
            // lat: '',
            // lnt: '',
            lat: '31.783205',
            lnt: '117.262635',
            lat: '',
            lnt: '',
            // lat: '31.783205',
            // lnt: '117.262635',
            nowTime: '',
            wmsInfo: {},
            signDistance: uni.getStorageSync('driverGuide').signDistance,
            showDetail: false,
         }
      },
      onLoad(option) {
      onLoad(option) {
         uni.setStorageSync('ywinfo',{})
         this.jobId = option.id
         // if(option.status && option.status == '1'){
         //    this.getLocation()
         // }else{
         //    this.getDetail()
         // }
         this.getDetail()
         if (option.status && option.status == '1') {
            // wx.config({
            //    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            //    appId: 'wx173e6caf5abc718a', // 必填,公众号的唯一标识
            //    timestamp: timeStamp, // 必填,生成签名的时间戳
            //    nonceStr: nonceStr, // 必填,生成签名的随机串
            //    signature: Sign, // 必填,签名
            //    jsApiList: [
            //       'getLocation',
            //       'openLocation'
            //    ] // 必填,需要使用的JS接口列表
            // })
            this.getLocation()
            // this.getDetail()
         } else {
            this.getDetail()
         }
         // this.getDetail()
         setInterval(() => {
            this.nowTime = dayjs().format('HH:mm:ss')
         })
@@ -212,15 +226,17 @@
               lnt,
               jobId
            } = this
            if (param.getDistance > signDistance) return
            if (!param.getDistance || param.getDistance > signDistance) return
            driverSignInTask({
               jobId,
               lat,
               lnt,
               signType: 0
            }).then(res => {
               this.showToast('签到成功')
               this.getDetail()
            }).then(res => {
               if (res && res.code == 200) {
                  this.showToast('签到成功')
                  this.getDetail()
               }
            })
         },
         getDetail() {
@@ -254,15 +270,33 @@
            const {
               jobId
            } = this
            // wx.ready(() => {
            //    wx.getLocation({
            //       type: "gcj02", // gcj02(火星坐标),wgs84(GPS坐标)
            //       success: (res) => {
            //          this.lat = res.latitude
            //          this.lnt = res.longitude
            //          this.getDetail()
            //       },
            //       fail: (err) => {
            //          console.error("获取定位失败:", err);
            //       },
            //       cancel: () => {
            //          console.warn("用户拒绝授权获取地理位置");
            //       },
            //    });
            // });
            uni.getLocation({
               type: 'wgs84',
               success: (res) => {
                  this.lat = res.latitude
                  this.lnt = res.longitude
                  this.lnt = res.longitude
                  console.log('---', res);
                  this.getDetail()
               },
               fail: (err) => {
                  this.showToast('获取定位失败')
               fail: (err) => {
                  this.getDetail()
                  this.showToast('获取定位失败', err)
               }
            })
         },
@@ -293,7 +327,7 @@
            display: flex;
            .label {
               width: 150rpx;
               width: 154rpx;
               font-size: 30rpx;
               color: #666666;
            }
@@ -438,11 +472,12 @@
      }
   }
.detail_modal {
      height: calc( 100vh - 88rpx );
      padding: 36rpx 30rpx;
      border-radius: 12rpx;
   .detail_modal {
      height: calc(100vh - 88rpx);
      padding: 36rpx 30rpx;
      border-radius: 12rpx;
      box-shadow: 0 0 6rpx rgba(0, 0, 0, 0.5);
      .modal_title {
         font-weight: 600;
         font-size: 32rpx;
@@ -451,37 +486,46 @@
         text-align: center;
         margin-bottom: 36rpx;
      }
      .contract_wrap{
         height: calc( 100% - 400rpx );
         overflow-y: auto;
      .contract_wrap {
         height: calc(100% - 400rpx);
         overflow-y: auto;
      }
      .contract_list {
         border-top: 1rpx solid #E5E5E5;
         margin-bottom: 30rpx;
         padding-top: 30rpx;
         &:nth-last-child(1){
            margin-bottom: 0;
      .contract_list {
         border-top: 1rpx solid #E5E5E5;
         margin-bottom: 30rpx;
         padding-top: 30rpx;
         &:nth-last-child(1) {
            margin-bottom: 0;
         }
         .list {
            background: #f7f7f7;
            border-radius: 8rpx;
            padding: 20rpx;
            .item{
               border-bottom: 1rpx solid #e5e5e5;
               padding-bottom: 20rpx;
               margin-bottom: 20rpx;
               &:nth-last-child(1){
                  border: none;
                  padding-bottom: 0;
                  margin-bottom: 0;
               }
            .item {
               border-bottom: 1rpx solid #e5e5e5;
               padding-bottom: 20rpx;
               margin-bottom: 20rpx;
               &:nth-last-child(1) {
                  border: none;
                  padding-bottom: 0;
                  margin-bottom: 0;
               }
            }
            .line {
               display: flex;
               margin-bottom: 20rpx;
               &:nth-last-child(1){
                  margin-bottom: 0rpx;
               &:nth-last-child(1) {
                  margin-bottom: 0rpx;
               }
               .label {
                  color: #666666;
                  width: 92rpx;
@@ -561,5 +605,5 @@
            }
         }
      }
   }
   }
</style>