<template>
	<view class="">
		<com-empty-view v-if="jobList.length==0"></com-empty-view>
		<job-filter ref="filter" :isShowAsn="isShowAsn" :isShowJob="isShowJob" @switchChangeToday="switchChangeToday"
			@switchChangeWait="switchChangeWait" @onScanNumber="getScanNumber" @onScanAsnNumber="getScanAsnNumber"
			:checkedToday="checkedToday" :checkedWaitTask="checkedWaitTask">
		</job-filter>
		<view v-if="jobList.length>0">
			<uni-swipe-action ref="swipeAction">
				<view v-for="(item, index) in jobList" :key="index">
					<uni-swipe-action-item :right-options="item.status=='2'?detailGiveupOptions:detailOptions"
						@click="swipeClick($event,item)">
						<com-receipt-job-card :dataContent="item" @click='openJobDetail(item)'></com-receipt-job-card>
					</uni-swipe-action-item>
				</view>
			</uni-swipe-action>

			<uni-load-more :status="loadingType" v-if="jobList.length>0" />
			<receipt-info-popup ref='jobInfoPopup'></receipt-info-popup>
			<receipt-job-list-popup ref="jobListPopup" @selectedItem="selectedItem"></receipt-job-list-popup>
		</view>
		<win-scan-button @goScan='openScanPopup' v-if="jobList.length>0"></win-scan-button>
		<winScanPackJob ref="scanPopup" @getResult='getScanResult' :allowNullBalance="true">
		</winScanPackJob>
		<jobList ref="jobList" @selectItem="selectItem"></jobList>
		<comMessage ref="comMessage"></comMessage>
	</view>
</template>

<script>
	import {
		getPurchaseReceiptJobList,
		cancleTakePurchaseReceiptJob
	} from '@/api/request2.js';

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

	import {
		getDetailOption,
		getDetailGiveupOption
	} from '@/common/array.js';

	import comEmptyView from '@/mycomponents/common/comEmptyView.vue'
	import jobFilter from '@/mycomponents/job/jobFilter.vue'

	import comReceiptJobCard from '@/pages/purchaseReceipt/coms/comReceiptJobCard.vue'
	import receiptJobListPopup from '@/pages/purchaseReceipt/coms/receiptJobListPopup.vue'
	import receiptInfoPopup from '@/pages/purchaseReceipt/coms/receiptInfoPopup.vue'
	import jobList from '@/mycomponents/jobList/jobList.vue'
	import winScanButton from '@/mycomponents/scan/winScanButton.vue'
	import winScanPackJob from "@/mycomponents/scan/winScanPackJob.vue"

	export default {
		name: 'receipt',
		components: {
			comEmptyView,
			jobFilter,
			comReceiptJobCard,
			receiptInfoPopup,
			receiptJobListPopup,
			winScanButton,
			winScanPackJob,
			jobList
		},
		data() {
			return {
				jobList: [],
				pageNo: 1,
				pageSize: 10,
				totalCount: 0,
				loadingType: "nomore",
				checkedToday: false,
				checkedWaitTask: false,
				todayTime: "",
				status: '1,2', //待处理 、进行中
				detailOptions: [],
				detailGiveupOptions: [],
			};
		},

		props: {
			operation: "receipt" ,//reject  收货  拒绝
			isShowAsn:{
				type: Boolean,
				default: true
			},
			isShowJob:{
				type: Boolean,
				default: true
			},
		},

		// onShow() {
		// 	this.getList('refresh');
		// },

		// onReady() {
		// 	this.detailOptions = getDetailOption();
		// 	this.detailGiveupOptions = getDetailGiveupOption();
		// },

		// onReachBottom() {
		// 	//避免多次触发
		// 	if (this.loadingType == 'loading' || this.loadingType == 'nomore') {
		// 		return;
		// 	}
		// 	this.getList("more");
		// },

		// onPullDownRefresh() {
		// 	this.refresh();
		// },

		// //后退按钮
		// onBackPress(options) {
		// 	if (options.from === 'navigateBack') {
		// 		uni.navigateBack({
		// 			delta: 1
		// 		})
		// 		return false;
		// 	}
		// },

		// //返回首页
		// onNavigationBarButtonTap(e) {
		// 	if (e.index === 0) {
		// 		goHome();
		// 	} else if (e.index == 1) {
		// 		this.$refs.filter.openFilter();
		// 	}
		// },
		mounted() {
			this.refresh();
		},

		methods: {
			refresh() {
				this.getList('refresh');
			},
			openFilter() {
				this.$refs.filter.openFilter();
			},
			goHome() {
				goHome();
			},
			getList(type) {
				let that = this;
				uni.showLoading({
					title: "加载中­....",
					mask: true
				});
				this.loadingType = "loading";
				if (type === "refresh") {
					this.pageNo = 1;
					this.jobList = [];
				}
				var filters = []
				if (this.checkedToday) {
					filters.push({
						column: "create_time",
						action: "betweeen",
						value: this.todayTime
					})
				}

				filters.push({
					column: "status",
					action: "in",
					value: this.status
				})

				var params = {
					filters: filters,
					pageNo: this.pageNo,
					pageSize: this.pageSize,
				}
				getPurchaseReceiptJobList(params).then(res => {
					uni.hideLoading();
					if (type === "refresh") {
						uni.stopPullDownRefresh();
					}

					var list = res.data.list;
					this.totalCount = res.data.total
					updateTitle("采购收货任务(" + this.totalCount + ")");
					this.loadingType = "loadmore";
					if (list == null || list.length == 0) {
						this.loadingType = "nomore";
						return;
					}
					this.jobList = type === "refresh" ? list : this.jobList.concat(list);
					this.pageNo++;

				}).catch(error => {
					if (type === "refresh") {
						uni.stopPullDownRefresh();
					}
					updateTitle("采购收货");
					this.loadingType = "";
					uni.hideLoading();
					that.showMessage(error)

				})
			},

			getScanAsnNumber(code) {
				this.getDataListByType(code, "asnNumber")
			},

			getScanNumber(code) {
				this.getDataListByType(code, "number")
			},

			getDataListByType(code, type) {
				let that = this;
				uni.showLoading({
					title: "加载中....",
					mask: true
				});
				var filters = []
				filters.push({
					column: "status",
					action: "in",
					value: '1,2'
				})
				if (type == "asnNumber") {
					filters.push({
						column: "asn_number",
						action: "==",
						value: code
					})
				} else if (type == "number") {
					filters.push({
						column: "number",
						action: "==",
						value: code
					})
				}

				var params = {
					filters: filters,
					pageNo: 1,
					pageSize: 100,
				}
				getPurchaseReceiptJobList(params).then(res => {
					uni.hideLoading();
					if (res.data.list.length == 0) {
						that.showMessage('未查找到' + '【' + code + '】的收货任务');
					} else if (res.data.list.length == 1) {
						that.openJobDetail(res.data.list[0]);
					} else {
						if (type == "asnNumber") {
							that.showItemList(res.data.list);
						}
					}
				}).catch(error => {
					uni.hideLoading();
					that.showMessage(error);
				})
			},

			openJobDetail(item, packingNumber = '') {
				uni.navigateTo({
					url: './receiptDetail?id=' + item.masterId + '&status=' + item.status + '&operation=' + this
						.operation + '&scaned=' + packingNumber
				});
			},

			showItemList(itemList) {
				this.$refs.jobListPopup.openPopup(itemList);
			},

			selectedItem(item) {
				this.openJobDetail(item);
			},

			swipeClick(e, dataContent) {
				if (e.content.text == "详情") {
					this.openjobInfoPopup(dataContent);
				} else if (e.content.text == "放弃") {
					this.$refs.comMessage.showQuestionMessage("确定要放弃当前任务?",
						res => {
							if (res) {
								var id = dataContent.masterId
								this.cancleJob(id);
							}
						});
				}
			},

			openjobInfoPopup(item) {
				this.$refs.jobInfoPopup.openPopup(item)
			},

			cancleJob(id) {
				cancleTakePurchaseReceiptJob(id).then(res => {
					if (res.data) {
						this.getList("refresh")
						uni.showToast({
							title: "放弃任务成功"
						})
					} else {
						this.showMessage("放弃任务失败")
					}

				}).catch(error => {
					this.showMessage(error)
				})
			},

			switchChangeToday(state, creationTime) {
				this.checkedToday = state;
				this.todayTime = creationTime;
				this.getList("refresh");
			},

			switchChangeWait(state, jobStatus) {
				this.checkedWaitTask = state;
				this.status = jobStatus;
				this.getList("refresh");
			},

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

					}
				});

			},
			openScanPopup() {
				this.$refs.scanPopup.openScanPopup();
			},
			selectItem(item) {
				this.$refs.scanPopup.closeScanPopup();
				this.openJobDetail(item, item.packingNumber);
			},
			getScanResult(result) {
				
				try {
					let filters = []
					if(result.label.barType=="BarCode"){
						// ASN单号
						filters = [{
							column: "asn_number",
							action: "==",
							value: result.label.code
						}]
					}else{
						filters = [{
								column: "packingNumber",
								action: "==",
								value: result.label.packingNumber
							},
							{
								column: "batch",
								action: "==",
								value: result.label.batch
							},
							// {
							// 	column: "qty",
							// 	action: "==",
							// 	value: result.label.qty
							// }, 
							{
								column: "itemCode",
								action: "==",
								value: result.label.itemCode
							},
							// {
							// 	column: "fromLocationCode",
							// 	action: "==",
							// 	value: result.label.fromLocationCode
							// }
						]
					}
					
					
					getPurchaseReceiptJobList({
						filters: filters,
						pageNo: 1,
						pageSize: 100,
					}).then(res => {
						let resultList = res.data.list;
						if (resultList.length > 0) {
							resultList.forEach(item => {
								item.title = item.number;
								item.selected = false
							})
							let list = []
							resultList.forEach(item=>{
								if(!list.find(subItem=>subItem.title==item.title)){
									list.push(item)
								}
							})
							
							console.log('list', list)
							if (list.length > 1) {
								this.$refs.jobList.openList(list)
							} else {
								this.selectItem(list[0])
							}
						} else {
							this.showMessage('未查找到任务')
						}
					}).catch(error => {
						this.showMessage(error)
					})

				} catch (e) {
					this.showMessage(e.message)
				}
			},
		}
	}
</script>

<style scoped lang="scss">

</style>