<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="inspectionType" :localdata="inspectionTypeList" :clear="false"
						style="outline: 2rpx solid #999999;border-radius: 10rpx;"></uni-data-select>
				</view>
			</view>
			<view v-if="inspectionType == 1" class="info-row uni-row" style="margin-top: 40rpx;">
				<view class="label">仪器室</view>
				<view class="value">
					<uni-data-select v-model="inspectionChamber" :localdata="lot.inspectionChamberList" :clear="false"
						style="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">{{ lot.nickName }}</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="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>
	</view>
</template>

<script setup>
	import {
		ref
	} from 'vue'
	import {
		onLoad,
		onReady,
		onUnload,
		onShow
	} from '@dcloudio/uni-app'
	import {
		getLotInfoByFirstInspection,
		getCarrierInfoProcess,
		getFirstCarrierInfo,
	} from '@/api/business/processInspection.js'
	import {
		debounce
	} from '../../utils/common';
	import {
		store
	} from '../../store';
	import {
		getDayWorkItemHistory
	} from '../../api/business/dayWorkItem';
	const carrierCode = ref('')
	const equipmentList = ref([])
	const inspectionTypeList = ref([{
		value: 0,
		text: "首件",
	}, {
		value: 1,
		text: "仪器室",
	}])
	const inspectionType = ref(null)
	const inspectionChamber = ref(null)
	const userList = ref([])
	const userId = ref(null)
	const equipment = ref(null)
	const lot = ref({})
	const query = ref({})


	// 页面生命周期函数
	onLoad(() => {
		uni.showLoading({
			title: '加载中'
		});
		const result = {
			dayworkId: store.dayworkInfo.id,
			deptId: store.curDeptDetails.deptId
		}
		getLotInfoByFirstInspection(result).then(res => {
			if (res.code == 200) {
				inspectionType.value = 0
				if (res.data.inspectionChamberList.length > 0) {
					res.data.inspectionChamberList = res.data.inspectionChamberList.map(item => ({
						value: item.id,
						text: item.chamberName
					}));
					inspectionChamber.value = res.data.inspectionChamberList[0].value
				}
				if (res.data.dayworkItemList.length == 0) {
					uni.showToast({
						icon: 'none',
						title: "该批次今日没有报工",
						duration: 2000
					})
				} else {
					getEquipment(res.data.dayworkItemList)
					lot.value = {
						...lot.value,
						...res.data
					};
					// lot.value.inspectionCarrierId = '1803605009554784261'
					// lot.value.inspectionCarrierCode = "300053"
					uni.hideLoading();
				}
			} else {
				uni.showToast({
					icon: 'none',
					title: res.msg,
					duration: 2000
				})
			}
		}).catch(err => {
			uni.showToast({
				icon: 'none',
				title: err.message,
				duration: 2000
			})
		})
	})
	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 = {
						dayworkId: store.dayworkInfo.id,
						deptId: store.curDeptDetails.deptId,
						carrierCode: ret.resp_result
					}
					if (!result.carrierCode || result.carrierCode == "") {
						uni.showToast({
							icon: "none",
							title: "请扫检测载具码",
							duration: 1000
						})
						return
					}
					//判断该箱是否绑定批次

					result.processCode = store.outsourcedCode;
					// console.log(result.processCode)
					/************************ 根据扫码查询到的数据和需要检查的工序查询信息 ************************/
					getFirstCarrierInfo(result).then(response => {
						if (response.code == 200) {
							// 判断是哪种返回值 假设是想信息则给lot附检查箱信息
							// 假设是dayworkCarriers 则 判断是几个批次，假设为多批，则弹出选择框。
							if (response.data.dayworkCarriers != null) {
								uni.showToast({
									icon: 'none',
									title: "请扫检测载具码",
									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
							}
						} else {
							uni.showToast({
								icon: 'none',
								title: response.msg,
								duration: 2000
							})
						}
					}).catch(err => {
						uni.showToast({
							icon: 'none',
							title: err.message,
							duration: 2000
						})
					})
				}
			)
		} else {
			const result = {
				dayworkId: store.dayworkInfo.id,
				deptId: store.curDeptDetails.deptId,
				carrierCode: '300037'
			}
			getFirstCarrierInfo(result).then(response => {
				if (response.code == 200) {
					// 判断是哪种返回值 假设是想信息则给lot附检查箱信息
					// 假设是dayworkCarriers 则 判断是几个批次，假设为多批，则弹出选择框。
					if (response.data.dayworkCarriers != null) {
						uni.showToast({
							icon: 'none',
							title: "请扫检测载具码",
							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
					}
				} else {
					uni.showToast({
						icon: 'none',
						title: response.msg,
						duration: 2000
					})
				}
			}).catch(err => {
				uni.showToast({
					icon: 'none',
					title: err.message,
					duration: 2000
				})
			})
		}

	}

	function getEquipment(data) {
		const uniqueEquipmentMap = new Map();
		let filterList = data.filter(info => info.userId == store.userInfo.userId)
		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
		if (equipmentList.value.length > 0) {
			equipment.value = equipmentList.value[0].value
		}
	}

	//确定后，将批次id，批次号，传递过去
	const handleConfirm = () => {
		console.log(lot.value)
		if (lot.value.inspectionCarrierId != undefined) {
			if (equipment.value == null) {
				uni.showToast({
					icon: 'none',
					title: "请选择加工设备",
					duration: 2000
				})
			} else if (inspectionType.value == 1 && inspectionChamber == null) {
				uni.showToast({
					icon: 'none',
					title: "请选择仪器室",
					duration: 2000
				})
			} else {
				lot.value.equipmentDetailId = equipment.value
				lot.value.equipmentDetailCode = equipmentList.value[equipmentList.value.findIndex(item => item.value ==
					equipment.value)].text
				store.processInspection = null
				//判断选择了那种检测类型
				if (inspectionType.value == 0) {
					//选择首检
					uni.navigateTo({
						url: "/pages/firstInspection/form",
						success: (res) => {
							// 通过eventChannel向被打开页面传送数据
							res.eventChannel.emit("firstInspectionFrom", {
								data: lot.value
							})
						}
					})
				} else {
					lot.value.inspectionChamberId = inspectionChamber.value
					console.log(lot.value)
					//选择仪器室
					uni.navigateTo({
						url: "/pages/firstInspection/instrumentRoomForm",
						success: (res) => {
							// 通过eventChannel向被打开页面传送数据
							res.eventChannel.emit("firstInspectionFrom", {
								data: lot.value
							})
						}
					})
				}

			}
		} else {
			if (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>