<template> 
 | 
    <view class="main_app"> 
 | 
        <view class="status_wrap"> 
 | 
            <image class="bg" src="../../static/driver/bg_renwu@2x.png" mode=""></image> 
 | 
            <view class="name">请确认任务</view> 
 | 
            <view class="id_card">{{ param.carCodeFront }}</view> 
 | 
            <view class="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> 
 | 
            <view class="line"> 
 | 
                <view class="label">运输单号</view> 
 | 
                <view class="value" @click="showDetail = true"> 
 | 
                    <text class="waybill_num">{{ param.contractNum }}</text> 
 | 
                    <text class="btn">运单详情</text> 
 | 
                </view> 
 | 
            </view> 
 | 
            <view class="line"> 
 | 
                <view class="label">作业类型</view> 
 | 
                <view class="value">{{ param.inType == 0 ? '整托盘' : '件烟' }}</view> 
 | 
            </view> 
 | 
            <view class="empty"></view> 
 | 
            <!--  --> 
 | 
            <view class="line"> 
 | 
                <view class="label">到场日期<text class="red ml6">*</text></view> 
 | 
                <view class="value" @click="showDate = true"> 
 | 
                    <view :class="param.date ? '' : 'placeholder9'">{{ param.date ? param.date : '请选择' }}</view> 
 | 
                    <u-icon color="#999999" name="arrow-right"></u-icon> 
 | 
                </view> 
 | 
            </view> 
 | 
            <view class="line"> 
 | 
                <view class="label">车前牌照号</view> 
 | 
                <view class="value" @click="openInput(1)"> 
 | 
                    <text :style="{ color: param.carCodeFront ? '#000000' : '#999999' }">{{ param.carCodeFront ? param.carCodeFront : '请输入车前牌照号' }}</text> 
 | 
                </view> 
 | 
            </view> 
 | 
            <view class="line"> 
 | 
                <view class="label">车后牌照号<text class="red ml6">*</text></view> 
 | 
                <view class="value"> 
 | 
                    <text @click="openInput(2)" :style="{ color: param.carCodeBack ? '#000000' : '#999999' }">{{ param.carCodeBack ? param.carCodeBack : '请输入车后牌照号' }}</text> 
 | 
                    <text class="copy" @click="copy">复制车前牌照号</text> 
 | 
                </view> 
 | 
            </view> 
 | 
            <!--  --> 
 | 
        </view> 
 | 
        <view class="space"></view> 
 | 
        <!-- 等待叫号 --> 
 | 
        <view class="sub_wrap"><view class="btn check" @click="onSubmit">确认任务</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> 
 | 
        <u-datetime-picker :show="showDate" v-model="param.date" :minDate="minDate" @confirm="dateEnter" @cancel="showDate = false" mode="datetime"></u-datetime-picker> 
 | 
        <keyboardInput ref="keyboard" @export="setPlate" @close="closeInput" /> 
 | 
    </view> 
 | 
    <!--  --> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import keyboardInput from '@/components/keyboard-input/keyboard-input.vue'; 
 | 
import { driverTaskJobDetail, driverConfirmTask } from '@/api'; 
 | 
import dayjs from 'dayjs' 
 | 
export default { 
 | 
    components: { 
 | 
        keyboardInput 
 | 
    }, 
 | 
    data() { 
 | 
        return { 
 | 
            param: {}, 
 | 
            showDate: false, 
 | 
            showDetail: false, 
 | 
            minDate: '', 
 | 
  
 | 
            inputType: '' 
 | 
        }; 
 | 
    }, 
 | 
    onLoad(option) { 
 | 
        this.getDetail(option.id); 
 | 
        this.minDate = new Date().getTime() 
 | 
    }, 
 | 
    methods: { 
 | 
        onSubmit(){ 
 | 
            const { param } = this 
 | 
            if(!param.date) return this.showToast('请选择到场日期') 
 | 
            if(!param.carCodeBack) return this.showToast('请输入车后牌照号') 
 | 
            driverConfirmTask({ 
 | 
                id: param.id, 
 | 
                carCodeBack: param.carCodeBack, 
 | 
                arriveDate: param.date + ':59' 
 | 
            }).then(res =>{ 
 | 
                this.showToast('确认成功') 
 | 
                this.$goBack() 
 | 
            }) 
 | 
        }, 
 | 
        getDetail(jobId) { 
 | 
            driverTaskJobDetail({ 
 | 
                jobId 
 | 
            }).then(ress => { 
 | 
                this.param = { ...ress.data, carCodeBack: '' }; 
 | 
            }); 
 | 
        }, 
 | 
        dateEnter(e) { 
 | 
            setTimeout(() => { 
 | 
                this.$set(this.param, 'date', dayjs(e.value).format('YYYY-MM-DD HH:mm')) 
 | 
            }) 
 | 
            this.showDate = false 
 | 
        }, 
 | 
        openInput(type) { 
 | 
            this.inputType = type; 
 | 
            this.$refs.keyboard.open(); 
 | 
        }, 
 | 
        copy() { 
 | 
            if (this.param.carCodeFront) { 
 | 
                this.$set(this.param, 'carCodeBack', this.param.carCodeFront); 
 | 
                this.showToast('复制成功'); 
 | 
            } 
 | 
        }, 
 | 
        setPlate(e) { 
 | 
            if (this.inputType === 1) { 
 | 
                this.$set(this.param, 'carCodeFront', e); 
 | 
            } else if (this.inputType === 2) { 
 | 
                this.$set(this.param, 'carCodeBack', e); 
 | 
            } 
 | 
            this.$forceUpdate(); 
 | 
            this.closeInput(); 
 | 
        }, 
 | 
        closeInput() { 
 | 
            this.$refs.keyboard.close(); 
 | 
        } 
 | 
    } 
 | 
}; 
 | 
</script> 
 | 
  
 | 
<style lang="scss"> 
 | 
page { 
 | 
    background-color: #f7f7f7; 
 | 
} 
 | 
  
 | 
.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; 
 | 
  
 | 
            .label { 
 | 
                font-size: 26rpx; 
 | 
                color: #666666; 
 | 
                margin-bottom: 20rpx; 
 | 
            } 
 | 
  
 | 
            .value { 
 | 
                display: flex; 
 | 
                justify-content: space-between; 
 | 
                align-items: center; 
 | 
                font-size: 30rpx; 
 | 
  
 | 
                .waybill_num { 
 | 
                    flex: 1; 
 | 
                } 
 | 
  
 | 
                .copy { 
 | 
                    font-size: 26rpx; 
 | 
                    color: $uni-color-primary; 
 | 
                } 
 | 
  
 | 
                .btn { 
 | 
                    font-size: 28rpx; 
 | 
                    color: $uni-color-primary; 
 | 
                    display: flex; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        .empty { 
 | 
            width: 750rpx; 
 | 
            height: 20rpx; 
 | 
            background-color: #f7f7f7; 
 | 
            margin: 0 -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; 
 | 
        z-index: 99; 
 | 
        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; 
 | 
    } 
 | 
  
 | 
    .sub_wrap { 
 | 
        position: fixed; 
 | 
        padding: 16rpx 30rpx 64rpx; 
 | 
        bottom: 0; 
 | 
        left: 0; 
 | 
        width: 100%; 
 | 
        display: flex; 
 | 
        z-index: 1; 
 | 
        justify-content: space-between; 
 | 
        background-color: #fff; 
 | 
        .btn { 
 | 
            height: 96rpx; 
 | 
            line-height: 96rpx; 
 | 
            text-align: center; 
 | 
            width: 690rpx; 
 | 
            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> 
 |