<template>
	<view class="container all-type-list-wrapper">
		<immediately-list ref="productList"
						  :search-status="true"
						  @operationConfim="hanldOperationConfim"
						  @alertjietiConfim ="hanldalertjietiConfim"
						  @goCartPage="hanldToCartPage"
						  :tabBars="tabBars"
						  :tabIndex="tabIndex"
						  @changetab="hanldChangeTab"
						  >
		</immediately-list>
		<!--底部选择模态层弹窗组件 -->
		<view class="popup spec"  :class="specClass"  @touchmove.stop.prevent="discard" @tap="hideSpec" >
			<!-- 遮罩层 -->
			<view class="mask"></view>
			<view class="layer" @tap.stop="discard" :style="{paddingBottom :isIphoneX ? '68rpx' : '36rpx',bottom:isIphoneX ?'-370rpx' : '-360rpx'}">
				<view class="content">
					<view class="layer-smimg">
						<image :src="handleData.image" mode=""></image>
					</view>
					<view class="layer-nunbox">
						<view class="layer-nunbox-m" v-if="handleData.code!=''&& handleData.code!=null">商品编码：{{handleData.code}}</view>
						<view class="layer-nunbox-t">
							<view class="layer-nunbox-text">数量：</view>
							<view class="number-box">
								<view  class="iconfont icon-jianhao" :class="[isQuantity==true?'disabled':'']" @click="changeCountSub()"></view>
								<input class="btn-input" type="number" v-model="number" maxlength='6'  @blur="changeNumber($event)">
								<view  class="iconfont icon-jiahao"  :class="[isStock==true?'disabled':'']" @click="changeCountAdd()"></view>
							</view>
						</view>
						<view class="layer-nunbox-b">
							<view class="text">单价：
								<text class="p sm">￥</text>
								<text class="p bg">{{ buyRetailPrice | NumFormat }}</text>
							</view>
						</view>
					</view>
				</view>
				<view class="btn">
					<view class="button add" @click="getAddProductCart">加入购物车</view>
				</view>
			</view>
		</view>
		<!-- 组合加入购物车 -->
		<view class="popup spec zuhe" :class="specClasszuhe"  @touchmove.stop.prevent="discard" @tap="hideSpecs">
			<!-- 遮罩层 -->
			<view class="mask"></view>
			<view class="layer" @tap.stop="discard" :style="{paddingBottom :isIphoneX ? '68rpx' : '36rpx',bottom:isIphoneX ?'-290rpx' : '-270rpx'}">
				<view class="content zuhe-content">
					<view class="number-left">
						<text>种类：{{productKind}}</text>
						<text>数量：{{productTotalNum}}</text>
					</view>
					<view class="number-right">
						<view class="text">
							总额：<text class="number-right-text">￥{{ productTotalAmount | NumFormat }}</text>
						</view>
					</view>
				</view>
				<view class="btn">
					<view class="button add" @click="getzuheCart">确定</view>
				</view>
			</view>
		</view>

		<!--  -->
		<view class="popup spec zuhe" :class="specClassjieti"  @touchmove.stop.prevent="discard" >
			<view class="mask"></view>
			<view class="jieti_box " @tap.stop="discard">
				<view class="jieti_box_one">
					<view class="jieti_left" >
						<view>起订量</view>
						<view class="ladder-a"  v-for="(item,index) in ladderPriceList" :key="index">
							{{item.buyNumRangeShow}}
						</view>
					</view>
					<view class="jieti_right" >
						<view>价格</view>
						<view class="" v-for="(item,index) in ladderPriceList" :key="index">￥ {{item.buyPrice | NumFormat}}</view>
					</view>
				</view>
				<view class="addbtn" @tap="hideSpecjieti">知道了</view>
			</view>
		</view>
	</view>
</template>

<script>
	import immediatelyList from '@/components/cm-module/listTemplate/immediatelyList'
	export default{
		components:{
			immediatelyList
		},
		data(){
			return{
				clubId:'',	//机构ID
				serviceProviderId:'',//协销ID
				serverUrl: '',
				emptyText: '',
				lastPageType: '',
				lastPageVal: '',
				isIphoneX:this.$store.state.isIphoneX,
				specClass: '',//规格弹窗css类，控制开关动画
				specClasszuhe:'',//组合加购物车弹窗
				specClassjieti:'',//阶梯展示弹窗
				ladderPriceList:{},
				handleData:{},
				isQuantity:false,
				isStock:false,
				minBuyNumber:0,
				number:0,
				buyRetailPrice:0,
				hanldChangeTabIndex:0,
				handleDataLadderPriceList:[],
				productKind:0,
				productTotalNum:0,
				productTotalAmount:0,
				buyNumRangeShow:'',//起订量范围
				buyPrice:'',//起订量范围价格
				buyRetailPriceStep:1,
			}
		},
		onLoad() {

		},
		filters:{
			NumFormat(value) {//处理金额
				return Number(value).toFixed(2);
			},
		},	
		methods:{
			getClubProductNum(){// 获取协销下机构购物车数量
				this.SellerService.GetSellerProductNum(
					{
						clubId:this.clubId,
						serviceProviderId:this.serviceProviderId,
					}
				).then(response =>{
					this.$refs.productList.cartQuantity = response.data
				})
			},
			hanldChangeTab(index){
				if(index == 1){
					this.$refs.productList.getcombinationProduct()
				}
			},
			hanldalertjietiConfim(data){
				this.ladderPriceList = data.ladderPriceList
				this.specClassjieti='show';
			},
			hanldOperationConfim(data){//显示选择数量确认弹窗
				this.handleData = data
				console.log(this.handleData)
				if(this.$refs.productList.tabIndex == 1){
					if(data.productKind ==0){
						this.$util.msg(`请至少选购一种商品`,2000);
					}else{
						this.specClasszuhe = 'show';
						this.productKind= data.productKind;
						this.productTotalNum = data.productTotalNum;
						this.productTotalAmount = data.productTotalAmount;
					}
				}else{
					this.number = data.minBuyNumber
					this.minBuyNumber = data.minBuyNumber
					this.buyRetailPrice = data.price;
					this.buyRetailPriceStep = data.step
					this.specClass = 'show';
					if(this.handleData.ladderPriceFlag == '1'){
						this.ProductService.GetSearchProductLadderPrice({productId:this.handleData.productId}).then(response=>{
							this.handleDataLadderPriceList = response.data
							this.handleDataLadderPriceList.forEach((item,index)=>{
								if(this.number>=item.buyNum){
									this.buyRetailPrice = item.buyPrice
								}
							})
						}).catch(error =>{
							console.log('获取阶梯价格异常')
						})
					}
				}
			},
			hideSpec() {//关闭选择数量确认弹窗
				this.specClass = 'hide';
				setTimeout(() => {
					this.specClass = 'none';
				}, 200);
			},
			hideSpecs(){
				this.specClasszuhe='hide';
				setTimeout(() => {
					this.specClasszuhe='none';
				}, 200);
			},
			hideSpecjieti(){
				this.specClassjieti='hide';
				setTimeout(() => {
					this.specClassjieti='none';
				}, 200);
			},
			changeCountAdd(){//popup弹窗数量增加按钮
				if(this.buyRetailPriceStep == 2){
					this.number += this.minBuyNumber
				}else{
					this.number++
				}
				this.calculatPerice()
			},
			changeCountSub(){//popup弹窗数量减按钮
				if(this.number<=this.minBuyNumber){
					this.number= this.minBuyNumber
					this.isQuantity =true
					this.$util.msg(`该商品最小起订量为${this.minBuyNumber}`,2000);
					return
				}else{
					if(this.buyRetailPriceStep == 2){
						this.number-=this.minBuyNumber
					}else{
						this.number--
					}
					this.calculatPerice()
					this.isQuantity =false
				}
			 },
			changeNumber(e){
				let _value = e.detail.value;
				if(!this.$api.isNumber(_value)){
					this.number = this.minBuyNumber
				}else if(_value < this.minBuyNumber){
					this.$util.msg(`该商品最小起订量为${this.minBuyNumber}`,2000);
					this.number = this.minBuyNumber
				}else if( _value % this.minBuyNumber !=0 ){
					this.$util.msg(`购买量必须为起订量的整数倍`,2000);
					this.number = this.minBuyNumber
				}else{
					this.number = e.detail.value
					this.calculatPerice()
				}
			},
			calculatPerice(){//判断是否为阶梯价然后做计算价格处理
				if(this.handleData.ladderPriceFlag == '1'){
					this.handleDataLadderPriceList.forEach((item,index)=>{
						if(this.number>=item.buyNum){
							this.buyRetailPrice = item.buyPrice
						}
					})
				}else{
					this.buyRetailPrice = this.handleData.price;
				}
			},
			getzuheCart(){//组合商品加入购物车
				let productInfo=[];
				this.handleData.combinationProductList.forEach(item =>{
					if(item.initProductNum >0){
						let handObj = {
								id : item.productId,
								count : item.initProductNum
							}
						productInfo.push(handObj)
					}
				})
				this.SellerService.ShoppingCartBatchAddCart(
					{
						clubId:this.clubId,
						serviceProviderId:this.serviceProviderId,
						productInfo:JSON.stringify(productInfo),
						type:2
					}
				).then(response => {
					this.specClasszuhe = 'hide';
					this.$util.msg('加入购物车成功',1500,true,'success');
					this.getClubProductNum();
					this.clearProduct();//清空
					setTimeout(() => {this.specClasszuhe = 'none'}, 200)
				}).catch(error =>{
					this.$util.msg(error.msg,2000);
				})
			},
			clearProduct(){//成功加入购物车后清空所选值
				this.handleData.productKind= 0;
				this.handleData.productTotalNum = 0;
				this.handleData.productTotalAmount = 0;
				this.handleData.combinationProductList.forEach(item =>{
					item.initProductNum = 0;
				})
			},
			getAddProductCart(){//增加购物车成功和toast弹窗提示成功
				this.SellerService.ShoppingCartAddCart(
					{
						productId:this.handleData.productId,
						clubId:this.clubId,
						serviceProviderId:this.serviceProviderId,
						productCount:this.number,
						type:1
					}
				).then(response => {
					this.specClass = 'hide';
					this.$util.msg('加入购物车成功',1500,true,'success')
					this.getClubProductNum();
					setTimeout(() => {this.specClass = 'none'}, 200)
				}).catch(error =>{
					this.$util.msg(error.msg,2000);
				})
			},
			hanldToCartPage(){
				this.$api.navigateTo('/pages/seller/cart/cart')
			},
			discard(){
				//丢弃
			}
		},
		onShow() {
			this.$api.getComStorage('orderUserInfo').then((resolve) =>{
				this.clubId = resolve.clubId ? resolve.clubId : 0
			})
			this.$api.getStorage().then((resolve) =>{
				this.serviceProviderId = resolve.serviceProviderId
				this.getClubProductNum()
			})
		},
	}
</script>

<style lang="scss">
	// 阶梯价格弹窗
	.jieti_box{
		width: 596rpx;
		// height: 496rpx;
		top: 10%;
		right: 50%;
		transform: translate(50%,50%);
		position: absolute;
		background:#FFFFFF;
		color: #000;
		font-size: 28rpx;
		border-radius: 10rpx;
		text-align: center;
		line-height: 84rpx;
		padding: 20rpx;
		z-index: 99999;
	}
	.jieti_box_one{
		// width: 548rpx;
		overflow: hidden;
		border: 2rpx solid #F5F5F5;
		border-bottom: 0;
		margin: auto;
	}
	.jieti_left{
		width: 298rpx;
		float: left;
		}
	.jieti_left view{
		height: 84rpx;
		border-bottom:2rpx solid #F5F5F5 ;
		border-right:2rpx solid #F5F5F5  ;
	}
	.ladder-a{
		letter-spacing: 4rpx;
	}
	.jieti_right{
			width: 294rpx;
			float: right;
		}
	.jieti_right view{
			height: 84rpx;
			border-bottom:2rpx solid #F5F5F5;
		}
	.addbtn{
			height: 84rpx;
			background: linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);
			text-align: center;
			font-size: 28rpx;
			color: #fff;
			line-height: 84rpx;
			border-radius: 42rpx;
			margin: 20rpx auto
		}
	.zuhe-content{
		display: inline-block;
	}
	.number-left{
		float: left;
	}
	.number-right{
		margin-left: 30rpx;
		float: left;
	}
	.number-left text{
		margin-left: 30rpx;
	}
	.number-right-text{
		color: #FF2A2A;
	}
	page {
		background: $sub-bg-color;
		.all-type-list-wrapper {
			display: flex;
			flex-direction: column;
		}
	}
	/* 加入购物模态层*/
	@keyframes showPopup {
		0% {
			opacity: 0;
		}
		100% {
			opacity: 1;
		}
	}
	@keyframes hidePopup {
		0% {
			opacity: 1;
		}
		100% {
			opacity: 0;
		}
	}
	@keyframes showLayer {
		0% {
			transform: translateY(0);
		}
		100% {
			transform: translateY(-100%);
		}
	}
	@keyframes hideLayer {
		0% {
			transform: translateY(-100%);
		}
		100% {
			transform: translateY(0);
		}
	}
	@keyframes showAmnation {
		0% {
			top: -12rpx;
			opacity: 0;
		}
		50% {
			top: -60rpx;
			opacity: 1;
		}
		100% {
			top: -100rpx;
			opacity: 0;
		}
	}
	@keyframes hideAmnation {
		0% {
			top: -100rpx;
			opacity: 0;
		}
		100% {
			top: -12rpx;
			opacity: 0;
		}
	}
	.popup {
		position: fixed;
		top: 0;
		width: 100%;
		height: 100%;
		z-index: 999;
		display: none;
		.mask{
			position: fixed;
			top: 0;
			width: 100%;
			height: 100%;
			z-index: 21;
			background-color: rgba(0, 0, 0, 0.6);
		}
		.layer {
			position: fixed;
			z-index: 22;
			bottom: -360rpx;
			width: 702rpx;
			padding: 24rpx 24rpx 36rpx 24rpx;
			// height: 236rpx;
			border-radius: 20rpx 20rpx 0 0;
			background-color: #fff;
			display: flex;
			flex-wrap: wrap;
			align-content: space-between;
			.content {
				width: 100%;
				margin-top: 20rpx;
			}
			.btn {
				width: 100%;
				// height: 88rpx;
				display: flex;
				.button {
					width: 702rpx;
					height: 88rpx;
					color: #fff;
					display: flex;
					align-items: center;
					justify-content: center;
					font-size: $font-size-28;
					border-radius: 44rpx;
					background: $btn-confirm;
					margin-top: 20rpx;
				}
			}
		}
		.layer-nunbox-m{
			font-size: 28rpx;
		}
		&.show {
			display: block;
			.mask{
				animation: showPopup 0.2s linear both;
			}
			.layer {
				animation: showLayer 0.2s linear both;
			}
		}
		&.hide {
			display: block;
			.mask{
				animation: hidePopup 0.2s linear both;
			}

			.layer {
				animation: hideLayer 0.2s linear both;
			}
		}
		&.none {
			display: none;
		}
		&.service {
			.row {
				margin: 30upx 0;
				.title {
					font-size: 30upx;
					margin: 10upx 0;
				}
				.description {
					font-size: 28upx;
					color: #999;
				}
			}
		}
		.layer-smimg{
			width: 158rpx;
			height: 158rpx;
			float: left;
			border-radius: 10rpx;
			margin-right: 24rpx;
			image{
				width: 158rpx;
				height: 158rpx;
				border-radius: 10rpx;
			}
		}
		.layer-nunbox{
			justify-content: space-between;
			align-items: center;
			width: 510rpx;
			height: 88rpx;
			padding: 10rpx 0 0 0;
			float: left;
			.layer-nunbox-t{
				width: 100%;
				height:44rpx;
				position:relative;
				display: flex;
				margin-top: 10rpx;
				.layer-nunbox-text{
					line-height: 44rpx;
					font-size: $font-size-28;
				}
				.number-box{
					display: flex;
					justify-content: center;
					align-items: center;
					border: 2rpx solid #ffe6dc;
					border-radius: 30rpx;
					height: 48rpx;
					margin-left: 20rpx;
					.iconfont{
						font-size: $font-size-24;
						padding:0 18rpx;
						color: #999999;
						text-align: center;
						line-height: 48rpx;
						font-weight: bold;
						background: #fef6f3;
						&.icon-jianhao{
							border-radius: 30rpx 0 0 30rpx;
						}
						&.icon-jiahao{
							border-radius: 0 30rpx 30rpx 0;
						}
					}
					.btn-input{
						width: 80rpx;
						height: 48rpx;
						line-height: 48rpx;
						background: #FFFFFF;
						border-radius: 4rpx;
						text-align: center;
						font-size: $font-size-28;
					}
				}
				.product-step{
					position: absolute;
					left: 45rpx;
					bottom: 0;
					height: 44rpx;
					background: #FFFFFF;
				}
			}
			.layer-nunbox-b{
				width: 100%;
				height:44rpx;
				margin-top: 13rpx;
			}
			.text{
				line-height: 44rpx;
				font-size: $font-size-28;
				.p{
					color: #FF2A2A;
				}
				.p:first-child{
					margin-left: 30rpx;
				}
				.p.sm{
					font-size: $font-size-24;
				}
			}
		}
	}

	.zuhe .layer{
		bottom: -270rpx;
		height: 200rpx;
	}
</style>
