<template>
	<view class="container order clearfix" :style="{paddingBottom :isIphoneX ? '170rpx' : '134rpx'}">
		<!-- 透明模态层 -->
		<modal-layer v-if='modallayer'></modal-layer>
		<!-- 地址选择 -->
		<choice-address ref="choiceAddress" v-if="isAddress" :addressData="addressData"></choice-address>
		<!-- 商品 -->
		<seller-goodsList ref='goods' v-if="isRequest" :goodsData="goodsData" @handleGoodList="handChangeInputGoodsList"></seller-goodsList>
		<!-- 发票信息 -->
		<seller-invoice ref="invoice" 
						v-if="isRequest && isDepositFlg" 
						:invoiceDatas="invoiceData" 
						@handleChoiceaInvoice="handleChoiceaInvoiceData">
		</seller-invoice>
		<!-- 运费 -->
		<seller-freight ref="freight" 
						v-if="isFreight && isDepositFlg" 
						:freightDatas="freightData" 
						@handleChoiceaFreight="handleChoiceaFreightData" 
						@showFreightAlert="handFreightAlertShow">
		</seller-freight>
		<freight-alert v-if="isfreightTip" ref="csPhone"></freight-alert>
		<!-- 余额抵扣 -->
		<view class="invoice-balance" v-if="!rechargeGoods">
			<view class="balabce-t">
				<view class="balabce-t-le">余额抵扣</view>
				<view class="balabce-t-ri">
					<view class="money">
						<text>可用余额：</text>
						<text>￥{{ userMoney | NumFormat }}</text>
					</view>
					<view class="checkbox-box">
						<button class="checkbox iconfont" 
								hover-class="btn-hover"
								v-if="userMoney!=0"
								@click.stop="checkedBalabce"
								:class="[ischecked ?'icon-gouxuanl':'icon-weigouxuan']"
						>
						</button>
					</view>
				</view>
			</view>
			<view class="balabce-b" :class="{'balabce-b--hide':!ischecked}">	
				<view class="balabce-b-text animation" :style="{'transform':ischecked?'translateY(0)':'translateY(-50%)','-webkit-transform':ischecked?'translateY(0)':'translateY(-50%)'}">
					<text>当前使用：￥{{deductMoney | NumFormat}}，剩余：￥{{ surplusMoney | NumFormat }}</text>
				</view>
			</view>
		</view>
		<!-- 售后条例 -->
		<seller-regulations  ref="regulations"
							 v-if="isRequest && isDepositFlg&&seconDepositFlg" 
							:regulaDatas="regulationsData" 
							@handleData="claData">
		</seller-regulations>
		<regula-alert v-if="isregulaTip" ref="csPhone"></regula-alert>
		<!-- 返佣订单 -->
		<view class="Rebate" @click="RebateChang" v-if="productsList.length==1">
			<text class="rebate-title">返佣订单</text>
			<text class="iconfont" :class="rebatecheck?'icon-yixuanze':'icon-weixuanze'" ></text>
		</view>
		<!-- 底部 -->
		<view class="footer" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
			<view class="footer-le">
				<view class="footer-count">
					<text>共{{allCount}}件商品</text>
				</view>
				<view class="footer-price">
					<view class="sum-none" v-if="reducedPrice > 0">
						<text class="money-sign">￥</text>
						<text class="money">{{ totalOriginalPrice | NumFormat }}</text>
						<text class="money-reduced">减<text>￥{{ reducedPrice | NumFormat}}</text></text>
					</view>
					<view class="sum" :class="reducedPrice == 0 ? 'none' : ''">总价:<text class="price">￥{{payAllPrice | NumFormat}}</text></view>
				</view>
			</view>
			<view class="footer-submit" @click.stop="orderSubmitMit">提交订单</view>
		</view>
	</view>
</template>

<script>
	import choiceAddress from '@/components/cm-module/creatOrder/sellerAddress'  
	import sellerGoodsList from '@/components/cm-module/creatOrder/sellerGoodsList'
	import sellerInvoice from '@/components/cm-module/creatOrder/sellerInvoice'
	import sellerFreight from '@/components/cm-module/creatOrder/sellerFreight'
	import freightAlert from '@/components/cm-module/modelAlert/freightAlert.vue'
	import sellerRegulations from '@/components/cm-module/creatOrder/sellerRegulations.vue'
	import modalLayer from "@/components/modal-layer"
	export default {
		components:{
			choiceAddress,
			sellerGoodsList,
			sellerInvoice,
			sellerFreight,
			freightAlert,
			modalLayer,
			sellerRegulations
		},
		data() {
			return {
				modallayer:false,
				orderID:0,
				clubID:'',
				productIds:'',			  //获取上一级页面商品信息
				productCount:'',		  //获取上一级页面商品数量
				classifyIDS:'',			  //获取上一级页面商品分类
				serviceProviderId:'',	  //协销ID
				cartType:3,			  	  //购买类型（1购物车提交，2直接购买提交,3协销下单）
				submitState:'',  		  //提交状态
				balanceDeductionFlag:2,   //勾选余额的状态(1使用，2不使用)
				allCount:1,				  //订单提交总数量
				totalOriginalPrice:0,	  //订单总原价(划线部分)
				reducedPrice:0,			  //满减金额
				payAllPrice:0.00,		  //订单提交总金额
				allPrice:0.00,			  //订单总金额
				surplusMoney:0.00,		  //显示勾选后的剩余抵扣
				userMoney:0.00,			  //显示可使用余额
				deductMoney:0.00,		  //显示已使用的余额
				addressID:'',			  //地址ID
				townID:'',				  //区ID
				isRequest:false,		  //是否加载完成渲染子组件
				isFreight:false,		  //是否加载完成渲染子组件
				isAddress:false,		  //是否加载完成地址
				isfreightTip:false,		  //控制邮费弹窗
				ischecked:false,	      //是否勾选余额
				addressData:{},			  //初始化地址信息
				goodsData:[],			  //初始化商品信息
				invoiceData:{type:0},	  //初始化发票信息
				freightData:{},			  //邮费数据
				orderInfo:[],			  //提交的商品信息
				payInfo:{},				  //订单信息
				rechargeGoods:false,
				isDepositFlg:true,
				depositIds : [6060,6061,6062,6063,6064,6065,6066,6067,6068,6069],//定金&充值余额商品ID
				isIphoneX:this.$store.state.isIphoneX,
				regulationsData:[],
				clauseId:0,
				seconDepositFlg:true,
				rebateFlag:0,
				rebatecheck:false,
				productsList:[]
			}
		},
		onLoad(option){//商品数据
			let data = JSON.parse(option.data);
			this.allPrice = data.data.allPrice;
			this.allCount = data.data.allCount;
			this.payAllPrice = this.allPrice;
			this.clubId = data.data.clubId
			this.productCount = data.data.productCount
			this.productIds = data.data.productID
			if(option.type =='prodcut'){
				this.getInitProdcutCrearOrder();
			}else{
				this.getInitCrearOrder();
			}
			
			this.$api.getComStorage('orderUserInfo').then((resolve) =>{
				this.clubUserId = resolve.userID
			})
		},
		filters:{
			NumFormat(value) {//处理金额
				return Number(value).toFixed(2);
			},
		},
		methods: {
			RebateChang(){
				this.rebatecheck = !this.rebatecheck;
				if(this.rebatecheck){
					this.rebateFlag=1;
				}else{
					this.rebateFlag=0;
				}
				console.log(this.rebateFlag)
			},
			getInitProdcutCrearOrder(option){//二手下单初始化查询
				this.$api.getStorage().then((resolve) =>{
					this.seconDepositFlg = false;
					this.serviceProviderId = resolve.serviceProviderID
					let params ={clubId:this.clubId,serviceProviderId:this.serviceProviderId,productCount:this.productCount,productId:this.productIds}
					this.SellerService.GetSettlementBySencondProduct(params).then(response =>{
						let resData = response.data
						this.isRequest = true
						this.goodsData = resData.shopList
						this.userMoney = resData.userMoney
					}).catch(error =>{
						this.$util.msg(error.msg,2000)
					})
				})
			},
			getInitCrearOrder(option){//协销购物车跳转确认订单初始化信息
				this.$api.getStorage().then((resolve) =>{
					this.serviceProviderId = resolve.serviceProviderID
					let params ={clubId:this.clubId,serviceProviderId:this.serviceProviderId,count:this.productCount,productIds:this.productIds}
					this.SellerService.SellerSettlement(params).then(response =>{
						let data = response.data
						let productIds = []
						this.isRequest = true
						this.goodsData = data.shopList
						this.userMoney = data.userMoney
						this.reducedPrice = data.reducedPrice
						this.totalOriginalPrice = data.reducedPrice + data.totalAmount
						this.rechargeGoods = data.rechargeGoods
						this.allPrice = this.payAllPrice = data.totalAmount
						this.regulationsData = data.clauseList
						this.goodsData.forEach(item =>{
							this.productsList = item.productsList
							item.productsList.forEach(pros =>{
								if(this.depositIds.indexOf(pros.productID)>=0){
									this.isDepositFlg = false
								}
							})
						})
						console.log(this.isDepositFlg)
					}).catch(error =>{
						this.$util.msg(error.msg,2000)
					})
				})
			},
			getFreightData(){//获取邮费信息
				this.$api.getComStorage('orderUserInfo').then((resolve) =>{
					let params ={
							userId:resolve.userID,
							productIds:this.productIds,
							totalPrice:this.allPrice,
							townId:this.addressData.townID
						}
					this.OrderService.GetOrderPostage(params).then(response =>{
						this.isFreight = true
						this.freightData = response.data
						if(response.data.freePostFlag== 1){
							this.payAllPrice = this.allPrice+response.data.freight
						}else{
							this.payAllPrice = this.allPrice
						}
					})
				})
			},
			getAddressData(){//获取地址信息
				this.$api.getComStorage('orderUserInfo').then((resolve) =>{
					this.UserService.QueryAddressList({pageNum:1,pageSize:1,userID:resolve.userID}).then(response =>{
						this.isAddress = true
						this.addressData = {}
						if(response.data.results != ''){
							this.addressID = response.data.results[0].addressID;
							this.townID = response.data.results[0].townID;
							this.addressData = response.data.results[0];
							this.getFreightData()
						}else{
							this.addressData = this.addressData;
						}
					})
				})
			},
			handChangeInputGoodsList(data){//对应供应商的留言信息
				this.goodsData = data;
			},
			handleChoiceaInvoiceData(data){//获取发票信息
				this.invoiceData = data
			},
			handleChoiceaFreightData(data){//获取运费信息
				if(data.freePostFlag == '1'){
					this.freightData = data
					this.payAllPrice = this.allPrice+parseInt(data.freight)
					this.attributePallPrice()
				}else{
					this.freightData = data
					this.payAllPrice = this.allPrice
					this.attributePallPrice()
				}
			},
			claData(id){
				this.clauseId = id;
			},
			checkedBalabce(){//勾选使用余额
				if(this.userMoney > 0){
					this.ischecked = !this.ischecked
					if(this.ischecked){
						this.balanceDeductionFlag =1
						this.attributePallPrice()
					}else{
						this.balanceDeductionFlag = 2
						if(this.freightData.freePostFlag == 1 || this.freightData.freePostFlag == '1'){
							this.payAllPrice = this.allPrice+parseInt(this.freightData.freight)
						}else{
							this.payAllPrice = this.allPrice
						}
					}
				}else{
					return
				}
			},	
			attributePallPrice(){//计算价格
				if(this.freightData.freePostFlag == 1 || this.freightData.freePostFlag == '1'){
					this.attributeHashfreight(this.freightData.freight)
				}else{
					this.attributeNofreight()
				}
			},
			attributeNofreight(){//计算没有邮费的支付价格
				if(this.ischecked){
					if(this.userMoney>this.payAllPrice){
						this.payAllPrice = 0.00
						this.deductMoney = this.allPrice							//勾选后使用抵余额
						this.surplusMoney = this.userMoney - this.deductMoney	    //勾选后的剩余抵扣
					}else{
						this.payAllPrice = this.allPrice - this.userMoney       	//勾选后的总价
						this.deductMoney = this.userMoney				            //勾选后使用抵余额
						this.surplusMoney = this.userMoney - this.deductMoney	    //勾选后的剩余抵扣
					}
				}else{
					this.payAllPrice = this.allPrice;
					this.deductMoney = 0.00;
					this.surplusMoney = this.userMoney;
				}
			},
			attributeHashfreight(freight){//计算需要邮费的支付价格
				this.payAllPrice = this.allPrice+parseInt(freight)//计算不包邮的价格 总价等于商品价格+邮费
				if(this.ischecked){
					if(this.userMoney>this.payAllPrice){							//余额大于支付金额
						this.payAllPrice =0.00
						this.deductMoney = this.allPrice+parseInt(freight)			//勾选后使用抵余额
						this.surplusMoney = this.userMoney - this.deductMoney	    //勾选后的剩余抵扣
					}else{
						this.payAllPrice = this.allPrice+parseInt(freight) - this.userMoney       	//勾选后的总价
						this.deductMoney = this.userMoney				            //勾选后使用抵余额
						this.surplusMoney = this.userMoney - this.deductMoney	    //勾选后的剩余抵扣
					}
				}else{
					this.payAllPrice = this.allPrice+parseInt(freight)
					this.deductMoney = 0.00
					this.surplusMoney = this.userMoney
				}
			},
			orderSubmitMit(){//提交订单
				if(this.addressID == ''){
					this.$util.msg('请先添加收货地址～',2000)
					return
				}
				// 处理商品信息及留言
				this.orderInfo = this.goodsData.map(el => {
					let productInfo = [];
					el.productsList.forEach(item => {
						productInfo.push({
							productId:item.productID,
							productNum:item.productCount,
							productType:item.giftType ? Number(item.giftType) : 0,
							presentNum:0,
						})
					})				
					return {shopId:el.shopID,note:el.note?el.note:'',productInfo:productInfo}
				})
				//订单信息
				this.payInfo = {
						orderShouldPayFee:this.payAllPrice.toFixed(2),//提交的总价
						balancePayFlag:this.balanceDeductionFlag,//余额抵扣的状态
						freight:parseInt(this.freightData.freight).toFixed(2),//邮费
						freePostFlag:parseInt(this.freightData.freePostFlag),//运费形式
						clauseId:this.clauseId,//售后条款
						rebateFlag:this.rebateFlag,//返佣
					}
					console.log(this.payInfo)
				let params = {
						orderSource:6,				  //提交来源
						clubUserId:this.clubUserId,   //机构UserID
						cartType:this.cartType,		  //从购物车提交
						serviceProviderId:this.serviceProviderId,//帮下单协销ID
						addressId:this.addressID,	  //地址ID
						orderInfo:this.orderInfo,	  //商品信息
						payInfo:this.payInfo,		  //订单信息
						orderInvoice:this.invoiceData //发票信息
					}
				this.modalLayer = true;	
				if(this.rebateFlag==1){
					this.$util.modal('','确定该订单为返佣订单吗？点击确定按钮继续提交订单','确定','取消',true,() =>{
						this.SellerService.SellerCreateOrderSubmit({'params':JSON.stringify(params)}).then(response =>{
							const data = response.data;
							if(data.code === '1'){
								this.$util.msg('支付成功',2000,true,'success')
								setTimeout(() =>{
									this.$api.redirectTo(`/seller/pages/order/order-details?type=cash&orderID=${data.orderID}`)
								},2000)
							}else{
								this.$util.msg('订单提交成功',2000,true,'success')
								setTimeout(()=>{
									this.$api.redirectTo(`/seller/pages/order/order-details?type=cash&orderID=${data.orderID}`)
								},2000)
							}
						}).catch(error =>{
							this.$util.msg(error.msg,2000);
						})
					})
					return
				}else{
					this.SellerService.SellerCreateOrderSubmit({'params':JSON.stringify(params)}).then(response =>{
						const data = response.data;
						if(data.code === '1'){
							this.$util.msg('支付成功',2000,true,'success')
							setTimeout(() =>{
								this.$api.redirectTo(`/seller/pages/order/order-details?type=cash&orderID=${data.orderID}`)
							},2000)
						}else{
							this.$util.msg('订单提交成功',2000,true,'success')
							setTimeout(()=>{
								this.$api.redirectTo(`/seller/pages/order/order-details?type=cash&orderID=${data.orderID}`)
							},2000)
						}
					}).catch(error =>{
						this.$util.msg(error.msg,2000);
					})
				}
			},
			handFreightAlertShow(){//显示邮费弹窗
				this.isfreightTip = true;
			},
			hideFreight(){//关闭邮费弹窗
				this.isfreightTip = false;
			},
		},
		onShow() {
			// this.addressID = ''		
			let pages = getCurrentPages();
			let currPage = pages[pages.length-1];
			if(currPage.data.select =='select'){
				this.isAddress = true
				let SelectData = uni.getStorageSync('selectAddress');
				this.addressID = SelectData.addressID;
				this.addressData = SelectData
				this.getFreightData()
			}else{
				this.getAddressData()
			}
		}
	}
</script>

<style lang="scss">
	page {
		height: auto;
		background:#F7F7F7;
	}
	.btn-hover{
		background: #FFFFFF;
	}
	.animation{
		/* transition: transform 0.3s ease;*/
		transition-property: transform;
		transition-duration: 0.3s;
		transition-timing-function: ease;
	}
	.invoice-freight{
		width: 702rpx;
		padding: 0 24rpx;
		height: 86rpx;
		line-height: 86rpx;
		font-size: $font-size-28;
		color: $text-color;
		background: #FFFFFF;
		float: left;
		font-weight: bold;
		.freight-left{
			float: left;
			.icon-yunfeishuoming{
				height: 100%;
				padding: 0 15rpx;
				color: $color-system;
				font-weight: normal;
			}
		}
		.freight-right{
			float: right;
			color: #2A81FF;
		}
	}
	.invoice-balance{
		width: 702rpx;
		height: auto;
		padding:0 24rpx;
		background: #FFFFFF;
		float: left;
		margin-top: 24rpx;
		margin-bottom: 24rpx;
		.balabce-t{
			width: 100%;
			height: 86rpx;
			line-height: 86rpx;
			font-size: $font-size-28;
			color: $text-color;
			float: left;
			.balabce-t-le{
				float: left;
				font-weight: bold;
			}
			.balabce-t-ri{
				float: right;
				display: flex;
				align-items: center;
				.money{
					display: flex;
					float: left;
				}
				.checkbox-box{
					display: flex;
					width: 60rpx;
					float: left;
					height: 100%;
					font-size: $font-size-24;
					.checkbox{
						width: 40rpx;
						text-align: right;
						box-sizing: border-box;
						text-align: center;
						text-decoration: none;
						border-radius: 0;
						-webkit-tap-highlight-color: transparent;
						overflow: hidden;
						color: $color-system;
						padding: 5rpx;
					}
				}	
			}
		}
		.balabce-b{
			width: 100%;	
			float: left;
			overflow: hidden;
			.balabce-b-text{
				width: 100%;
				line-height: 58rpx;
				font-size: $font-size-24;
				color: #FF2A2A;
				text-align: right;
				float: right;
			}
			&.balabce-b--hide {
				padding: 0 0;
				height: 0px;
				line-height: 0px;
			}	
		}
	}
	.footer{
		position: fixed;
		left: 0;
		bottom: 0;
		z-index: 995;
		display: flex;
		align-items: center;
		width: 100%;
		height: 110rpx;
		line-height: 110rpx;
		justify-content: space-between;
		font-size: $font-size-28;
		background-color: #FFFFFF;
		z-index: 998;
		color: $text-color;
		.footer-le{
			width:570rpx;
			height:100%;
			float: left;
		}
		.footer-count{
			float: left;
			padding-left: 24rpx;
			width:190rpx;
			box-sizing: border-box;
			font-size: $font-size-26;
		}
		.footer-price{
			width:370rpx;
			float: right;
			text-align: right;
			color: $text-color;
			padding: 10rpx 20rpx 10rpx 0;
			box-sizing: border-box;
			.sum-none{
				width: 100%;
				height: 45rpx;
				line-height: 45rpx;
				color: $text-color;
				float: left;
				text-align: right;
				.money{
					font-size: $font-size-26;
					color: #999999;
					text-decoration: line-through;
				}
				.money-sign{
					font-size: $font-size-26;
					color: #999999;
					text-decoration: line-through;
				}
				.money-reduced{
					margin-left: 10rpx;
					font-size: $font-size-26;
					color:$color-system;
				}
			}
			.sum{
				width: 100%;
				height: 45rpx;
				line-height: 45rpx;
				float: left;
				&.none{
					height: 90rpx;
					line-height: 90rpx;
				}
				.price{
					font-size: $font-size-32;
					color: #FF2A2A;
				}
			}
			
		}
		.footer-submit{
			display:flex;
			align-items:center;
			justify-content: center;
			width: 180rpx;
			height: 100%;
			color: #FFFFFF;
			background:linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);
		}
	}
	.Rebate{
		width: 702rpx;
		height: auto;
		padding: 0 24rpx;
		background: #FFFFFF;
		float: left;
		margin-bottom: 24rpx;
		margin-bottom: 24rpx;
		line-height: 86rpx;
		.rebate-title{
			float: left;
			font-weight: bold;
			color: #333333;
			font-size: $font-size-28;
		}
		.iconfont{
			float: right;
			color: #b2b2b2;
			font-size: 40rpx;
			&.icon-yixuanze{
				color: $color-system;
			}
		}
	}
	
</style>
