<template>
	<view class="container activity">
		<view class="activity-banner">
			<image class="activity-banner-image" :src="activityBanner" mode=""></image>
		</view>
		<!-- 商品列表 -->
		<view class="container-section tui-skeleton clearfix">
			<view class="product-list" v-for="(pro,index) in productList" :key="index" @click.stop="Details(pro)">
				<view class="product-list-image">
					<image class="product-image" :src="pro.mainImage" mode=""></image>
					<image class="product-icon" :src="StaticUrl+'icon-hot.png'" mode="" v-if="pro.activeStatus == 1"></image>
				</view>
				<view class="product-list-msg">
					<view class="product-msg-name">{{ pro.name }}</view>
					<view class="product-list-tag" v-if="pro.activeStatus == 1"><text class="tag">活动价</text></view>
					<view class="product-list-pri">
						<view class="price">￥{{ pro.price | PriceFormat}}</view>
						<view class="carts" @click.stop="handAddCarts(pro)">
							<view class="carts-add">
								<text class="iconfont icon-gouwuche"></text>
							</view>
						</view>
					</view>
				</view>
			</view>
		</view>
	</view>
</template>

<script>
	import wxLogin from "@/services/wxLogin.js"
	import { mapState,mapMutations} from 'vuex';
	export default{
		data(){
			return{
				activityBanner:`${this.$Static}banner.png`,
				listQuery:{
					activityId:0,
					userId:0,
					pageNum:1,
					pageSize:10
				},
				UserId:0,//存储普通用户ID
				hasNextPage:false,
				productList:[],//商品列表
			}
		},
		onLoad(option) {
			this.listQuery.activityId = option.activityId
			this.listQuery.userId = option.userId
			this.GetProductActivityDetails();
		},
		filters: {
			//处理金额
			PriceFormat: function(text) {
				return Number(text).toFixed(2)
			}
		},
		computed: {
			...mapState(['hasLogin','userInfo','identity','isActivity'])
		},
		methods:{
			GetProductActivityDetails(){//初始化活动详情
				this.ProductService.GetProductActivityDetails(this.listQuery).then(response => {
					const data = response.data
					this.activityBanner = data.image
					this.hasNextPage = data.pageInfo.hasNextPage
					this.productList = data.pageInfo.list
				}).catch(error =>{
					this.$util.msg(error.msg,2000);
				})
			},
			GetOnReachBottomData(){//上滑加载更多
				this.listQuery.pageNum+=1
				this.ProductService.GetProductActivityDetails(this.listQuery).then(response => {
					const data = response.data
					this.hasNextPage = data.pageInfo.hasNextPage
					this.productList = this.productList.concat(data.pageInfo.list) 
				}).catch(error =>{
					this.$util.msg(error.msg,2000);
				})
			},
			Details(pro){
				this.$api.navigateTo(`/pages/goods/product-activi?productId=${pro.productId}&heUserId=${this.listQuery.userId}`)
			},
			handAddCarts(pro){
				if(!this.hasLogin){
					this.$api.navigateTo(`/pages/login/login`)
				}else{
					this.ProductService.shoppingAddCart(
						{
							productId:pro.productId,
							userId:this.UserId*1,
							productCount:1,
							heUserId:this.listQuery.userId*1,
						}
					).then(response => {
						this.$util.msg('加入购物车成功',1500,true,'success')
						this.GetCartNumber()
					}).catch(error =>{
						console.log('查询购物车数量错误信息',error)
					})
				}
			},
			GetCartNumber(){//查询购物车数量
				this.ProductService.QueryShoppingQuantity({userId:this.userId}).then(response => {
					this.$store.commit('updateAllNum',response.data)
					this.skeletonShow = false;
				}).catch(error =>{
					console.log('查询购物车数量错误信息',error)
				})
			}
		},
		onPullDownRefresh() {//下拉刷新
			this.listQuery.pageNum = 1
			THIS.GetProductActivityDetails()
			uni.stopPullDownRefresh()
		},
		onReachBottom(){
			if(this.hasNextPage){
				this.GetOnReachBottomData()
			}
		},
		onShow() {
			wxLogin.wxLoginQuick()
			this.$api.getStorage().then((resolve) => {
				this.UserId = resolve.userId ? resolve.userId : '';	
			})
		},
		onShareAppMessage(res){//分享转发
			if (res.from === 'button') {
		      // 来自页面内转发按钮
		    }
			return {
			  title: '活动名称活动名称活动名称活动名称活动名称活动名称',
			  path: `/pages/user/activity/activity?activityId=${this.listQuery.activityId}&userId=${this.listQuery.userId}`,
			  imageUrl:'https://static.caimei365.com/app/mini-hehe/icon/icon-index-share.jpg'
			}
		},
	}
</script>

<style lang="scss">
	page{
		height: auto !important;
		background-color: $color-system;
	}
	.activity-banner{
		width: 100%;
		height: 600rpx;
		float: left;
		margin-bottom: 64rpx;
		.activity-banner-image{
			width: 100%;
			height: 100%;
			display: block;
		}
	}
	.container-section{
		width: 100%;
		height: auto;
		box-sizing: border-box;
		padding: 0 24rpx;
		.product-list{
			width: 339rpx;
			height: 532rpx;
			float: left;
			margin-right: 24rpx;
			margin-bottom: 24rpx;
			background-color: #FFFFFF;
			border-radius: 16rpx;
			&:nth-child(2n){
				margin-right: 0;
			}
			.product-list-image{
				width: 100%;
				height: 339rpx;
				float: left;
				position: relative;
				.product-image{
					width: 100%;
					height: 100%;
					display: block;
					border-radius: 16rpx 16rpx 0 0;
				}
				.product-icon{
					width: 68rpx;
					height: 55rpx;
					display: block;
					position: absolute;
					top: 0;
					left: 34rpx;
				}
			}
			.product-list-msg{
				width: 100%;
				height: 193rpx;
				box-sizing: border-box;
				padding: 16rpx 24rpx;
				float: left;
				position: relative;
				.product-msg-name{
					width: 100%;
					height: 72rpx;
					line-height: 35rpx;
					text-overflow: ellipsis;
					overflow: hidden;
					display: -webkit-box;
					-webkit-line-clamp: 2;
					line-clamp: 2;
					-webkit-box-orient: vertical;
					font-size: $font-size-26;
					color: #333333;
					text-align: justify;
					float: left;
				}
				.product-list-tag{
					width: 100%;
					height: 30rpx;
					margin-top: 8rpx;
					float: left;
					.tag{
						display: inline-block;
						width: 80rpx;
						height: 30rpx;
						background: url(https://static.caimei365.com/app/mini-hehe/icon/icon-active.png)top center no-repeat;
						background-size: contain;
						font-size: 22rpx;
						line-height: 30rpx;
						text-align: center;
						color: #f83c6c;
						float: left;
					}
				}
				.product-list-pri{
					width: 100%;
					height: 44rpx;
					float: left;
					position: absolute;
					bottom: 16rpx;
					left: 0;
					box-sizing: border-box;
					padding: 0 24rpx;
					.price{
						float: left;
						font-size:$font-size-26;
						color: #f83c6c;
						font-weight: bold;
						line-height: 44rpx;
					}
					.carts{
						float: right;
						.carts-add{
							width: 44rpx;
							height: 44rpx;
							text-align: center;
							line-height: 44rpx;
							background-color: #ff457b;
							border-radius: 50%;
							.iconfont{
								font-size: 32rpx;
								color: #FFFFFF;
							}
						}
					}
				}
			}
		}
	}
	
</style>
