<template>
	<BasicContainer ref="basicContainer" :option="option" :leftClick="backPreviousPage">
		<template #head>
			<view class="schbox">
				<view>拣货日期：</view>
				<view @click='showCalendar' class="inputsr">
					<view class="timeInput">
						{{datatime|| '请选择时间'}}
					</view>
					<view @click.stop.prevent>
						<u-icon @click='showCalendar' 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>
			<view class="tabtip">
				<view @click="setstate(1)">
					<view :class="status==1?'xz':''">未发车</view>
				</view>
				<view @click="setstate(2)">
					<view :class="status==2?'xz':''">已发车</view>
				</view>
			</view>
		</template>

		<template #body>
			<scroll-view class="sccv" scroll-y="true" @scrolltolower="jiazai">
				<view class="mabx">
					<view v-for="item in dataList" :key="item">
						<view class="topbox font-color">
							<view class="type1">
								<view>
									<text>车次号：</text>
									<text>{{item.carsNo}}</text>
								</view>
								<view>
									<text>车牌：</text>
									<text>{{item.carNumber}}</text>
								</view>
							</view>
							<view class="type1">
								<view>
									<text>总件数/装车件数：</text>
									<text>{{item.planLoadingNumber + '/' + item.realLoadingNumber}}</text>
								</view>
								<view>
									<text>车长：</text>
									<text>{{''}}</text>
								</view>
							</view>
							<view class="type1">
								<view>
									<text>主驾司机：</text>
									<text>{{item.driverName}}</text>
								</view>
								<view>
									<text>电话：</text>
									<text>{{item.driverMobile}}</text>
								</view>
							</view>
							<view>
								<text>类型：</text>
								<text>{{details.loadType[item.loadType]}}</text>
							</view>
							<view>
								<text>线路：</text>
								<text>{{item.carsLineName}}</text>
							</view>
						</view>

						<view class="bts" v-if="status!==2">
							<view @click="gostockuplistBytray(item)">
								整托装车
							</view>
							<view @click="gostockuplist(item)">
								按件装车
							</view>
						</view>
					</view>
				</view>
			</scroll-view>
		</template>
	</BasicContainer>
	<tips ref="tip"></tips>
	<l-calendar v-model:value="show" :initStartDate='date[0]' :initEndDate='date[1]' @hide='showCalendar'
		@change="onConfirm"></l-calendar>
</template>

<script lang="ts" setup>
	import {
		onLoad,
		onShow,
		onHide,
		onUnload,
		onPullDownRefresh
	} from '@dcloudio/uni-app'
	import { postCarsLoadPageList } from '@/api/user.js'
	import { timeType } from '@/interfaces/pagesHome/allType'
	import { inject, reactive, ref, toRefs, watchEffect } from "vue";
	import utils from '@/utils/utils';
	const option = {
		title: '配载装车',
		haveData: true,
		async pullDownRefreshInitPage() {
			// details.dataList.splice(0)
			return await init()
		}
	}
	let details = reactive({
		datatime: '',
		/** 页面渲染数组 */
		dataList: [],
		/** 未发车数据 */
		NoTrainData: [],
		/** 已发车数据 */
		HaveLeftnData: [],
		show: false,
		pageNum: 1,
		size: 10,
		stockupDate: '',
		status: 1,
		loadType: {
			'1': '干线',
			'2': '支线',
			'3': '专车',
		}
	})

	// 初始化页面展示未发车数据
	details.dataList = details.NoTrainData

	let tip = ref(null)
	const basicContainer = ref(null)
	const date = ref<number | string[]>([])
	function showCalendar() {
		details.show = !details.show
	}
	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]

		basicContainer.value.startPullDownRefresh()
	}

	onShow(() => {
		// #ifdef APP
		uni.$off('scancodedate')
		// #endif
		const timer = setTimeout(() => {
			basicContainer.value.startPullDownRefresh()
			clearTimeout(timer)
		}, 200)
	})
	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.datatime = date.value[0] + ' 至 ' + date.value[1]
		// #ifdef APP
		utils.ttsspke('请选择配载计划')
		// #endif
	})
	async function init() {
		details.pageNum = 1
		details.dataList.splice(0)
		return initpage()
	}
	function jiazai() {
		details.pageNum++
		initpage()
	}
	async function initpage() {
		if (date.value.length === 0) {
			return uni.showToast({
				title: '请选择拣货日期',
				icon: 'none'
			})
		}

		try {
			uni.showLoading({
				title: '数据加载中',
				mask: true
			})
			let data = {
				pageNum: details.pageNum,
				pageSize: details.size,
				startDate: date.value[0],
				endDate: date.value[1],
				type: details.status,
			}
			let response = await postCarsLoadPageList(data)
			if (response.code !== 200 || !response.data) return

			if (details.pageNum > 1) {
				if (response.data.records.length == 0) {
					uni.showToast({
						title: '已经到底了。',
						icon: 'none'
					})
					details.pageNum--
				}
			}

			if (data.type === 1) {
				for (let item of response.data.records) {
					details.NoTrainData.push(item)
				}
			} else {
				for (let item of response.data.records) {
					details.HaveLeftnData.push(item)
				}
			}
		} catch (err) {
			console.log('err :>> ', err);
			//TODO handle the exception
		} finally {
			uni.hideLoading()
			return null
		}
	}

	function checktime(event : timeType) {
		console.log(event);
		details.datatime = (uni as any).$u.timeFormat(event.value, 'yyyy-mm-dd');
		details.show = false
		console.log(details.datatime);
	}
	/** 按件装车 */
	function gostockuplist(item : any) {
		uni.navigateTo({
			url: '/pagesHome/pages/StowageListDetails/StowageListDetails?id=' + item.id + '&type=' + 1
		})
	}
	/** 按托装车 */
	function gostockuplistBytray(item : any) {
		uni.navigateTo({
			url: '/pagesHome/pages/StowageListDetails/StowageListDetails?id=' + item.id + '&type=' + 2
		})
	}
	function cleartime() {
		// console.log(1231211);
		details.datatime = ''
		date.value = []
		basicContainer.value.startPullDownRefresh()
	}
	function setstate(state : number) {
		details.status = state
		details.dataList = state === 1 ? details.NoTrainData : details.HaveLeftnData
		basicContainer.value.startPullDownRefresh()
	}

	// 返回上一级页面
	function backPreviousPage() {
		uni.reLaunch({
			url: '/pages/index/index'
		})
	}

	const { datatime, dataList, show, status } = toRefs(details)
</script>

<style lang="scss" scoped>
	.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;

		>.timeInput {
			overflow: hidden;
			text-overflow: ellipsis;
			white-space: nowrap;
			flex: 1;
			font-size: 26upx;
		}
	}

	.sccv {
		width: 100%;
		height: 74vh;
		margin-top: 20upx;

		.mabx {
			display: flex;
			flex-direction: column;
			align-items: center;
			width: 100%;
			box-sizing: border-box;
			padding: 20upx;
			padding-top: 0upx;

			>view {
				width: 100%;
				background: #FFFFFF;
				display: flex;
				flex-direction: column;
				box-sizing: border-box;
				border-bottom: 1upx solid #ebebeb;
				// padding-bottom: 30upx;
				background-color: #ffffff;
				// margin-bottom: 20upx;
				// padding-top: 20upx;
				border-radius: 8upx;

				>view:nth-last-child(1) {
					border-bottom: none !important;
				}

				.topbox {
					display: flex;
					flex-direction: column;
					padding: 24upx;
					border-bottom: 2upx solid #EEEEEE;

					>.type1 {
						width: 100%;
						display: flex;
						align-items: center;
						justify-content: space-between;
						margin-bottom: 20upx;
						zoom: 0.9;

						>view {
							width: 50%;
						}
					}

					>.type2 {
						width: 100%;
						display: flex;
						align-items: center;
						justify-content: space-around;
						margin-bottom: 15upx;
						font-size: 28upx;
						color: #161616;
						margin-top: 20upx;

						>view {
							display: flex;
							flex-direction: column;
							align-items: center;

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

							&:nth-of-type(1) {
								>view:nth-of-type(2) {
									color: #092C4D;
								}
							}

							&:nth-of-type(2) {
								>view:nth-of-type(2) {
									color: #3AD8BC;
								}
							}

							&:nth-of-type(3) {
								>view:nth-of-type(2) {
									color: #FA8C16;
								}
							}

							>view:nth-of-type(2) {
								font-size: 36upx;
								margin-top: 10upx;

							}
						}
					}

					>.type3 {
						width: 100%;
						display: flex;
						align-items: center;
						justify-content: space-between;
						margin-bottom: 20upx;
						font-size: 26upx;
						color: #161616;
					}
				}

				>.bts {
					display: flex;
					align-items: center;
					justify-content: center;
					margin: 20upx 0;

					>view {
						border-radius: 8upx;
						background: #FFFFFF;
						opacity: 1;
						border: 2upx solid #0086F1;
						display: flex;
						align-items: center;
						justify-content: center;
						font-size: 28upx;
						font-weight: 400;
						padding: 10upx 30upx;
						color: #0086F1;
					}

					>view:nth-of-type(2) {
						border-color: var(--subjectColor);
						color: var(--subjectColor);
						margin-left: 100upx;
					}
				}
			}
		}
	}

	.tabtip {
		display: flex;
		align-items: center;
		justify-content: space-between;

		>view {
			width: 50%;
			display: flex;
			align-items: center;
			justify-content: center;
			background-color: #ffffff;
			font-size: 32upx;
			font-weight: 400;
			color: #90A0AF;

			>view {
				height: 80upx;
				border-bottom: 8upx solid #ffffff;
				display: flex;
				align-items: center;
				justify-content: center;
			}
		}

		.xz {
			color: var(--subjectColor);
			border-bottom: 8upx solid var(--subjectColor);
			// border-radius: 5upx;
		}
	}

	.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: var(--subjectColor);
			border-radius: 8upx;
			display: flex;
			align-items: center;
			justify-content: center;
			font-size: 32upx;
			font-weight: 400;
			color: #FFFFFF;
		}
	}

	.font-color {
		// color: #90A0AF;
		font-size: 28upx;
	}
</style>