<template>
	<view>
		<com-empty-view v-if="requestList.length==0"></com-empty-view>
		<request-filter ref="filter" @switchChangeWait="switchChangeWait" @onScanNumber="getScanNumber"
			:checkedWaitTask="checkedWaitTask">
		</request-filter>
		<view v-if="requestList.length>0">
			<uni-swipe-action ref="swipeAction">
				<view v-for="(item, index) in requestList" :key="index">
					<uni-swipe-action-item :right-options="item.options" @click="swipeClick($event,item)">
						<com-receipt-request-card :dataContent="item" @click='openRequestDetail(item)'>
						</com-receipt-request-card>
					</uni-swipe-action-item>
				</view>
			</uni-swipe-action>
			<uni-load-more :status="loadingType" />
			<requestRecInfoPopup ref='requestInfoPopup'></requestRecInfoPopup>
		</view>
		<requestButton @goScan='openScanDetailPopup'></requestButton>
	</view>
	<comMessage ref="comMessage"></comMessage>
</template>

<script>
	import requestFilter from '@/mycomponents/request/requestFilter.vue'
	import comEmptyView from '@/mycomponents/common/comEmptyView.vue'
	import requiredLocation from '@/mycomponents/location/requiredLocation.vue'
	import comMessage from '@/mycomponents/common/comMessage.vue'
	import comReceiptRequestCard from '@/pages/unPlanned/coms/comReceiptRequestCard.vue'
	import requestRecInfoPopup from '@/pages/unPlanned/coms/requestRecInfoPopup.vue'
	import requestButton from '@/mycomponents/button/requestButton.vue'

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

	import {
		getUnPlannedReceiptRequestList,
		unPlannedReceiptRequestApprove,
		unPlannedReceiptRequestClose,
		unPlannedReceiptRequestApproveAgree,
		unPlannedReceiptRequestApproveRefused,
		unPlannedReceiptRequestHandle,
		unPlannedReceiptRequestAddAgain
	} from '@/api/request2.js';
	import {
		getDetailOption,
		getDetailAndApproveOption,
		getDetailAndApprovePassAndApproveNoOption,
		getDetailAndHandleOption,
		getDetailAndAddAndCloseOption,
		getAddAgainOption
	} from '@/common/array.js';

	export default {
		components: {
			comEmptyView,
			requestFilter,
			requiredLocation,
			comMessage,
			comReceiptRequestCard,
			requestRecInfoPopup,
			requestButton,
		},
		data() {
			return {
				requestList: [],
				pageNo: 1,
				pageSize: 10,
				status: "1,2,3,4,5,6",
				totalCount: 0,
				checkedWaitTask: false,
				detailOptions: [],
				detailAndApproveOptions: [],
				detailAndApprovePassAndApproveNoOption: [],
				detailAndHandleOption: [],
				detailAndAddAndCloseOption: [],
				addAgainOption: [],
				showOptions: [],
				fromType: "requestType",
				loadingType: "nomore",

			};
		},
		onReady() {
			this.detailOptions = getDetailOption();
			this.addAgainOption = getAddAgainOption();
			this.detailAndApproveOptions = getDetailAndApproveOption()
			this.detailAndApprovePassAndApproveNoOption = getDetailAndApprovePassAndApproveNoOption(),
				this.detailAndHandleOption = getDetailAndHandleOption()
			this.detailAndAddAndCloseOption = getDetailAndAddAndCloseOption()

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

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


		mounted() {

		},
		methods: {
			requestConfirm(action, item) {},

			openRequestInfoPopup(item) {
				this.$refs.requestInfoPopup.openPopup(item)
			},
			openRequestDetail(item) {
				uni.navigateTo({
					url: './receiptRequestDetail?id=' + item.id
				});
			},
			getList(type) {
				let that = this;
				uni.showLoading({
					title: "加载中­....",
					mask: true
				});
				this.loadingType = "loading";
				if (type === "refresh") {
					this.pageNo = 1;
					this.requestList = [];
				}
				var filters = []
				filters.push({
					column: "status",
					action: "==",
					value: this.status
				})
				var params = {
					filters: filters,
					pageNo: this.pageNo,
					pageSize: this.pageSize,
				}
				getUnPlannedReceiptRequestList(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;
					}
					list.forEach(res => {
						var options = this.updateOptions(res.status);
						res.options = options;
					})
					this.requestList = type === "refresh" ? list : this.requestList.concat(list);
					this.pageNo++;
					updateTitle("计划外入库申请(" + this.totalCount + ")");

				}).catch(error => {
					if (type === "refresh") {
						uni.stopPullDownRefresh();
					}
					updateTitle("计划外入库申请");
					this.loadingType = "";
					uni.hideLoading();
					that.showMessage(error)
				})
			},

			updateOptions(status) {
				if (status == "1") {
					this.showOptions = this.detailAndApproveOptions;
				} else if (status == "2") {
					this.showOptions = this.detailAndApprovePassAndApproveNoOption;
				} else if (status == "3") {
					this.showOptions = this.detailAndHandleOption;
				} else if (status == "4") {
					this.showOptions = this.detailAndAddAndCloseOption;
				} else if (status == "5") {
					this.showOptions = this.addAgainOption;
				} else {
					this.showOptions = this.detailOptions;
				}
				return this.showOptions
			},

			openScanDetailPopup() {
				uni.navigateTo({
					url: "./receiptRequestCreate"
				})
			},

			swipeClick(e, dataContent) {
				var text = clearTirmAndWrap(e.content.text)
				if (text == "详情") {
					this.openRequestInfoPopup(dataContent);
				} else if (text == "处理") {
					this.showQuestionMessage("确定要处理当前申请吗?", res => {
						this.unPlannedReceiptRequestHandle(dataContent.id)
					})
				} else if (text == "提交审批") {
					this.showQuestionMessage("确定要审批当前申请吗?", res => {
						this.unPlannedReceiptRequestApprove(dataContent.id)
					})
				} else if (text == "审批通过") {
					this.showQuestionMessage("确定要审批通过当前申请吗?", res => {
						this.unPlannedReceiptRequestApproveAgree(dataContent.id)
					})
				} else if (text == "审批驳回") {
					this.showQuestionMessage("确定要审批驳回当前申请吗?", res => {
						this.unPlannedReceiptRequestApproveRefused(dataContent.id)
					})
				} else if (text == "关闭") {
					this.showQuestionMessage("确定要关闭当前申请吗?", res => {
						this.unPlannedReceiptRequestClose(dataContent.id)
					})
				} else if (text == "重新添加") {
					this.showQuestionMessage("确定要重新添加当前申请吗?", res => {
						this.unPlannedReceiptRequestAddAgain(dataContent.id)
					})
				}
			},
			showQuestionMessage(hint, callBack) {
				this.$refs.comMessage.showQuestionMessage(hint,
					res => {
						if (res) {
							callBack()
						}
					});
			},

			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: "number",
					action: "==",
					value: code
				})

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

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

					}
				});
			},
			unPlannedReceiptRequestApprove(id) {
				unPlannedReceiptRequestApprove(id).then(res => {
					if (res.data) {
						uni.showToast({
							title: "申请提交审批成功"
						})
						this.getList("refresh")
					} else {
						this.showMessage("申请提交审批失败")
					}

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

			},

			unPlannedReceiptRequestClose(id) {
				unPlannedReceiptRequestClose(id).then(res => {
					if (res.data) {
						uni.showToast({
							title: "申请关闭成功"
						})
						this.getList("refresh")
					} else {
						this.showMessage("申请关闭失败")
					}

				}).catch(error => {
					this.showMessage(error)
				})
			},
			unPlannedReceiptRequestApproveAgree(id) {
				unPlannedReceiptRequestApproveAgree(id).then(res => {
					if (res.data) {
						uni.showToast({
							title: "申请审批通过成功"
						})
						this.getList("refresh")

					} else {
						this.showMessage("申请审批通过失败")
					}

				}).catch(error => {
					this.showMessage(error)
				})
			},
			unPlannedReceiptRequestApproveRefused(id) {
				unPlannedReceiptRequestApproveRefused(id).then(res => {
					if (res.data) {
						uni.showToast({
							title: "申请审批驳回成功"
						})
						this.getList("refresh")
					} else {
						this.showMessage("申请审批驳回失败")
					}

				}).catch(error => {
					this.showMessage(error)
				})
			},
			unPlannedReceiptRequestHandle(id) {
				unPlannedReceiptRequestHandle(id).then(res => {
					if (res.data) {
						uni.showToast({
							title: "申请处理成功"
						})
						this.getList("refresh")
					} else {
						this.showMessage("申请处理失败")
					}

				}).catch(error => {
					this.showMessage(error)
				})
			},
			unPlannedReceiptRequestAddAgain(id) {
				unPlannedReceiptRequestAddAgain(id).then(res => {
					if (res.data) {
						uni.showToast({
							title: "申请重新添加成功"
						})
						this.getList("refresh")
					} else {
						this.showMessage("申请重新添加失败")
					}

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

		}
	}
</script>

<style>
</style>