<template>
	<view class="page-container uni-column">
		<view class="consultation-container uni-column">
			<view class="info-row uni-row">
					<view class="label">批次号</view>
					<view class="value">{{ lot.lotCode }}</view>
				</view>
				<view class="info-row uni-row">
					<view class="label">图号</view>
					<view class="value">{{ lot.drawingNumber }}</view>
				</view>
				<view class="info-row uni-row">
					<view class="label">工艺版本</view>
					<view class="value">{{ lot.technologyVersion }}</view>
				</view>
				<view class="info-row uni-row">
					<view class="label">产品描述</view>
					<view class="value">{{ lot.productDescription }}</view>
				</view>
				<view class="info-row uni-row">
					<view class="label">当前工序</view>
					<view class="value">{{ lot.processAlias }}</view>
				</view>
				<view class="info-row uni-row">
					<view class="label">当前工段</view>
					<view class="value">{{ lot.deptName }}</view>
				</view>
				<view class="info-row uni-row" style="margin-top: 40rpx;">
						<view class="label">操作者</view>
						<view class="value">	
						<uni-data-select v-model="userId" :localdata="userList"
						:clear="false" @change="handleGetEquipmentList"
						style="margin: 0 0 0 16rpx;outline: 2rpx solid #999999;border-radius: 10rpx;"></uni-data-select>
				</view>
					</view>
				<view class="info-row uni-row" style="margin-top: 40rpx;">
					<view class="label">加工设备</view>
					<view class="value">	
					<uni-data-select v-model="equipment" :localdata="equipmentList"
					:clear="false"
					style="margin: 0 0 0 16rpx;outline: 2rpx solid #999999;border-radius: 10rpx;"></uni-data-select>
			</view>
				</view>
			<view class="info-row uni-row">
				<view class="label">所有箱号</view>
				<view class="value">{{ lot.allCarrierName }}</view>
			</view>
			<view class="info-row uni-row">
				<view class="label">巡检箱号</view>
				<view class="value">{{ lot.inspectionCarrierCode }}</view>
			</view>
			<!-- <input type="text" v-model="carrierCode" placeholder="请输入箱号" /> -->
			<view class="btn uni-row" style="background-color: #ff5555;" @click.stop="handleScanCode">
				<uni-icons type="scan" size="16" style="color: #ffffff; margin-right: 8rpx;" />
				<text>扫描箱码及检测箱码</text>
			</view>
			<view class="btn uni-row" style="margin-top: 48rpx;" @click.stop="handleConfirm">确定</view>
		</view>
		<dialog-processInspection ref='selectProcessInspection'
			@handleSelectProcessInspection='handleSelectProcessInspection'></dialog-processInspection>
	</view>
</template>

<script setup>
	import {
		ref
	} from 'vue'
	import {
		onLoad,
		onReady,
		onUnload,
		onShow
	} from '@dcloudio/uni-app'
	import {
		getPatrolLotInfo,
		getCarrierInfoProcess,
		getCarrierInfo,
	} from '@/api/business/processInspection.js'
	import {
		debounce
	} from '../../utils/common';
	import {
		store
	} from '../../store';
	const carrierCode = ref('')
	const equipmentList = ref([])
	const userList = ref([])
	const userId = ref(null)
	const equipment = ref(null)
	const lot = ref({})
	const query = ref({})
	const selectProcessInspection = ref(null)


	// 页面生命周期函数
	onLoad(() => {})
	const handleScanCode = () => {
	// 引入原生插件
		const mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module");
		if (mpaasScanModule) {
			// 调用插件的 mpaasScan 方法
			mpaasScanModule.mpaasScan({
					// 扫码识别类型，参数可多选，qrCode、barCode，
					// 如不设置，默认识别所有扫码类型，可能有些许影响识别效率
					scanType: ["qrCode", "barCode"],
					// 是否隐藏相册，默认false不隐藏
					hideAlbum: false,
				},
				(ret) => {
					console.log(ret)
					const result = {
						carrierCode: ret.resp_result,
						processCode: '',
		               deptId : store.curDeptDetails.deptId
					}
					if (!result.carrierCode || result.carrierCode == "") {
						uni.showToast({
							icon: "none",
							title: "请扫载具码",
							duration: 1000
						})
						return
					}
					//判断该箱是否绑定批次

					result.processCode = store.outsourcedCode;
					// console.log(result.processCode)
					/************************ 根据扫码查询到的数据和需要检查的工序查询信息 ************************/
					getCarrierInfo(result).then(response => {
						if (response.code == 200) {
							// 判断是哪种返回值 假设是想信息则给lot附检查箱信息
							// 假设是dayworkCarriers 则 判断是几个批次，假设为多批，则弹出选择框。
						if (response.data.dayworkCarriers != null) {
								if (response.data.dayworkCarriers.length > 1) {
									query.value = result;
									selectProcessInspection.value.open(response.data.dayworkCarriers)
								} else {
									// console.log(response)
									uni.showLoading({
										title: '加载中'
									});
									// 此处根据拿到的箱子id， 获取到相对应的【 lot_id】，【 lot_code】， 以及该批次关联的其它箱号
									// 需要定义一个请求方法， 从后端获取
									result.deptId = store.curDeptDetails.deptId
									getPatrolLotInfo(result).then(res => {
										if (res.code == 200) {
											console.log(res)
											
											if(res.data.dayworkItemList.length == 0) {
												uni.showToast({
													icon: 'none',
													title: "该批次本日没有可进行巡检的报工",
													duration: 2000
												})
											}else{
												getUser(res.data.dayworkItemList)
												getEquipment(res.data.dayworkItemList)	
																lot.value = {
																	...lot.value,
																	...res.data
																};	
											lot.value.carrierCode = result.carrierCode
											carrierCode.value = result.carrierCode;
											// console.log("res", res);
											uni.hideLoading();
											// 判断是否批次号和检查箱码都扫完
											checkSave()
											}
										} else {
											uni.showToast({
												icon: 'none',
												title: res.msg,
												duration: 2000
											})
										}
									}).catch(err => {
										uni.showToast({
											icon: 'none',
											title: err.message,
											duration: 2000
										})
									})
						
								}
							} else if (response.data.inspectionCarrier != null) {
								console.log(response)
								lot.value.inspectionCarrierCode = response.data.inspectionCarrier.code
								lot.value.inspectionCarrierId = response.data.inspectionCarrier.id
								// 判断是否批次号和检查箱码都扫完
								checkSave()
							}
						} else {
							uni.showToast({
								icon: 'none',
								title: response.msg,
								duration: 2000
							})
						}
					}).catch(err => {
						uni.showToast({
							icon: 'none',
							title: err.message,
							duration: 2000
						})
					})
				}
			)
		} else {
			const result = {
				carrierCode: '000493',
				deptId : store.curDeptDetails.deptId
			}
			getCarrierInfo(result).then(response => {
				if (response.code == 200) {
					// 判断是哪种返回值 假设是想信息则给lot附检查箱信息
					// 假设是dayworkCarriers 则 判断是几个批次，假设为多批，则弹出选择框。
					if (response.data.dayworkCarriers != null) {
						if (response.data.dayworkCarriers.length > 1) {
							query.value = result;
							query.value.deptId = store.curDeptDetails.deptId
							selectProcessInspection.value.open(response.data.dayworkCarriers)	
										
						} else {
		
							// console.log(response)
							uni.showLoading({
								title: '加载中'
							});
							// 此处根据拿到的箱子id， 获取到相对应的【 lot_id】，【 lot_code】， 以及该批次关联的其它箱号
							// 需要定义一个请求方法， 从后端获取
							
							getPatrolLotInfo(result).then(res => {
								if (res.code == 200) {
									console.log(res)
									
									if(res.data.dayworkItemList.length == 0) {
										uni.showToast({
											icon: 'none',
											title: "该批次本日没有可进行巡检的报工",
											duration: 2000
										})
									}else{
										console.log("888")
										getUser(res.data.dayworkItemList)
										getEquipment(res.data.dayworkItemList)	
														lot.value = {
															...lot.value,
															...res.data
														};	
									lot.value.carrierCode = result.carrierCode
									carrierCode.value = result.carrierCode;
									lot.value.inspectionCarrierId = '1803605009554784261'
									lot.value.inspectionCarrierCode = "300053"
									// console.log("res", res);
									uni.hideLoading();
									// 判断是否批次号和检查箱码都扫完
									checkSave()
									}
								} else {
									uni.showToast({
										icon: 'none',
										title: res.msg,
										duration: 2000
									})
								}
							}).catch(err => {
								uni.showToast({
									icon: 'none',
									title: err.message,
									duration: 2000
								})
							})

						}
					} else if (response.data.inspectionCarrier != null) {
						console.log(response)
						lot.value.inspectionCarrierCode = response.data.inspectionCarrier.code
						lot.value.inspectionCarrierId = response.data.inspectionCarrier.id
						// 判断是否批次号和检查箱码都扫完
						checkSave()
					}
				} else {
					uni.showToast({
						icon: 'none',
						title: response.msg,
						duration: 2000
					})
				}
			}).catch(err => {
				uni.showToast({
					icon: 'none',
					title: err.message,
					duration: 2000
				})
			})
		}
		
	}
	function checkSave() {
		if (lot.value.lotCode == '' || lot.value.lotCode == null) {
			debounce(handleScanCode, 700)
		}
		if (lot.value.inspectionCarrierId == null || lot.value.inspectionCarrierId == '') {
			debounce(handleScanCode, 700)
		}
	}
	function handleGetEquipmentList() {
		getEquipment(lot.value.dayworkItemList)
	}

	function getEquipment(data) {
		const uniqueEquipmentMap = new Map();
		console.log(userId.value)
		let filterList = data.filter(info => info.userId == userId.value)
		console.log(filterList)
		filterList.forEach(item => {
		  // 检查 Map 中是否已经有这个 equimentDetailId
		  if (!uniqueEquipmentMap.has(item.equipmentDetailId)) {
		    // 如果没有，添加到 Map 中
		    uniqueEquipmentMap.set(item.equipmentDetailId, {
		      value: item.equipmentDetailId,
		      text: item.equipmentDetailCode
		    });
		  }
		});
		// 将 Map 的值转换为数组
		equipmentList.value = Array.from(uniqueEquipmentMap.values());
		equipment.value = equipmentList.value[0].value
	}
	function getUser(data) {
		
		const uniqueUserMap = new Map();
		console.log(data)
		data.forEach(item => {
		  // 检查 Map 中是否已经有这个 equimentDetailId
		  if (!uniqueUserMap.has(item.userId)) {
		    // 如果没有，添加到 Map 中
		    uniqueUserMap.set(item.userId, {
		      value: item.userId,
		      text: item.nickName
		    });
		  }
		});
		console.log(uniqueUserMap)
		// 将 Map 的值转换为数组
		userList.value = Array.from(uniqueUserMap.values());
		console.log(userList.value)
		userId.value = userList.value[0].value
	}
	//选择批号弹窗带回
	function handleSelectProcessInspection(data) {
		console.log("带回", data)
		query.value.lotCode = data
		uni.showLoading({
			title: '加载中'
		});
		
	getLotInfo(query.value).then(res => {
		if (res.code == 200) {
			console.log(res)
			
			if(res.data.dayworkItemList.length == 0) {
				uni.showToast({
					icon: 'none',
					title: "该批次当天没有报工",
					duration: 2000
				})
			}else{
				console.log("888")
				getUser(res.data.dayworkItemList)
				getEquipment(res.data.dayworkItemList)	
								lot.value = {
									...lot.value,
									...res.data
								};	
			lot.value.carrierCode = query.value.carrierCode
			carrierCode.value = query.value.carrierCode;
			// console.log("res", res);
			uni.hideLoading();
			// 判断是否批次号和检查箱码都扫完
			checkSave()
			}
		} else {
			uni.showToast({
				icon: 'none',
				title: res.msg,
				duration: 2000
			})
		}
	}).catch(err => {
		uni.showToast({
			icon: 'none',
			title: err.message,
			duration: 2000
		})
	})
	}

	//确定后，将批次id，批次号，传递过去
	const handleConfirm = () => {
		console.log(lot.value)
		if(lot.value.allCarrierName !=undefined && lot.value.inspectionCarrierId !=undefined){
			lot.value.equipmentDetailId = equipment.value
			lot.value.equipmentDetailCode = equipmentList.value[equipmentList.value.findIndex(item =>item.value == equipment.value)].text
			lot.value.userId = userId.value
			lot.value.nickName = userList.value[userList.value.findIndex(item =>item.value == userId.value)].text
			store.processInspection = null
			uni.navigateTo({
						url: "/pages/onSiteInspection/form",
						success: (res) => {
							// 通过eventChannel向被打开页面传送数据
							res.eventChannel.emit("onSiteInspectionFrom", {
								data: lot.value
							})
						}
					})
		} else {
			if(lot.value.allCarrierName == undefined){
			uni.showToast({
				icon: 'none',
				title: "请扫描箱码",
				duration: 2000
			})
			}else if(lot.value.allCarrierName != undefined && lot.value.inspectionCarrierId == undefined) {
				uni.showToast({
					icon: 'none',
					title: "请扫描检测载具",
					duration: 2000
				})
			}
		
			return;
		}


	}
</script>

<style lang="scss">
	.page-container {
		height: 100%;
		background-color: #ececec;
		font-size: 28rpx;
		padding: 24rpx;
		box-sizing: border-box;
	}

	.consultation-container {
		background-color: #ffffff;
		padding: 24rpx;
		border-radius: 12rpx;

		.title {
			justify-content: center;
			font-size: 32rpx;
			font-weight: 700;
		}

		.info-row {
			margin-top: 24rpx;

			.label {
				width: 160rpx;
			}

			.value {
				flex: 1;

				textarea {
					flex: 1;
					border: 1px solid #888888;
					box-sizing: border-box;
					padding: 16rpx;
				}
			}
		}

		.btn {
			background-color: #1684fc;
			color: #ffffff;
			border-radius: 8rpx;
			margin: 4rpx 24rpx 24rpx 24rpx;
			height: 64rpx;
			justify-content: center;
			align-items: center;
		}

		input {
			margin: 48rpx 24rpx 0 24rpx;
			height: 64rpx;
			border: 1px solid #888888;
			text-align: center;
		}
	}
</style>