<template>
	<view class="">
		<com-empty-view v-if="jobList.length==0"></com-empty-view>
		<job-filter ref="filter" otherTitle="ASN" @switchChangeToday="switchChangeToday"
			@switchChangeWait="switchChangeWait" @onScanNumber="getScanNumber" :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-inventory-job-card :dataContent="item" @click='openJobDetail(item)'>
						</com-inventory-job-card>
					</uni-swipe-action-item>
				</view>
			</uni-swipe-action>

			<job-list-popup ref="jobListPopup" @selectedItem="selectedItem"></job-list-popup>
			<job-info-popup ref='jobInfoPopup'></job-info-popup>
			<uni-load-more :status="loadingType" v-if="jobList.length>0" />

		</view>
		<com-message ref="comMessage"></com-message>
	</view>
</template>

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

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

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

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

	import comInventoryJobCard from '@/pages/inventoryMove/coms/comInventoryJobCard.vue'
	import jobListPopup from '@/pages/inventoryMove/coms/jobListPopup.vue'
	import jobInfoPopup from '@/pages/inventoryMove/coms/jobInfoPopup.vue'

	export default {
		name: 'receipt',
		components: {
			comEmptyView,
			jobFilter,
			comMessage,
			comInventoryJobCard,
			jobListPopup,
			jobInfoPopup,
		},
		props: {
			businessTypeCode: {
				type: String,
				default: "Move"
			} //业务类型
		},
		data() {
			return {
				jobList: [],
				pageNo: 1,
				pageSize: 10,
				totalCount: 0,
				loadingType: "nomore",
				checkedToday: false,
				checkedWaitTask: false,
				todayTime: "",
				status: '1,2', //待处理 、进行中
				detailOptions: [],
				detailGiveupOptions: [],
				titleName:""
			};
		},

		onShow() {

		},

		mounted() {
			this.getList('refresh');
		},

		onReady() {
			const rightButtonEle2 = document.getElementsByClassName('uni-page-head-btn')[2]
			this.detailOptions = getDetailOption();
			this.detailGiveupOptions = getDetailGiveupOption();
		},

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


		methods: {
			updateTitle() {
				var title = ""
				var name = ""
				if (this.businessTypeCode == "Move") {
					name = "库存转移";
				} else if (this.businessTypeCode == "HoldToOk") {
					name = "隔离转合格";
				} else if (this.businessTypeCode == "HoldToScrap") {
					name = "隔离转报废";
				} else if (this.businessTypeCode == "OkToHold") {
					name = "合格转隔离";
				} else if (this.businessTypeCode == "OktoScrap") {
					name = "合格转报废";
				} else if (this.businessTypeCode == "ScrapToHold") {
					name = "报废转隔离";
				}
				this.titleName =name;
				if (this.totalCount > 0) {
					title = name + "(" + this.totalCount + ")";
				} else {
					title = name;
				}
				uni.setNavigationBarTitle({
					title: title
				})
			},

			getList(type) {
				let that = this;
				uni.showLoading({
					title: "加载中­....",
					mask: true
				});

				this.loadingType = "loading";
				if (type === "refresh") {
					this.pageNo = 1;
					this.receiptList = [];
				}
				var filters = []
				if (this.checkedToday) {
					filters.push({
						column: "request_time",
						action: "betweeen",
						value: this.todayTime
					})
				}

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

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

					var list = res.data.list;
					this.totalCount = res.data.total
					this.loadingType = "loadmore";
					if (list == null || list.length == 0) {
						this.loadingType = "nomore";
						return;
					}
					this.jobList = type === "refresh" ? list : this.jobList.concat(list);
					this.pageNo++;
					this.updateTitle();
				}).catch(error => {
					if (type === "refresh") {
						uni.stopPullDownRefresh();
					}
					this.loadingType = "";
					uni.hideLoading();
					that.showMessage(error)
				})
			},



			openJobDetail(item) {
				uni.navigateTo({
					url: './inventoryMoveDetail?id=' + item.id + '&status=' + item.status+'&titleName=' + this.titleName
				});
			},

			showItemList(itemList) {
				this.$refs.comReceiptJobList.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) {
								this.cancleJob(dataContent.id);
							}
						});
				}
			},

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

			cancleJob(id) {
				cancleTakeInventoryMoveJob(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");
			},

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

				var params = {
					filters: filters,
					pageNo: 1,
					pageSize: 100,
				}
				getInventoryMoveJobList(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]);
					}
				}).catch(error => {
					uni.hideLoading();
					that.showMessage(error);
				})
			},

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

					}
				});
			},
			openFilter() {
				this.$refs.filter.openFilter();
			},
			toHome() {
				goHome()
			},
			refresh(){
				this.getList("refresh")
			}

		}
	}
</script>

<style scoped lang="scss">

</style>
