<template>
	<view class="uni-column" style="height: 100%; background-color: #f5f5f5;">
		<view class="box-bg uni-row">
			<view class="input-view uni-row">
				<uni-icons class="input-uni-icon" type="search" size="18" color="#999" />
				<input class="nav-bar-input" type="text" v-model="keywords" placeholder="请输入批次号" />
			</view>
			<view class="search" @click="handleSearch">
				搜索
			</view>
		</view>
		<view class="scroll-container">
			<view v-if="listData.length == 0" style="color: #999;margin: 50% auto;">
				<text>暂无批次</text>
			</view>
			<!-- 批次列表 -->
			<view v-else v-for="(item, index) in listData" :key="index" class="list-item"
				@click="handleToreportingForWork(item)">
				<view class="title-container uni-row" style="justify-content: flex-start;">
					<view class="title uni-row">
						<text class="label">批次号:</text>
						<text class="label code">{{ item['lotCode'] }}</text>
					</view>
					<view class=" uni-row" style="margin-left: 16rpx;">
						<view v-if="item['status'] == 1" class="tag"><text class="label">进行中</text></view>
						<view v-else-if="item['status'] == 3" class="tag turnover "><text class="label">周转中</text>
						</view>
						<view v-else-if="item['status'] == 2" class="tag turnover "><text class="label">待周转</text>
						</view>
						<view v-else-if="item['status'] == 0" class="tag finished "><text class="label">未开始</text>
						</view>
						<view v-else-if="item['status'] == 4" type="default finished" class="tag finished"><text
								class="label">已完成</text></view>
					</view>
				</view>
				<view class="item-info uni-row">
					<text class="label">产品描述</text>
					<text class="label right">{{ curPlan['productDescription'] }}</text>
				</view>
				<view class="item-info uni-row">
					<text class="label">材质</text>
					<text
						class="label right">{{ item['furnaceNoInfo'] ? item['furnaceNoInfo'].firstTechnicalRequirement + ";" + item['furnaceNoInfo'].secondTechnicalRequirement : '-' }}</text>
				</view>
				<view class="item-info uni-row">
					<text class="label">箱号</text>
					<text class="label right">{{ item['carrierName'] ? item['carrierName'] : '-' }}</text>
				</view>
				<!-- 			<view class="item-info uni-row">
					<text class="label">总工时</text>
					<text class="label right">{{ item['totalWorkingHours']}}</text>
				</view> -->
				<view class="item-info uni-row">
					<text class="label">投入数</text>
					<text
						class="label right">{{item['processQualifiedNum'] == 0 ? item['oneLotQuantity'] : item['processQualifiedNum']}}</text>
				</view>
				<view class="item-info uni-row">
					<text class="label">上道工序</text>
					<text class="label right">{{ item.prevProcess ? item['prevProcess'].processAlias : '-'}}</text>
				</view>
				<view class="item-info uni-row">
					<text class="label">当前工序</text>
					<text
						class="label right">{{ item.currentProcess ? item.prevProcess && item['currentProcess'].processAlias == item['prevProcess'].processAlias ? '-' : item['currentProcess'].processAlias : '-'}}</text>
				</view>
				<view class="item-info uni-row">
					<text class="label">下道工序</text>
					<view class="label right uni-row">{{ item.nextProcess ? item['nextProcess'].processAlias : '-' }}
						(<view style="color:  #1684fc;" @click.stop="handleClickProcessList(item)">&nbsp;工艺列表&nbsp;
						</view>)
					</view>
				</view>
				<!-- 		<view class="item-info uni-row">
					<text class="label">设备</text>
					<text class="label right">{{ curPlan['equipmentName'] }}</text>
				</view> -->
				<view v-if="notPreProcess" class="item-info uni-row">
					<text class="label">所在区域</text>
					<text class="label right">{{ item['place'] ? item['place'] : '-' }}</text>
				</view>
				<view class="status-btn uni-row">
					<view v-if="item['status'] == 2" class=" uni-row">
						<button class="turnover-tag" size="mini"
							@click.stop="handleShowTurnoverApplication(item)">周转申请</button>
						<!-- <button class="reporting-tag" size="mini" @click="handleToreportingForWork">去报工</button> -->
					</view>
					<view v-else-if="item['status'] == 3" class=" uni-row">
						<button class="turnover-tag" size="mini" @click.stop="handleCancelTurnover(item)"
							style="background-color: rgba(255, 85, 85, 1);">取消周转</button>
					</view>
				</view>
			</view>
		</view>
		<!-- 抽屉 -->
		<view>
			<uni-drawer ref="showRight" mode="right" :mask-click="true">
				<view class="scroll-view">
					<scroll-view class="scroll-view-box" scroll-y="true">
						<view style="width: 100%;text-align: center;;font-size: 48rpx;margin: 48rpx 0 24rpx 0;">工艺列表</view>
						<view style="font-size: 24rpx;width: 100%;text-align: center;color: red;margin-bottom: 48rpx;">仅显示当前工艺后面工艺</view>
						<view class="info-content" v-for="(item,index) in curProcessAfte" :key="index"
						style="width: 100%;margin: 8rpx 0 8rpx 30%;"
						>
							<text>{{ index + 1 }}.{{item.processAlias}}</text>
						</view>
					</scroll-view>
				</view>
			</uni-drawer>
		</view>
		<!-- 		<view v-if="bottomStatus" class="bottom uni-row">
			<button class="start-batch-btn" type="primary" @click="handleStartNewBatch">开始新批次</button>
		</view>
		<view v-if="!bottomStatus" class="bottom uni-row">
			<button class="start-batch-btn" type="primary" @click="handleScanCode">扫一扫开始新批次</button>
		</view> -->
		<view class="bottom uni-row">
			<button v-if="bottomStatus" class="start-batch-btn" style="margin-right: 10rpx;" type="primary"
				@click="handleStartNewBatch">开始新批次</button>
			<button class="start-batch-btn" style="margin-right: 10rpx;" type="primary"
				@click="handleScanCode">扫码开始批次</button>
			<button class="start-batch-btn" type="primary" @click="handleSearchCode">查箱号</button>
		</view>
		<dialog-lot ref="lotDialog" @submit="handleDoIt" />
		<dialog-turnoverApplication ref="turnoverApplicationDialog" @confirm="handleDoTurnoverAfter" />
		<dialog-selectProduction ref="selectProduction"></dialog-selectProduction>
	</view>

</template>

<script setup>
	import {
		reactive,
		ref
	} from 'vue'
	import {
		onLoad,
		onReady,
		onUnload,
		onShow
	} from '@dcloudio/uni-app'
	import {
		getDayWorkList,
		showDaywork,
		showDayworkSave,
		turnoverDelete
	} from '@/api/business/dayWork.js'
	import {
		store
	} from '@/store/index.js'
	import {
		toHHmmss
	} from '@/utils/common.js'


	const turnoverApplicationDialog = ref(null)
	const selectProduction = ref(null)
	const lotDialog = ref(null)
	const listData = ref([])
	const curPlan = ref(null)
	const bizDayworkObj = ref({})
	const bottomStatus = ref(false) // 底部按钮显示
	const reqParam = ref(null);
	const curDayworkItem = ref({}) // 当前报工记录,回显是否显示取消周转的状态	
	const keywords = ref(null)
	const notPreProcess = ref(true)
	const curProcessAfte = ref([])
	const showRight = ref(null) // 抽屉

	onLoad(() => {
		curPlan.value = store.planDetails;
		console.log(curPlan.value)
		if (store.planDetails.requisitionDepartmentId == store.curDeptDetails.deptId) {
			bottomStatus.value = true;
			store.isPreProcess = true;
		} else {
			bottomStatus.value = false;
			store.isPreProcess = false;
		}
		console.log(bottomStatus.value)

		//init(store.planDetails.id);
		// uni.$on('batchReporting-addBatch', () => {
		// 	init(store.planDetails.id);
		// })
		// uni.$on('dayworkItemUpdate', reflush)
		uni.$on('bathReportingReflush', reflush)
	})

	onUnload(() => {
		// uni.$off('dayworkItemUpdate', reflush);
		// uni.$off('bathReportingReflush', reflush);
	})

	onShow(() => {
		reflush();
	})

	function reflush() {
		init(store.planDetails.id);
	}

	function handleShowTurnoverApplication(data) {
		let _data = data ?? {}
		// 调用子组件中的方法
		turnoverApplicationDialog.value.open(_data)
	}

	function handleStartNewBatch() {
		uni.navigateTo({
			url: "/pages/addNewBatch/index"
		})
	}

	function init(id) {
		uni.showLoading({
			title: '加载中'
		});
		let reqData = {
			productionPlanDetailId: id,
			deptId: store.curDeptDetails.deptId,
			keywords: keywords.value
		};

		getDayWorkList(reqData).then(res => {
			if (res.code == 200) {
				listData.value = res.data;

				// 计算总工时
				// for (let i = 0; i < listData.value.length; i++) {
				// 	listData.value[i].totalWorkingHours = 0;
				// 	if (listData.value[i].dayworkItemList) {
				// 		for (let j = 0; j < listData.value[i].dayworkItemList.length; j++) {
				// 			if (listData.value[i].dayworkItemList[j].status == 2 || listData.value[i].dayworkItemList[
				// 					j].status == 3) {
				// 				listData.value[i].totalWorkingHours += Number(listData.value[i].dayworkItemList[j]
				// 					.workingHours);
				// 			}
				// 		}
				// 		listData.value[i].totalWorkingHours = toHHmmss(listData.value[i].totalWorkingHours);
				// 	}
				// }

				console.log(res)
				uni.hideLoading();
			} else {
				uni.hideLoading();
			}
		})
	}

	function handleSearch() {
		init(store.planDetails.id);
	}

	function handleToreportingForWork(item) {
		store.dayworkInfo = item
		uni.navigateTo({
			url: "/pages/reportingForWork/index"
		})
	}

	function handleClickProcessList(item) {
		let curProcessAfterList = [];
		let nextIndex = 0;
		for (let i = 0; i < item.processSequence.length; i++) {
			if (item.nextProcess.id == item.processSequence[i].id) {
				nextIndex = i;
			}
		}
		for (let i = 0; i < item.processSequence.length; i++) {
			if (i >= nextIndex) {
				curProcessAfterList.push(item.processSequence[i]);
			}
		}
		console.log(curProcessAfterList)
		curProcessAfte.value = curProcessAfterList;
		showRight.value.open();
	}
	

	function handleSearchCode() {
		selectProduction.value.open();
	}

	function handleScanCode() {
		uni.scanCode({
			scanType: ['qrCode'],
			onlyFromCamera: true, // 只允许相机扫码
			autoZoom: false,
			success: function(res) {
				console.log(res.result)
				let vehicleObj = JSON.parse(res.result);
				if (!vehicleObj.carrierId || vehicleObj.carrierId == "") {
					uni.showToast({
						icon: "error",
						title: "请扫载具码",
						duration: 1000
					})
					return;
				}
				showDaywork({
					carrierId: vehicleObj.carrierId,
					status: 7
				}).then(response => {
					if (response.code == 200) {
						console.log(response)
						console.log(response.data[0].productionPlanDetailId)
						console.log(store.planDetails.id)
						if (response.data[0].productionPlanDetailId == store.planDetails.id) {
							console.log(response.data)
							lotDialog.value.open(response.data);
						} else {
							uni.showToast({
								icon: 'none',
								title: '该批次不在此计划单内',
								duration: 2000
							})
						}
					}
				})
			}
		});
	}

	function handleAddDaywork(data) {
		console.log(data)
		let reqParam = [];
		for (var i = 0; i < data.length; i++) {
			reqParam.push(data[i].daywork)
		}
		console.log(data)
		showDayworkSave(reqParam).then(res => {
			console.log(res)
			init(store.planDetails.id);
		})
	}

	function handleDoIt(data) {
		handleAddDaywork(data);
	}

	function handleDoTurnoverAfter() {
		init(store.planDetails.id);
	}

	function handleCancelTurnover(data) {
		turnoverDelete(data).then(res => {
			if (res.code == 200) {
				uni.showToast({
					icon: "success",
					title: "取消成功",
					duration: 2000
				})
				init(store.planDetails.id);
			} else {
				uni.showToast({
					icon: "fail",
					title: "取消失败",
					duration: 2000
				})
			}
		})
	}
</script>

<style lang="scss">
	$nav-height: 60rpx;

	.box-bg {
		width: 94%;
		background-color: #F5F5F5;
		padding: 5rpx 16rpx;
		justify-content: space-around;
		align-items: center;
		margin: 24rpx auto 0;

		.input-view {
			width: 100%;
			flex: 4;
			background-color: #f8f8f8;
			height: $nav-height;
			border: 1rpx solid #999;
			border-radius: 15rpx;
			padding: 0 15rpx;
			flex-wrap: nowrap;
			margin: 0 10rpx 0;
			line-height: $nav-height;

			.input-uni-icon {
				line-height: $nav-height;
			}

			.nav-bar-input {
				width: 80%;
				height: $nav-height;
				line-height: $nav-height;
				padding: 0 5rpx;
				background-color: #f8f8f8;
			}
		}

		.search {
			width: 20%;
			text-align: center;
			color: #808080;
		}
	}

	.scroll-container {
		width: 92%;
		margin: 24rpx auto 0 auto;
		height: calc(90% - 100rpx);
		overflow: auto;
	}

	.list-item {
		background-color: #fff;
		position: relative;
		padding: 16rpx;
		padding-bottom: 24rpx;
		margin-bottom: 24rpx;
		border-radius: 24rpx;

		.title-container {

			margin-top: 8rpx;
			margin-bottom: 16rpx;

			.title {
				height: 48rpx;
				align-items: center;

				.label {
					font-size: 32rpx;
					font-weight: bold;

					&.code {
						margin-left: 8rpx;
					}
				}
			}

			.tag {
				border: 1px solid #1CE5B0;
				background-color: #F6FFFD;
				padding: 8rpx;
				border-radius: 8rpx;

				.label {
					color: #1CE5B0;
					font-size: 24rpx;
				}

				&.finished {
					border: 1px solid #BBBBBB;
					background-color: #F5F5F5;

					.label {
						color: #BBBBBB;
					}
				}

				&.turnover {
					border: 1px solid #FF7901;
					background-color: #F6FFFD;

					.label {
						color: #FF7901;
					}
				}
			}
		}

		.item-info {
			margin-bottom: 8rpx;

			.label {
				font-size: 28rpx;
				width: 220rpx;
				color: #808080;

				&.right {
					flex: 1;
					color: #000000;
				}
			}
		}

		.status-btn {
			justify-content: flex-end;
			align-items: center;

			.turnover-tag {
				padding-right: 12rpx;
				padding-left: 12rpx;
				border-radius: 8rpx;
				border: 1rpx solid #FF7901;
				background-color: #FF7901;
				font-size: 28rpx;
				color: #FFFFFF;

			}

			.reporting-tag {
				padding-right: 12rpx;
				padding-left: 12rpx;
				border-radius: 8rpx;
				margin-left: 16rpx;
				border: 1rpx solid #1684fc;
				background-color: #1684fc;
				font-size: 28rpx;
				color: #FFFFFF;

			}
		}
	}

	.bottom {
		height: 10%;
		position: fixed;
		right: 0;
		bottom: 0;
		left: 0;
		height: 100rpx;
		border-top: 1px solid #999999;
		padding: 16rpx 32rpx;
		align-items: center;
		background-color: #fff;
		justify-content: space-evenly;

		.start-batch-btn {
			flex: 1;
			height: 80rpx;
			line-height: 80rpx;
			border-radius: 8rpx;
			color: #FFFFFF;
			font-size: 28rpx;
		}
	}
</style>