219 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| // +----------------------------------------------------------------------
 | ||
| // | likeshop开源商城系统
 | ||
| // +----------------------------------------------------------------------
 | ||
| // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
 | ||
| // | gitee下载:https://gitee.com/likeshop_gitee
 | ||
| // | github下载:https://github.com/likeshop-github
 | ||
| // | 访问官网:https://www.likeshop.cn
 | ||
| // | 访问社区:https://home.likeshop.cn
 | ||
| // | 访问手册:http://doc.likeshop.cn
 | ||
| // | 微信公众号:likeshop技术社区
 | ||
| // | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
 | ||
| // |  likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
 | ||
| // | 禁止对系统程序代码以任何目的,任何形式的再发布
 | ||
| // | likeshop团队版权所有并拥有最终解释权
 | ||
| // +----------------------------------------------------------------------
 | ||
| // | author: likeshop.cn.team
 | ||
| // +----------------------------------------------------------------------
 | ||
| 
 | ||
| <template>
 | ||
| 	<view class="every-day-coupon bg-white mb20" v-if="list.length">
 | ||
| 		<view class="coupon-header row-between" @tap="goPage">
 | ||
| 			<view class="normal lg title">每日领券</view>
 | ||
| 			<view class="row">
 | ||
| 				<view class="muted sm mr5">进入领券中心</view>
 | ||
| 				<image src="/static/images/arrow_right.png" class="icon-sm"></image>
 | ||
| 			</view>
 | ||
| 		</view>
 | ||
| 		<view class="coupon-scroll">
 | ||
| 			<scroll-view style="heigth: 138rpx" scroll-x="true" scroll-with-animation="true" @scroll="scrollBarChange">
 | ||
| 				<view class="coupon-contain row">
 | ||
| 					<view v-for="(item, index) in list" :key="index" :class="'coupon-item mr20 row-between ' + (item.is_get ? 'recieve' : '')"
 | ||
| 					 @tap="onRecive(item.id)">
 | ||
| 						<view class="coupon-left">
 | ||
| 							<view class="row info">
 | ||
| 								<price-format :subscript-size="30" :first-size="56" :second-size="50" :price="item.money"></price-format>
 | ||
| 								<view class="sm ml10" style="align-self: flex-end;line-height: 50rpx;margin-bottom: 3rpx">
 | ||
| 									优惠券
 | ||
| 								</view>
 | ||
| 							</view>
 | ||
| 							<view class="desc xs">{{item.use_condition}}</view>
 | ||
| 						</view>
 | ||
| 						<view class="coupon-right xxs primary column-center">立即领取</view>
 | ||
| 						<image v-if="item.is_get" class="coupon-img" src="/static/images/home_img_ receive.png"></image>
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 			</scroll-view>
 | ||
| 		</view>
 | ||
| 		<view class="row-center mt20" v-if="list.length > 2">
 | ||
| 			<cu-progress progressBarColor="#FF2C3C" :left="progressPer"></cu-progress>
 | ||
| 		</view>
 | ||
| 	</view>
 | ||
| </template>
 | ||
| 
 | ||
| <script>
 | ||
| 	import {
 | ||
| 		toLogin
 | ||
| 	} from '@/utils/login';
 | ||
| 	import {
 | ||
| 		getCoupon
 | ||
| 	} from '@/api/user';
 | ||
| 	import {
 | ||
| 		getRect
 | ||
| 	} from '@/utils/tools'
 | ||
| 	export default {
 | ||
| 		data() {
 | ||
| 			return {
 | ||
| 				progressPer: 0
 | ||
| 			};
 | ||
| 		},
 | ||
| 
 | ||
| 		components: {},
 | ||
| 		props: {
 | ||
| 			list: {
 | ||
| 				type: Array,
 | ||
| 				default: () => []
 | ||
| 			}
 | ||
| 		},
 | ||
| 		watch: {
 | ||
| 			list: {
 | ||
| 				handler() {
 | ||
| 					this.$nextTick(function(){
 | ||
| 						getRect(".coupon-scroll", false, this).then(res => {
 | ||
| 							this.rectWidth = res.width;
 | ||
| 						});
 | ||
| 					})
 | ||
| 				},
 | ||
| 				immediate: true,
 | ||
| 				deep: true
 | ||
| 			}
 | ||
| 		},
 | ||
| 
 | ||
| 		methods: {
 | ||
| 			scrollBarChange(e) {
 | ||
| 				let {
 | ||
| 					progressPer
 | ||
| 				} = this;
 | ||
| 				let {
 | ||
| 					scrollLeft,
 | ||
| 					scrollWidth
 | ||
| 				} = e.detail;
 | ||
| 				progressPer = scrollLeft / (scrollWidth - this.rectWidth) * 100;
 | ||
| 				this.progressPer = Number(progressPer.toFixed(0));
 | ||
| 			},
 | ||
| 
 | ||
| 			onRecive(id) {
 | ||
| 				if (!this.isLogin) {
 | ||
| 					toLogin();
 | ||
| 					return;
 | ||
| 				}
 | ||
| 
 | ||
| 				getCoupon(id).then(res => {
 | ||
| 					if (res.code == 1) {
 | ||
| 						this.$toast({
 | ||
| 							title: res.msg
 | ||
| 						})
 | ||
| 						this.$emit('reflash');
 | ||
| 					}
 | ||
| 				});
 | ||
| 			},
 | ||
| 
 | ||
| 			goPage() {
 | ||
| 				if (!this.isLogin) {
 | ||
| 					toLogin();
 | ||
| 					return;
 | ||
| 				}
 | ||
| 
 | ||
| 				uni.navigateTo({
 | ||
| 					url: '/pages/user_getcoupon/user_getcoupon'
 | ||
| 				});
 | ||
| 			}
 | ||
| 
 | ||
| 		}
 | ||
| 	};
 | ||
| </script>
 | ||
| <style lang="scss">
 | ||
| 	.every-day-coupon {
 | ||
| 		background-image: url(../../static/images/home_bg_coupon.png);
 | ||
| 		background-size: 100% 100%;
 | ||
| 		background-repeat: no-repeat;
 | ||
| 		height: 264rpx;
 | ||
| 		width: 710rpx;
 | ||
| 		margin: 0 20rpx;
 | ||
| 		padding: 0 20rpx;
 | ||
| 		border-radius: 14rpx;
 | ||
| 		box-sizing: border-box;
 | ||
| 
 | ||
| 		.coupon-header {
 | ||
| 			height: 90rpx;
 | ||
| 
 | ||
| 			.title {
 | ||
| 				margin-left: 20rpx;
 | ||
| 				font-weight: bold;
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		.coupon-contain {
 | ||
| 			.coupon-item {
 | ||
| 				height: 134rpx;
 | ||
| 				width: 326rpx;
 | ||
| 				flex: none;
 | ||
| 				position: relative;
 | ||
| 				background: url(../../static/images/home_bg_coupon_red.png);
 | ||
| 				background-size: 100% 100%;
 | ||
| 
 | ||
| 				&.recieve {
 | ||
| 					background-image: url(../../static/images/home_bg_coupon_gray.png);
 | ||
| 
 | ||
| 					.coupon-right {
 | ||
| 						background-color: #E5E5E5;
 | ||
| 						color: $color-muted;
 | ||
| 					}
 | ||
| 				}
 | ||
| 
 | ||
| 				.coupon-left {
 | ||
| 					width: 269rpx;
 | ||
| 					padding-left: 20rpx;
 | ||
| 					color: white;
 | ||
| 
 | ||
| 					.info {
 | ||
| 						height: 70rpx;
 | ||
| 						border-bottom: 3rpx dashed #fff;
 | ||
| 
 | ||
| 						.money-logo {
 | ||
| 							font-weight: bold;
 | ||
| 							align-self: flex-end;
 | ||
| 							line-height: 50rpx;
 | ||
| 							margin-right: 6rpx;
 | ||
| 							margin-bottom: 4rpx
 | ||
| 						}
 | ||
| 					}
 | ||
| 
 | ||
| 					.desc {
 | ||
| 						margin-top: 10rpx;
 | ||
| 					}
 | ||
| 
 | ||
| 				}
 | ||
| 
 | ||
| 				.coupon-right {
 | ||
| 					width: 57rpx;
 | ||
| 					height: 100%;
 | ||
| 					background-color: #FFE5E6;
 | ||
| 					border-radius: 0rpx 14rpx 14rpx 0rpx;
 | ||
| 					writing-mode: tb;
 | ||
| 
 | ||
| 				}
 | ||
| 
 | ||
| 				.coupon-img {
 | ||
| 					height: 77rpx;
 | ||
| 					width: 99rpx;
 | ||
| 					position: absolute;
 | ||
| 					top: 0;
 | ||
| 					right: 73rpx;
 | ||
| 				}
 | ||
| 			}
 | ||
| 
 | ||
| 		}
 | ||
| 	}
 | ||
| </style>
 |