| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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 == 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 == 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>
|
| | | <!-- -->
|
| | | <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.billCode">
|
| | | <view class="line">
|
| | | <view class="label">è¿è¾åå·</view>
|
| | | <view class="value" @click="wmsDetail">
|
| | | <text class="waybill_num">{{param.billCode}}</text>
|
| | | <text class="btn">è¿å详æ
</text>
|
| | | </view>
|
| | | </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 == 3">å¤å车è£
è´§</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 || 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 || param.getDistance > signDistance ? 'æ æ³ç¾å°' : 'ç¾å°' }}</view>
|
| | | <view class="time">{{nowTime}}</view>
|
| | | </view>
|
| | | </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 v-if="wmsInfo.plateNumber" class="id_card">
|
| | | <text>{{ wmsInfo.plateNumber.slice(0, 1) }}</text>
|
| | | <text>{{ wmsInfo.plateNumber.slice(1, 2) }}</text>
|
| | | <text>·</text>
|
| | | <text>{{ wmsInfo.plateNumber.slice(2) }}</text>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="info">
|
| | | <view class="line">
|
| | | <view class="label">è¿è¾åå·</view>
|
| | | <view class="value">{{ wmsInfo.carryBillCode }}</view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="label">驾驶å</view>
|
| | | <view class="value">{{ wmsInfo.driverName }} {{ wmsInfo.driverPhone }}</view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="label">æ»è¿è¾é</view>
|
| | | <view class="value">{{ wmsInfo.ioQty }}䏿¯</view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <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>
|
| | | </u-popup>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import {
|
| | | driverTaskJobDetail,
|
| | | driverSignInTask,
|
| | | wmsJobDetail
|
| | | } 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: '',
|
| | | wmsInfo: {},
|
| | | signDistance: uni.getStorageSync('driverGuide').signDistance,
|
| | | showDetail: false,
|
| | | }
|
| | | },
|
| | | onLoad(option) { |
| | | uni.setStorageSync('ywinfo',{})
|
| | | this.jobId = option.id
|
| | | 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')
|
| | | })
|
| | | },
|
| | | methods: {
|
| | | handleSignIn() {
|
| | | const {
|
| | | param,
|
| | | signDistance,
|
| | | lat,
|
| | | lnt,
|
| | | jobId
|
| | | } = this
|
| | | if (!param.getDistance || param.getDistance > signDistance) return
|
| | | driverSignInTask({
|
| | | jobId,
|
| | | lat,
|
| | | lnt,
|
| | | signType: 0
|
| | | }).then(res => { |
| | | if (res && res.code == 200) { |
| | | this.showToast('ç¾å°æå') |
| | | this.getDetail() |
| | | }
|
| | | })
|
| | | },
|
| | | getDetail() {
|
| | | const {
|
| | | jobId,
|
| | | lat,
|
| | | lnt
|
| | | } = this
|
| | | driverTaskJobDetail({
|
| | | jobId: this.jobId,
|
| | | lat,
|
| | | lnt
|
| | | }).then(ress => {
|
| | | this.param = {
|
| | | ...ress.data
|
| | | }
|
| | | })
|
| | | },
|
| | | wmsDetail() {
|
| | | const {
|
| | | param
|
| | | } = this
|
| | | wmsJobDetail({
|
| | | id: param.id
|
| | | }).then(res => {
|
| | | this.wmsInfo = res.data
|
| | | this.showDetail = true
|
| | | })
|
| | | },
|
| | | getLocation() {
|
| | | 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 |
| | | console.log('---', res);
|
| | | this.getDetail()
|
| | | },
|
| | | fail: (err) => { |
| | | this.getDetail()
|
| | | this.showToast('è·åå®ä½å¤±è´¥', err)
|
| | | }
|
| | | })
|
| | | },
|
| | | 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: 154rpx;
|
| | | 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 {
|
| | | 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;
|
| | | color: #222222;
|
| | | line-height: 44rpx;
|
| | | text-align: center;
|
| | | margin-bottom: 36rpx;
|
| | | }
|
| | |
|
| | | .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;
|
| | | }
|
| | |
|
| | | .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;
|
| | | }
|
| | | }
|
| | |
|
| | | .line {
|
| | | display: flex;
|
| | | margin-bottom: 20rpx;
|
| | |
|
| | | &:nth-last-child(1) {
|
| | | margin-bottom: 0rpx;
|
| | | }
|
| | |
|
| | | .label {
|
| | | color: #666666;
|
| | | width: 92rpx;
|
| | | }
|
| | |
|
| | | .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 {
|
| | | display: flex;
|
| | | font-weight: 600;
|
| | | height: 60rpx;
|
| | | line-height: 60rpx;
|
| | | font-size: 32rpx;
|
| | | color: #111111;
|
| | | border-radius: 8rpx;
|
| | | border: 1rpx solid #dfdede;
|
| | | width: 220rpx;
|
| | | margin-bottom: 15rpx;
|
| | |
|
| | | text {
|
| | | &:nth-of-type(1) {
|
| | | background: #e9f5f6;
|
| | | padding: 0 12rpx;
|
| | | }
|
| | |
|
| | | &:nth-of-type(2) {
|
| | | padding-left: 10rpx;
|
| | | }
|
| | |
|
| | | &:nth-of-type(4) {
|
| | | padding-right: 6rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | </style> |