<template>
	<view class="coupon-center">
		<div class="swiper-box">
			<div class="swiper-item">
				<div class="scroll-v" enableBackToTop="true" scroll-y>
					<u-empty mode="coupon" style='margin-top: 20%;' text="没有优惠券了" v-if="whetherEmpty"></u-empty>
					<view v-else class="coupon-item" v-for="(item, index) in couponList" :key="index">
						<view class="left">
							<view class="wave-line">
								<view class="wave" v-for="(item, index) in 12" :key="index"></view>
							</view>
							<view class="message">
								<view>
									<!--判断当前优惠券类型  couponType  PRICE || DISCOUNT -->
									<span v-if="item.couponType == 'DISCOUNT'">{{ item.couponDiscount }}折</span>
									<span v-else>{{ item.price }}元</span>
								</view>
								<view>满{{ item.consumeThreshold | unitPrice }}元可用</view>
							</view>
							<view class="circle circle-top"></view>
							<view class="circle circle-bottom"></view>
						</view>
						<view class="right">
							<view>
								<!-- 根据scopeType 判断是否是 平台、品类或店铺  -->
								<view class="coupon-title wes-3" v-if="item.scopeType">
									<span v-if="item.scopeType == 'ALL' && item.storeId == '0'">全平台</span>
									<span v-if="item.scopeType == 'PORTION_GOODS_CATEGORY'">仅限品类</span>
									<view v-else>{{ item.storeName == 'platform' ? '全平台' :item.storeName+'店铺' }}使用
									</view>
								</view>
								<view v-if="item.endTime">有效期至:{{ item.endTime.split(" ")[0] }}</view>
							</view>
							<view class="receive" @click="receive(item)">
								<text>点击</text><br />
								<text>领取</text>
							</view>
							<view class="bg-quan"> 券 </view>
						</view>
					</view>

				</div>
			</div>
		</div>
	</view>
</template>

<script>
	import {
		receiveCoupons
	} from "@/api/members.js";
	import {
		getAllCoupons
	} from "@/api/promotions.js";
	export default {
		data() {
			return {
				loadStatus: "more", //下拉状态
				whetherEmpty: false, //是否为空
				couponList: [], // 优惠券列表
				params: {
					pageNumber: 1,
					pageSize: 10,
				},
				storeId: "", //店铺 id,
				couponData: ""
			};
		},
		onLoad(option) {
			this.storeId = option.storeId;
			this.getCoupon();
		},
		onReachBottom() {

			this.loadMore()
		},
		onPullDownRefresh() {
			//下拉刷新
			this.params.pageNumber = 1;
			this.couponList = [];
			this.getCoupon();
		},
		methods: {
			/**
			 * 获取当前优惠券
			 */
			getCoupon() {
				uni.showLoading({
					title: "加载中",
				});
				let submitData = {
					...this.params
				};
				// 判断当前是否有店铺
				this.storeId ? (submitData = {
						...this.params,
						storeId: this.storeId
					}) : "",
					getAllCoupons(submitData)
					.then((res) => {
						if (this.$store.state.isShowToast){ uni.hideLoading() };
						uni.stopPullDownRefresh();
						if (res.data.code == 200) {
							// 如果请求成功,展示数据并进行展示
							this.couponData = res.data.result
							if (this.couponData.total == 0) {
								// 当本次请求数据为空展示空信息
								this.whetherEmpty = true;
							} else {
								this.couponList.push(...this.couponData.records);
								this.loadStatus = "noMore";
							}
						}
					})
					.catch((err) => {
						 if (this.$store.state.isShowToast){ uni.hideLoading() };
					});
			},
			/**
			 * 领取优惠券
			 */
			receive(val) {
				this.$u.throttle(()=>{
					this.fetchCoupon(val)
				}, 1500)
				
			},

			fetchCoupon(val){
				receiveCoupons(val.id).then((res) => {
					if (res.data.code == 200) {
						uni.showToast({
							title: "领取成功",
							icon: "none",
						});
					} else {
						uni.showToast({
							title: res.data.message,
							icon: "none",
						});
					}
				});
			},

			/**
			 * 加载更多
			 */
			loadMore() {
				if (this.couponData.total > this.params.pageNumber * this.params.pageSize) {
					this.params.pageNumber++;
					this.getCoupon();
				}
			},
		},
		onNavigationBarButtonTap(e) {
			uni.navigateTo({
				url: "/pages/cart/coupon/couponIntro",
			});
		},
	};
</script>
<style>
	page {
		height: 100%;
	}
</style>
<style lang="scss" scoped>
	.coupon-center {
		height: 100%;

		.swiper-box {
			.coupon-item {
				display: flex;
				align-items: center;
				height: 220rpx;
				margin: 20rpx;

				.left {
					height: 100%;
					width: 260rpx;
					background-color: $light-color;
					position: relative;

					.message {
						color: $font-color-white;
						display: flex;
						justify-content: center;
						align-items: center;
						flex-direction: column;
						margin-top: 40rpx;

						view:nth-child(1) {
							font-weight: bold;
							font-size: 60rpx;
						}

						view:nth-child(2) {
							font-size: $font-sm;
						}
					}

					.wave-line {
						height: 220rpx;
						width: 8rpx;
						position: absolute;
						top: 0;
						left: 0;
						background-color: $light-color;
						overflow: hidden;

						.wave {
							width: 8rpx;
							height: 16rpx;
							background-color: #ffffff;
							border-radius: 0 16rpx 16rpx 0;
							margin-top: 4rpx;
						}
					}

					.circle {
						width: 40rpx;
						height: 40rpx;
						background-color: $bg-color;
						position: absolute;
						border-radius: 50%;
						z-index: 111;
					}

					.circle-top {
						top: -20rpx;
						right: -20rpx;
					}

					.circle-bottom {
						bottom: -20rpx;
						right: -20rpx;
					}
				}

				.right {
					display: flex;
					justify-content: space-between;
					align-items: center;
					width: 450rpx;
					font-size: $font-sm;
					height: 100%;
					background-color: #ffffff;
					overflow: hidden;
					position: relative;

					>view:nth-child(1) {
						color: #666666;
						margin-left: 20rpx;
						display: flex;
						height: 100%;
						flex-direction: column;
						justify-content: space-around;

						>view:nth-child(1) {
							color: #ff6262;
							font-size: 30rpx;
						}
					}

					.receive {
						color: #ffffff;
						background-color: $main-color;
						border-radius: 50%;
						width: 86rpx;
						height: 86rpx;
						text-align: center;
						margin-right: 30rpx;
						vertical-align: middle;
						padding-top: 8rpx;
						position: relative;
						z-index: 2;
					}

					.bg-quan {
						width: 244rpx;
						height: 244rpx;
						border: 6rpx solid $main-color;
						border-radius: 50%;
						opacity: 0.1;
						color: $main-color;
						text-align: center;
						padding-top: 30rpx;
						font-size: 130rpx;
						position: absolute;
						right: -54rpx;
						bottom: -60rpx;
					}
				}
			}
		}
	}

	.coupon-title {
		width: 260rpx;

	}
</style>