<template>
	<view class="pages-content">
		<view class="tabs">
			<u-tabs-swiper ref="uTabs" :list="tabsList" bar-width="100" :current="current" @change="tabsChange" :is-scroll="false"
			 swiperWidth="750"></u-tabs-swiper>
		</view>
		<swiper style="height: calc(100% - 40px);" :current="swiperCurrent" @transition="transition" @animationfinish="animationfinish">
			<swiper-item class="swiper-item" v-for="(item, index) in tabsList" :key="index">
				<scroll-view scroll-y style="height: 100%;width: 100%;" @scrolltolower="onreachBottom">
					<couponTpl :list="couponList"></couponTpl>
					<u-empty :text="noDataText" img-width="120" v-if="couponList.length==0 && status!='loading'" mode="list"></u-empty>
					<view style="padding: 20upx;">
						<u-loadmore v-if="total>pageSize || status=='loading'" :status="status" />
					</view>
				</scroll-view>
			</swiper-item>
		</swiper>
	</view>
</template>

<script>
	import couponTpl from '@/pages/coupon/couponTpl.vue'
	import {couponListFind} from '@/api/coupon.js'
	export default {
		components: {
			couponTpl
		},
		data() {
			return {
				noDataText: '暂无数据',
				status: 'loading',
				tabsList: [{
					name: '未使用',
					status: 0
				}, {
					name: '已使用',
					status: 1
				}, {
					name: '已过期',
					status: -1
				}],
				couponList: [{
						id: 23432445,
						couponTitle: "满100减50",
						couponAmount: 100,
						validEndTime: "2020-05-16",
						remarks: '优惠卷使用说明优惠卷使用说明优惠卷使用说明',
						checked: false
					},
					{
						id: 3544355,
						couponTitle: "满100减50",
						couponAmount: 100,
						validEndTime: "2020-05-16",
						remarks: '优惠卷使用说明优惠卷使用说明优惠卷使用说明',
						checked: false
					},
					{
						id: 234234234,
						couponTitle: "满100减50",
						couponAmount: 100,
						validEndTime: "2020-05-16",
						remarks: '优惠卷使用说明优惠卷使用说明优惠卷使用说明',
						checked: false
					},
					{
						id: 66264646,
						couponTitle: "满100减50",
						couponAmount: 100,
						validEndTime: "2020-05-16",
						remarks: '优惠卷使用说明优惠卷使用说明优惠卷使用说明',
						checked: false
					},
					{
						id: 9794694698,
						couponTitle: "满100减50",
						couponAmount: 100,
						validEndTime: "2020-05-16",
						remarks: '优惠卷使用说明优惠卷使用说明优惠卷使用说明',
						checked: false
					}
				], // 优惠卷列表
				// 因为内部的滑动机制限制，请将tabs组件和swiper组件的current用不同变量赋值
				current: 0, // tabs组件的current值，表示当前活动的tab选项
				swiperCurrent: 0, // swiper组件的current值，表示当前那个swiper-item是活动的
				pageNo:1,
				pageSize:15,
				count:0
			};
		},
		onLoad() {
			this.pageInit()			
		},
		methods: {
			pageInit () {
				this.current = 0 // tabs组件的current值，表示当前活动的tab选项
				this.swiperCurrent = 0
				this.count = 0
				this.couponList = []
				this.getList()
			},
			// tabs通知swiper切换
			tabsChange(index) {
				this.swiperCurrent = index;
				this.couponList = []
				this.count = 0
				this.getList()
			},
			// swiper-item左右移动，通知tabs的滑块跟随移动
			transition(e) {
				let dx = e.detail.dx;
				this.$refs.uTabs.setDx(dx);
			},
			// 由于swiper的内部机制问题，快速切换swiper不会触发dx的连续变化，需要在结束时重置状态
			// swiper滑动结束，分别设置tabs和swiper的状态
			animationfinish(e) {
				let current = e.detail.current;
				this.$refs.uTabs.setFinishCurrent(current);
				this.swiperCurrent = current;
				this.current = current;
				this.couponList = []
				this.count = 0
				this.getList()
			},
			// 获取优惠卷列表
			getList(){
				this.status = 'loading'
				let item = this.tabsList[this.swiperCurrent]
				let params = {
					pageNo: this.pageNo,
					pageSize: this.pageSize,
					status: item.status
				}
				couponListFind(params).then(res=>{
					this.status = 'loadmore'
					if (res.status == 200) {
						let list = res.data.list
						this.couponList = this.couponList.concat(list)
						this.count = res.data.count
					} else {
						this.couponList = []
						this.count = 0
					}
				})
			},
			// scroll-view到底部加载更多
			onreachBottom() {
				if (this.couponList.length<this.count) {
					this.pageNo++
					this.getList()
				} else {
					this.status = "nomore"
				}
			}
		}
	};
</script>

<style lang="scss">
	page{
		height: 100%;
	}
	.pages-content{
		width: 100%;
		height: 100%;
		display: flex;
		flex-direction: column;
		uni-swiper{
			flex-grow: 1;
		}
	}
</style>
