<!-- 基于z-paging封装个性化分页组件演示(vue) -->
<template>
	<view class="">
		<com-blank-view @goScan='openScanPopup' v-if="itemCode==''"></com-blank-view>
		<!-- 这里就很整洁了,只要设置ref,绑定query事件,绑定list就可以了 -->
		<my-paging v-show="itemCode!=''" ref="paging" v-model="dataList" @query="queryList">
			<!-- 需要固定在顶部不滚动的view放在slot="top"的view中,如果需要跟着滚动,则不要设置slot="top" -->
			<template #top>
				<view v-if="itemDetail!=undefined">
					<item-info :itemdetail='itemDetail'></item-info>
					<u-line />
					<z-tabs :list="tabList" @change="tabChange" />
				</view>

			</template>
			<view class="" style="padding-bottom: 50rpx;">
				<comItemDetailCard v-if="tabIndex == 0" :itemList="dataList" :isShowPack="false" style='margin: 10rpx;'>
				</comItemDetailCard>
				<comItemDetailCard v-if="tabIndex == 1" :itemList="dataList" style='margin: 10rpx;'>
				</comItemDetailCard>
				<comItemDetailCard v-if="tabIndex == 2" :itemList="dataList" :isShowLocation="false"
					:isShowBusiness="true"></comItemDetailCard>
				<comItemDetailCard v-if="tabIndex == 3" :itemList="dataList" :isShowLocation="false"
					:isShowBusiness="true">
				</comItemDetailCard>
			</view>

		</my-paging>
		<win-scan-button @goScan='openScanPopup' v-if="itemCode!=''"></win-scan-button>
		<win-scan-item ref="scanPopup" title='物料代码' @getScanResult='getScanCode'>
		</win-scan-item>
		<comMessage ref="comMessage"></comMessage>
	</view>
</template>

<script>
	import {
		getExpectoutByItemcode,
		getExpectinByItemcode,
		getBalanceByItemCode,
		getBasicItemByCode,
		getBalanceSummary
	} from '@/api/request2.js';
	import {
		goHome
	} from '@/common/basic.js';
	import itemInfo from '@/mycomponents/item/itemInfo.vue'
	import comBlankView from '@/mycomponents/common/comBlankView.vue'
	import winScanItem from '@/mycomponents/scan/winScanItem.vue'
	import winScanButton from '@/mycomponents/scan/winScanButton.vue'
	import comItemDetailCard from '@/pages/query/coms/comItemDetailCard.vue'
	import comMessage from '@/mycomponents/common/comMessage.vue'
	export default {
		components: {
			itemInfo,
			comBlankView,
			winScanItem,
			winScanButton,
			comItemDetailCard,
			comMessage
		},
		data() {
			return {
				//v-model绑定的这个变量不要在分页请求结束中自己赋值!!!
				dataList: [],
				tabList: ['汇总', '明细', '预计入', '预计出'],
				tabIndex: 0,
				itemDetail: undefined,
				itemCode: '',
				balances: [],
			}
		},
		//返回首页
		onNavigationBarButtonTap(e) {
			if (e.index === 0) {
				goHome();
			}
		},
		mounted() {
			this.openScanPopup();
		},
		methods: {
			openScanPopup() {
				this.$refs.scanPopup.openScanPopup();
			},
			closeScanPopup() {
				this.$refs.scanPopup.closeScanPopup();
			},
			getScanCode(code) {
				if (code == "") {
					this.showMessage('物料号不能为空')
					return;
				}
				this.itemCode = '';
				this.getItemInfo(code);
			},
			getItemInfo(code) {
				uni.showLoading({
					title: "正在查询物料信息...",
					mask: true
				});

				getBasicItemByCode(code).then(res => {
					uni.hideLoading();
					if (res.data.list.length > 0) {
						this.closeScanPopup();
						this.itemCode = res.data.list[0].code;
						this.itemDetail = res.data.list[0];
						this.tabChange(0)
					} else {
						this.showMessage('未查找到物料【' + code + '】');
					}

				}).catch(error => {
					uni.hideLoading();
					this.itemCode = "";
					this.showMessage(error);
				})
			},

			// 汇总
			getSummary(pageNo, pageSize) {
				uni.showLoading({
					title: "加载中...",
					mask: true
				});
				var params = {
					itemCode: this.itemCode,
					pageNo: pageNo,
					pageSize: pageSize
				}
				console.log("getSummary", pageNo)
				getBalanceSummary(params).then(res => {
					uni.hideLoading();
					if (res.data.list.length > 0) {
						this.$refs.paging.complete(res.data.list);
					} else {
						this.$refs.paging.complete(false);
						this.showMessage('未查找到物料【' + this.itemCode + '】');
					}
				}).catch(error => {
					this.$refs.paging.complete(false);
					uni.hideLoading();
					this.showMessage(error);
				})
			},
			//明细
			getDetailList(pageNo, pageSize) {
				uni.showLoading({
					title: "加载中...",
					mask: true
				});
				var params = {
					itemCode: this.itemCode,
					pageNo: pageNo,
					pageSize: pageSize
				}
				getBalanceByItemCode(params).then(res => {
					uni.hideLoading();
					if (res.data.list.length > 0) {
						this.$refs.paging.complete(res.data.list);
					} else {
						this.$refs.paging.complete(false);
						this.showMessage('未查找到物料【' + this.itemCode + '】');
					}
				}).catch(error => {
					this.$refs.paging.complete(false);
					uni.hideLoading();
					this.showMessage(error);
				})

			},
			ontabtap(e) {
				let index = e.target.dataset.current || e.currentTarget.dataset.current;
				this.tabIndex = index;
				this.getContentByTab(index);
			},

			getContentByTab(index, pageNo, pageSize) {
				if (index === 0) this.getSummary(pageNo, pageSize);
				else if (index === 1) this.getDetailList(pageNo, pageSize);
				else if (index === 2) {
					this.getExpectin(pageNo, pageSize);
				} else if (index == 3) {
					this.getExpectout(pageNo, pageSize);
				}
			},
			//预计入
			getExpectin(pageNo, pageSize) {
				uni.showLoading({
					title: "加载中...",
					mask: true
				});
				var params = {
					itemCode: this.itemCode,
					pageNo: pageNo,
					pageSize: pageSize
				}
				getExpectinByItemcode(params).then(res => {
					uni.hideLoading();
					if (res.data.total > 0) {
						this.$refs.paging.complete(res.data.list);
					} else {
						this.showMessage('未查找到物料【' + this.itemCode + '】');
					}
				}).catch(error => {
					this.$refs.paging.complete(false);
					uni.hideLoading();
					this.showMessage(error);
				})
			},

			//预计出
			getExpectout(pageNo, pageSize) {
				uni.showLoading({
					title: "加载中...",
					mask: true
				});
				var params = {
					itemCode: this.itemCode,
					pageNo: pageNo,
					pageSize: pageSize
				}
				getExpectoutByItemcode(params).then(res => {
					uni.hideLoading();
					if (res.data.total > 0) {
						this.$refs.paging.complete(res.data.list);
					} else {
						this.$refs.paging.complete(false);
						this.showMessage('未查找到物料【' + this.itemCode + '】');
					}
				}).catch(error => {
					this.$refs.paging.complete(false);
					uni.hideLoading();
					this.showMessage(error);
				})
			},

			showMessage(message) {
				this.$refs.comMessage.showErrorMessage(message, res => {
					if (res) {
						this.afterCloseMessage()
					}
				});
			},
			afterCloseMessage() {
				if (this.$refs.scanPopup != undefined) {
					this.$refs.scanPopup.getfocus();
				}
			},
			tabChange(index) {
				this.tabIndex = index;
				this.$refs.paging.reload(true);
			},
			queryList(pageNo, pageSize) {
				console.log("加载", pageNo)
				if (this.itemCode != "") {
					this.getContentByTab(this.tabIndex, pageNo, pageSize)
				}

			},
			itemClick(item) {
				console.log('点击了', item.title);
			}
		}
	}
</script>

<style>
	.notice {
		background-color: red;
		color: white;
		display: flex;
		flex-direction: column;
		padding: 12rpx 20rpx;
		font-size: 24rpx;
	}

	.item {
		position: relative;
		height: 150rpx;
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: 0rpx 30rpx;
	}

	.item-detail {
		padding: 5rpx 15rpx;
		border-radius: 10rpx;
		font-size: 28rpx;
		color: white;
		background-color: #007AFF;
	}

	.item-line {
		position: absolute;
		bottom: 0rpx;
		left: 0rpx;
		height: 1px;
		width: 100%;
		background-color: #eeeeee;
	}
</style>