<template> <!-- <u-navbar title="装车扫描" placeholder border=true :autoBack="true" leftIconSize='35'></u-navbar> --> <u-navbar title="装车扫描" bgColor='#D3832A' leftIconColor='#ffffff' titleStyle='color:#ffffff' placeholder :autoBack="true" leftIconSize='35'></u-navbar> <view class="schbox"> <view>配车日期:</view> <view @click.stop='showtime(true)' class="inputsr"> <input :value='datatime' disabled placeholder="请选择时间"/> <view @click.stop=""> <u-icon @click.stop='showtime(true)' style="margin-right: 10rpx;" v-if="!datatime" name="calendar" color="#999999" size="50"></u-icon> <u-icon @click.stop="cleartime" style="margin-right: 10rpx;" v-else name="close-circle" color="#999999" size="40"></u-icon> </view> </view> <view @click="init"> 查询 </view> </view> <scroll-view scroll-y="true" class="scvbx" @scrolltolower="jiazai"> <view class="mabxslist"> <view class="item" v-for="item in recordsList"> <view class="headtop"> <view class="type1s"> <view> <text style="color: #90A0AF;">配送类型:</text>{{item.type_name}} </view> <view> <text style="color: #90A0AF;">配送状态:</text>{{item.vehicleStatus_name}} </view> </view> <view class="type1s"> <view> <text style="color: #90A0AF;">车牌号:</text>{{item.vehicleName}} </view> <view> <text style="color: #90A0AF;">司机:</text>{{item.driverName}} </view> </view> <view class="type1s"> <view> <text style="color: #90A0AF;">装卸班组:</text>{{item.loadingTeamName}} </view> <view class="bhcolor"> <text style="color: #90A0AF;">备货是否完成:</text>{{item.isstock}} </view> </view> <view class="type1s"> <view> <text style="color: #90A0AF;">客户:</text>{{item.consignee}} </view> </view> <view class="type1s"> <view> <text style="color: #90A0AF;">配送日期:</text>{{item.createTime}} </view> </view> <view class="type1s" @click="goloddeta(item)"> <view class="bhcolor"> <text style="color: #90A0AF ;">车次号:</text><text style="text-decoration: underline;">{{item.trainNumber}}</text> </view> </view> <view class="liebs"> <view> <view>配送客户数</view> <view>{{item.customersNumber}}</view> </view> <view> <view>订单总数</view> <view>{{item.orderNumber}}</view> </view> <view> <view>计划件数</view> <view>{{item.deliveryNumber}}</view> </view> <view> <view>装车件数</view> <view>{{item.scannedNumber}}</view> </view> </view> </view> <view class="buts"> <view @click="">发车</view> <view @click="goselscan(item)">装车扫描</view> </view> </view> </view> </scroll-view> <l-calendar v-model:value="show" :initStartDate='date[0]' :initEndDate='date[1]' @hide='showCalendar' @change="onConfirm"></l-calendar> <!-- <u-datetime-picker :show="show" mode="datetime" @cancel="showtime(false)" @confirm="checktime" itemHeight='80'></u-datetime-picker> --> <tiplist ref="tips"></tiplist> </template> <script lang="ts" setup> import { onLoad, onShow, onHide, onUnload } from '@dcloudio/uni-app' import { deliverypage, deliveryvehicle } from '@/api/user.js' import { detailType } from '@/interfaces/pagesHome/LoadingScan' import { reactive, toRefs,ref,watchEffect } from "vue"; let details = reactive<detailType>({ datatime: '', show: false, recordsList:[], current:1, size:10, }) const tips=ref(null) const date = ref<number|string[]>([]) onShow(()=>{ initpage() }) function showCalendar(){ details.show=!details.show } function init(){ details.current=1 initpage() } function jiazai(){ details.current++ initpage() } watchEffect(()=>{ if((date.value as []).length!=0){ details.datatime=date.value[0]+' 至 '+date.value[1] } }) function onConfirm(e:any) { console.log(e); date.value[0]=e.startDate date.value[1]=e.endDate details.datatime=date.value[0]+' 至 '+date.value[1] // details.datatime=(uni as any).$u.timeFormat(date.value[0], 'yyyy-mm-dd')+' 至 '+(uni as any).$u.timeFormat(date.value[1], 'yyyy-mm-dd') } onLoad(()=>{ date.value[0]=(uni as any).$u.timeFormat((new Date().valueOf()-1000*60*60*24*3), 'yyyy-mm-dd') date.value[1]=(uni as any).$u.timeFormat((new Date().valueOf()), 'yyyy-mm-dd') details.current=1 init() }) function showtime(value : boolean) { console.log(value); details.show = value } async function initpage(){ let data={ current:details.current, size:details.size, taskTime_start:date.value[0]||'', taskTime_end:date.value[1]||'', } let response=await deliverypage(data) console.log(response); if(details.current==1){ details.recordsList=response.data.records }else{ if(response.data.records.lngth==0){ uni.showToast({ title:'已经到底了。', icon:'none' }) details.current-- return } details.recordsList=details.recordsList.concat(response.data.records) } // details.recordsList=response.data.records } function checktime(event : any) { console.log(event); details.datatime = (uni as any).$u.timeFormat(event.value, 'yyyy-mm-dd'); details.show = false console.log(details.datatime); } async function goselscan(item:any) { let data={ deliveryId:item.id } let res=await deliveryvehicle(data) if(res.data.length == 1 ){ uni.setStorageSync('checkvehicle',res.data[0]) uni.navigateTo({ url: '/pagesHome/pages/DeliveryCustomerScan/DeliveryCustomerScan?id='+item.id+'&item='+JSON.stringify(item) }) return } if(res.data.length == 0 ){ uni.showToast({ title:'没有司机数据', icon:'none' }) return } let list=[] res.data.map(item=>{ list.push(item.driverName+'---'+item.vehicleNub) }) tips.value.setdetails({ title:'请选择车辆', isshow:true, tipstate:2, list, checklist:[], inputtext:'', confirmTxt:'确认选择', isonecheck:true, success:(deta)=>{ if(deta.checklist.length==0){ uni.showToast({ title:'请选择车辆', icon:'none' }) return } tips.value.setdetails({isshow:false}) uni.setStorageSync('checkvehicle',res.data[deta.checklist[0]]) uni.navigateTo({ url: '/pagesHome/pages/DeliveryCustomerScan/DeliveryCustomerScan?id='+item.id+'&item='+JSON.stringify(item) }) }, cancel:(details)=>{ tips.value.setdetails({isshow:false}) }, close:(details)=>{ tips.value.setdetails({isshow:false}) } }) } async function goloddeta(item){ let data={ deliveryId:item.id } let res=await deliveryvehicle(data) console.log(res); if(res.data.length==1){ uni.setStorageSync('checkvehicle',res.data[0]) uni.navigateTo({ url: '/pagesHome/pages/LoadingDetails/LoadingDetails?item='+JSON.stringify(item) }) return } if(res.data.length == 0 ){ uni.showToast({ title:'没有司机数据', icon:'none' }) return } let list=[] res.data.map(item=>{ list.push(item.driverName+'---'+item.vehicleNub) }) tips.value.setdetails({ title:'请选择车辆', isshow:true, tipstate:2, list, checklist:[], inputtext:'', confirmTxt:'确认选择', isonecheck:true, success:(deta)=>{ if(deta.checklist.length==0){ uni.showToast({ title:'请选择车辆', icon:'none' }) return } tips.value.setdetails({isshow:false}) uni.setStorageSync('checkvehicle',res.data[deta.checklist[0]]) uni.navigateTo({ url: '/pagesHome/pages/LoadingDetails/LoadingDetails?item='+JSON.stringify(item) }) }, cancel:(details)=>{ tips.value.setdetails({isshow:false}) }, close:(details)=>{ tips.value.setdetails({isshow:false}) } }) // return } function cleartime(){ // console.log(cleartime); details.datatime='' date.value=[] init() } const { datatime, recordsList, show } = toRefs(details) </script> <style lang="scss"> .inputsr{ width: 400upx !important; height: 64upx; background: #F5F5F6; border-radius: 8upx 8upx 8upx 8upx; opacity: 1; border: 2upx solid #EEEEEE; padding: 16upx 18upx; box-sizing: border-box; padding-right: 0; display: flex; align-items: center; justify-content: space-between; font-size: 26upx; font-weight: 400; color: #092C4D; >input{ flex: 1; font-size: 26upx; } } .scvbx { width: 100%; height: 81vh; margin-top: 20upx; .mabxslist { display: flex; flex-direction: column; align-items: center; >.item { width: 686upx; // height: 610upx; background: #FFFFFF; border-radius: 8upx; padding: 20upx 0; box-sizing: border-box; margin-bottom: 20upx; >.headtop { display: flex; flex-direction: column; padding: 24upx; >.type1s { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 20upx; box-sizing: border-box; font-size: 28upx; font-weight: 400; color: #092C4D; >view { flex: 1; } .bhcolor{ color: #0086F1; } } >.liebs { display: flex; align-items: flex-start; justify-content: space-around; >view { display: flex; flex-direction: column; align-items: center; margin-top: 20upx; &:nth-of-type(1) { >view:nth-of-type(2) { color: #092C4D; } } &:nth-of-type(2) { >view:nth-of-type(2) { color: #0086F1; } } &:nth-of-type(3) { >view:nth-of-type(2) { color: #3AD8BC; } } &:nth-of-type(4) { >view:nth-of-type(2) { color: #FA8C16; } } >view:nth-of-type(1) { font-size: 28upx; font-weight: 400; color: #092C4D; } >view:nth-of-type(2) { font-size: 36upx; font-weight: 400; margin-top: 20upx; } } } } >.buts { border-top: 3upx solid #EEEEEE; display: flex; align-items: center; justify-content: space-around; padding-top: 20upx; >view { width: 204upx; height: 64upx; border-radius: 8upx; opacity: 1; display: flex; align-items: center; justify-content: center; font-size: 28upx; } >view:nth-of-type(1) { border: 2upx solid #0086F1; color: #0086F1; } >view:nth-of-type(2) { border: 2upx solid #D3832A; color: #D3832A; } } } } } .schbox { display: flex; align-items: center; justify-content: space-between; padding: 15upx 32upx; box-sizing: border-box; background-color: #ffffff; >view:nth-of-type(1) { // width: 150upx; font-size: 28upx; font-weight: 400; color: #092C4D; } >view:nth-of-type(2) { width: 380upx; // height: 64upx; } >view:nth-of-type(3) { width: 128upx; height: 64upx; background: #D3832A; border-radius: 8upx; display: flex; align-items: center; justify-content: center; font-size: 32upx; font-weight: 400; color: #FFFFFF; } } </style>