<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="tabbmiax">
		<view @click="setstates(1)" :class="checkstate==1?'xz':''">
			<view>商配</view>
			<view></view>
		</view>
		<view @click="setstates(2)" :class="checkstate==2?'xz':''">
			<view>市配</view>
			<view></view>
		</view>
	</view>
	<view class="schbox">
		<view>配车日期：</view>
		<view @click='showtime(true)' class="inputsr">
			<input :value='datatime' disabled placeholder="请选择时间" />
			<view @click.stop.prevent>
				<u-icon @click='showtime(true)' style="margin-right: 10rpx;" v-if="!datatime" name="calendar"
					color="#999999" size="50"></u-icon>
				<u-icon @click="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" v-if="item.departureTime">
						<view>
							<text style="color: #90A0AF;">发车时间：</text>{{item.departureTime}}
						</view>
					</view>
					<view class="type1s">
						<view>
							<text style="color: #90A0AF;">备货区：</text>{{item.stockupArea||'无备货区'}}
						</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>
							<view>{{item.inventoryNub}}</view>
						</view>
					</view>
				</view>
				<view class="buts">
					<view @click="goselscan(item)">装车扫描</view>
					<view v-if="!item.departureTime" @click="startld(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="tiplists"></tiplist>
	<tips ref="tip"></tips>
</template>

<script lang="ts" setup>
	import {
		onLoad,
		onShow,
		onHide,
		onUnload,
		onPullDownRefresh
	} from '@dcloudio/uni-app'
	import {
		deliverypage,
		deliverystart,
		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,
		checkstate: 1,
	})
	const tip = ref<any>(null)
	const tiplists = ref<any>(null)
	const date = ref<number | string[]>([])
	onShow(() => {
		initpage()
	})
	function showCalendar() {
		details.show = !details.show
	}
	function stop() {

	}
	onPullDownRefresh(() => {
		const timer = setTimeout(async () => {
			// 停止刷新动画
			await initpage()
			uni.stopPullDownRefresh()
			clearTimeout(timer)
		}, 1000)
	})
	function setstates(state : number) {
		if (details.checkstate == state) {
			return
		}
		details.checkstate = state
		init()
	}
	async function startld(item) {
		tip.value.setdetails({
			title: '提示',
			content: '确认发车？',
			confirmTxt: '发车',
			isshow: true,
			isshowcancel: true,
			success: async () => {
				Departure(item)
			},
			cancel: () => {
				tip.value.setisshow(false)
			},
			close: () => {
				tip.value.setisshow(false)
			}
		})
	}
	async function Departure(item) {
		tip.value.setisshow(false)
		let data = {
			deliveryId: item.id
		}
		let res = await deliveryvehicle(data)
		if (res.data.length == 1) {
			let data = {
				deliveryId: item.id,
				loadingId: res.data[0].id
			}
			let response = await deliverystart(data)
			if (response.code == 200) {
				uni.showToast({
					title: '发车成功',
					icon: 'none'
				})
				init()
			}
			return
		}
		if (res.data.length == 0) {
			uni.showToast({
				title: '没有司机数据',
				icon: 'none'
			})
			return
		}
		let list = []
		res.data.map(item => {
			list.push(item.driverName + '---' + item.vehicleNub)
		})
		tiplists.value.setdetails({
			title: '请选择车辆',
			isshow: true,
			tipstate: 2,
			list,
			checklist: [],
			inputtext: '',
			confirmTxt: '确认选择',
			isonecheck: true,
			success: async (deta) => {
				if (deta.checklist.length == 0) {
					uni.showToast({
						title: '请选择车辆',
						icon: 'none'
					})
					return
				}
				tiplists.value.setdetails({ isshow: false })
				let data = {
					deliveryId: item.id,
					loadingId: res.data[deta.checklist[0]].id
				}
				let response = await deliverystart(data)
				if (response.code == 200) {
					init()
					uni.showToast({
						title: '发车成功',
						icon: 'none'
					})

				}
			},
			cancel: (details) => {
				tiplists.value.setdetails({ isshow: false })
			},
			close: (details) => {
				tiplists.value.setdetails({ isshow: false })
			}
		})
	}
	function init() {
		details.current = 1
		details.recordsList = []
		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
	})
	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] || '',
			type: details.checkstate
		}
		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 null
			}
			details.recordsList = details.recordsList.concat(response.data.records)
		}
		return null
		// 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)
		})
		tiplists.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
				}
				tiplists.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) => {
				tiplists.value.setdetails({ isshow: false })
			},
			close: (details) => {
				tiplists.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)
		})
		tiplists.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
				}
				tiplists.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) => {
				tiplists.value.setdetails({ isshow: false })
			},
			close: (details) => {
				tiplists.value.setdetails({ isshow: false })
			}
		})
		// return

	}
	function cleartime() {
		// console.log(cleartime);
		details.datatime = ''
		date.value = []
		init()
	}
	const { checkstate, datatime, recordsList, show } = toRefs(details)
</script>

<style lang="scss">
	.tabbmiax {
		display: flex;
		align-items: center;
		justify-content: space-between;
		background-color: #ffffff;

		.xz {
			>view:nth-of-type(1) {
				color: #FA8C16 !important;
			}

			>view:nth-of-type(2) {
				background-color: #FA8C16 !important;
			}
		}

		>view {
			width: 50%;
			height: 80upx;
			display: flex;
			align-items: center;
			justify-content: center;
			flex-direction: column;
			border-bottom: 1upx solid #EEEEEE;

			&:nth-of-type(1) {
				border-right: 1upx solid #EEEEEE;
			}

			>view:nth-of-type(1) {
				font-size: 34upx;
				color: #092C4D;
			}

			>view:nth-of-type(2) {
				width: 58upx;
				height: 8upx;

				margin-top: 10upx;
				border-radius: 20upx;
			}
		}
	}

	.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: 75vh;
		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>