<template>
	<!-- <page-meta root-font-size="18px"></page-meta> -->
	<view class="page-wraper">
		<view class="page-main">
			<scroll-view scroll-y="true" class="">
				<view v-for="(toLocation, index) in detailSource">
					<com-issue-detail-card ref='comIssueDetailCard' :dataContent="toLocation" @updateData='updateData'>
					</com-issue-detail-card>
				</view>
			</scroll-view>
		</view>

		<div class="btn_bottom">
			<view class="" style="display: flex;flex-direction: row;">
				<view class="">
					<button class="btn_commit" hover-class="btn_commit_after" @click="submit()">提交</button>
				</view>
			</view>
		</div>
		<win-scan-button @goScan='openScanDetailPopup'></win-scan-button>
		<com-scan-issue-pack ref="comScanIssuePack" @closeScan='closeScan' @updateData='updateData'>
		</com-scan-issue-pack>
		<comMessage ref="comMessage"></comMessage>
	</view>
</template>

<script>
	import {
		takeIssueJob,
		cancleTakeIssueJob,
		getIssueJobDetail,
	} from '@/api/request2.js';

	import {
		goHome,
		updateTitle,
		getRemoveOption,
		getISODateTime,
		getDirectoryItemArray
	} from '@/common/basic.js';

	import {
		getDataSource
	} from '@/pages/issue/js/issue.js';

	import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue'
	import winScanButton from '@/mycomponents/scan/winScanButton.vue'
	import comIssueDetailCard from '@/pages/issue/coms/comIssueDetailCard.vue'
	import comScanIssuePack from '@/pages/issue/coms/comScanIssuePack.vue'
	import comMessage from '@/mycomponents/common/comMessage.vue'

	export default {
		name: 'issueDetail',
		components: {
			jobDetailPopup,
			winScanButton,
			comIssueDetailCard,
			comScanIssuePack,
			comMessage
		},
		data() {
			return {
				id: '',
				jobContent: {}, //任务内容
				subList: [], //接口返回的任务subList
				detailSource: [], //绑定在页面上的数据源
				detailOptions: [],
				scanOptions: []
			};
		},

		props: {

		},

		onLoad(option) {
			this.id = option.id;
			// if (this.id != undefined) {
			// 	//新建的任务自动接收
			// 	if (option.status == "JOB_PENDING") {
			// 		this.receive((callback => {
			// 			this.received = true;
			// 			this.getDetail();
			// 		}));
			// 	} else {
			// 		this.getDetail();
			// 	}
			// }
			this.getDetail();
		},

		onNavigationBarButtonTap(e) {
			if (e.index === 0) {
				goHome();
			}
		},

		//拦截返回按钮事件
		onBackPress(e) {
			//已经接收但是没提交任务
			if (this.received) {
				//取消承接任务	
				cancleTakeIssueJob(this.id).then(res => {}).catch(error => {
					this.showMessage(err);
				})
			}
		},

		watch: {
			locationTypes(newVal) {
				let value = newVal;
			},
		},
		mounted: function() {

		},

		methods: {
			//接收
			receive(callback) {
				if (this.id != null) {
					takeIssueJob(this.id).then(res => {
						callback();
					}).catch(error => {
						this.showErrorMessage(error)
					})
				}
			},

			getDetail() {
				var that = this;
				uni.showLoading({
					title: "加载中....",
					mask: true
				});
				getIssueJobDetail(that.id).then(res => {
					uni.hideLoading();
					if (res.data == null) {
						that.showMessage('未获取到详情');
					} else {
						if (res.data.subList.length > 0) {
							that.jobContent = res.data;
							that.subList = res.data.subList;
							that.detailSource = getDataSource(that.detailSource, that.subList)
							// that.fromLocationCode = that.subList[0].FromLocationCode
							// that.toLocationCode = that.subList[0].toLocationCode
							// that.tolocationTypeList = getDirectoryItemArray(that.jobContent.toLocationTypes)
							that.resizeCollapse();
							uni.hideLoading();
						} else {
							that.showMessage('列表数据为0');
						}
					}
				}).catch(error => {
					uni.hideLoading()
					this.showErrorMessage(error)
				})
			},

			closeScan() {
				this.resizeCollapse();
			},

			resizeCollapse() {
				this.$nextTick(r => {
					this.$refs.comIssueDetailCard.forEach(r => {
						r.resizeCollapse();
					})
				});
			},

			submit() {
				//3.如果是按批次先进先出发料提交时如果扫描的箱码不是先进的批次，则报错
				//:请扫描XXX批次，改批次满足先进先出规则。否则可以直接提交
				var isOutIn = getApp().globalData.feed_configList.filter(
					res => {
						if (res.name == 'feed_isOutIn') {
							return res;
						}
					});

				this.dataContent.itemCodeList.forEach(res => {
					if (res.handleQty > res.recommendQty) {
						this.$refs.modal.showConfirmMessageModal('实际数量大于需求数量,是否提交?', confirm => {
							if (confirm) {
								//提交
								uni.showToast({
									title: "提交"
								})
							}
						})
					} else {
						uni.showToast({
							title: "扫描的数量" + res.handleQty + "]小于推荐数量[" + res.recommendQty + "]"
						})
					}
				})
			},

			cancel() {
				let that = this;
				this.$refs.comMessage.showQuestionMessage('是否要清空已扫描的零件和目标库位信息?', res => {
					if (res) {
						that.clearInfo();
					}
				});
			},

			clearInfo() {
				this.dataContent.itemCodeList.forEach(res => {
					if (res.recommendList != null) {
						res.recommendList.forEach(res1 => {
							if (res1.locationCodeList != null) {
								res1.locationCodeList.forEach(res2 => {
									if (res2.packingCodeList != null) {
										res2.packingCodeList.forEach(res3 => {
											res3.itemCode = "";
											res3.qty = 0;
										})
									}
								})
							}

						})
					}

				})
			},

			updateData(record) {
				let requestLocation = this.detailSource.find(r => r.toLocationCode == record.toLocationCode);
				let item = requestLocation.Items.find(r => r.itemCode == record.itemCode);
				let itemHandleQty = 0;
				if (item != undefined) {
					item.Locations.forEach(l => {
						let batch = l.Batchs.find(b => (b.packingNumber == record.packingNumber || b
								.packingNumber == '') && b.batch ==
							record.batch);

						let handleQty = 0;
						batch.Records.forEach(res => {
							handleQty += Number(res.qty)
						})
						batch.handleQty = handleQty;
						itemHandleQty += handleQty;
					})
				}
				// item.handleQty=itemHandleQty;
			},

			scanPopupGetFocus() {
				if (this.$refs.scanPopup != undefined) {
					this.$refs.scanPopup.getfocus();
				}
			},

			showMessage(message) {
				this.$refs.comMessage.showMessage(message, res => {
					if (res) {
						this.afterCloseMessage()
					}
				});
			},
			showErrorMessage(message) {
				this.$refs.comMessage.showErrorMessage(message, res => {
					if (res) {
						this.afterCloseMessage()
					}
				});
			},

			showScanMessage(message) {
				this.$refs.comMessage.showScanMessage(message);
			},

			showCommitSuccess() {
				this.$refs.comMessage.showCommitSuccess();
			},

			showRescanMessage(message) {
				this.$refs.comMessage.showRescanMessage(message);
			},

			closeCommitMessage() {
				this.openScanPopup();
			},

			afterCloseMessage() {
				this.scanPopupGetFocus();
			},

			showScanMessage(message) {
				this.$refs.comMessage.showScanMessage(message);
			},

			closeScanMessage() {
				this.scanPopupGetFocus();
			},
			confirm(data) {
				this.dataContent = data;
			},
			confirmResult(result) {
				this.dataContent = result;
				this.$forceUpdate();
			},
			openScanDetailPopup() {
				var datacontent = {}
				//克隆对象，深度克隆，防止双向绑定同一个变量
				// Object.assign(datacontent, this.detailSource);
				this.$refs.comScanIssuePack.openScanPopup(this.detailSource, this.jobContent);
			},
			closeScanPopup() {
				this.updateCommitBtn();
			},
		}
	};
</script>

<style scoped lang="scss">
	.uni-numbox__value {
		width: 40px;
	}

	button[disabled] {
		background-color: #3C9CFF;
		color: #fff;
		opacity: 0.7;
	}


	// /deep/ .input-value {
	// 	font-size: 16px;
	// }

	// /deep/ .uni-collapse-item__title-text {
	// 	font-size: 16px;
	// }

	// /deep/ .uni-collapse-item--border {
	// 	border-bottom-width: 0px;
	// 	border-bottom-color: #ebeef5;
	// }

	// /deep/ .uni-collapse-item--border {
	// 	border-bottom-width: 1px;
	// 	border-bottom-color: #ebeef5;
	// }
</style>
