<template>
	<view class="page">
		<!-- 导航栏 -->
		<navbar title="商品支付" leftClick @leftClick="$utils.navigateBack" color="#fff" />

		<view class="content">

			<!-- 商品详情 -->
			<productCard :data="payOrderProduct[0]" :readonly="true"></productCard>
			<!-- <view class="product-item" v-for="item in payOrderProduct" :key="item.id">
				<view class="img-box">
					<image :src="item.image" mode="aspectFill"></image>
				</view>

				<view class="server-info">
					<view class="server-title">{{ item.title }}</view>

					<view class="texture">
						材质：{{ item.subText }}
					</view>

					<view class="stepper">
						<uv-number-box button-size="60" v-model="item.num"></uv-number-box>
					</view>

					<view class="sales-volume">
						<view class="desc">已售出 {{ item.payNum }}单</view>
					</view>
				</view>
			</view> -->

			<view class="card payment">
				<uv-radio-group v-model="payMethod">
					<view class="flex payment-item">
						<image class="icon" src="../static/createOrder/icon-wx.png" mode="widthFix"></image>
						<text class="label">微信支付</text>
						<uv-radio :name="0" activeColor="#84A73F" size="39rpx" icon-size="39rpx"/>
					</view>
					<view class="flex payment-item">
						<image class="icon" src="../static/createOrder/icon-account.png" mode="widthFix"></image>
						<text class="label">账户余额<text class="desc">{{ `（余额:￥${riceInfo.balance || 0}）` }}</text></text>
						<uv-radio :name="1" activeColor="#84A73F" size="39rpx" icon-size="39rpx"/>
					</view>
				</uv-radio-group>
			</view>
			
		</view>

		<template v-if="false">

			<!-- 优惠券 -->
			<view @click="openCoupon" class="cell-item">
				<view class="cell-item-left">
					<image src="@/pages_order/static/createOrder/coupon.png" mode="widthFix" class="cell-icon"></image>
					<view class="user-name">优惠券</view>
					<view class="descript">(￥{{ coupon.money || 0}})</view>
				</view>
				<view class="cell-item-right">
					<!-- <radio color="#E3441A" :value="2" :checked="coupon.id" /> -->
				</view>
			</view>

			<!-- 提示 -->
			<view class="hint"
			v-if="payOrderProduct[0] && payOrderProduct[0].orderDetails">
				{{ payOrderProduct[0].orderDetails }}
			</view>

			<!-- 用户协议 -->
			<view class="agreement">
				<radio color="#E3441A" @click="agreement = !agreement" :checked="agreement" />
				本人已同意<text @click="$refs.popup.open('user_xy')">《用户使用协议》</text>
			</view>

			<!-- 下单 -->
			<view class="submit">
				<view class="price">
					<view>
						<text style="color: #000;">合计</text>
						￥<text style="font-size: 18px;
						font-weight: 600;">{{ totalPrice }}</text>元
					</view>
				</view>
				<view class="btn" @click="submit">
					立即支付
				</view>
			</view>

		</template>

		<!-- 优惠券选择-->
		<uv-popup ref="couponPopup" :round="30">
			<couponList ref="couponList" height="60vh" @select="selectCoupon" />
		</uv-popup>
		
		<configPopup ref="popup"></configPopup>

	</view>
</template>

<script>
	import productCard from '@/components/product/productCard.vue'

	import addressList from '../components/address/addressList.vue'
	import couponList from '@/components/couponList/couponList.vue'

	import {
		mapState
	} from 'vuex'

	export default {
		components: {
			productCard,

			addressList,
			couponList
		},
		data() {
			return {
				address: {
					name: '请选择地址',
					address: '',
				},
				addressTotal: 0,
				remark: '',
				num: 1,
				agreement: false,
				coupon: {},
				payMethod : 0,
				isGive : 0,
				type : '',
				titleMap : {
						def : '确认订单',
						give : '送礼清单',
				},
				multiNum: 2, // 多人礼包人数
				multiMinNum: 2, // 最小人数
				multiMaxNum: 100, // 最大人数
			}
		},
		computed: {
			totalPrice() {
				let price = 0

				this.payOrderProduct.forEach(n => {
					price += n.price * n.num
				})

				if (this.coupon.id) {
					price -= this.coupon.money
				}

				return Number(price).toFixed(2)
			},
			...mapState(['userInfo', 'payOrderProduct']),
		},
		onLoad(args) {
            this.type = args.type || 'def'
            if(this.type == 'give'){
                this.isGive = 1
            }
			this.$store.commit('getUserInfo')
		},
		onShow() {
			// todo
			return
			this.getAddressList()
			this.getCouponList()
		},
		methods: {
			// 打开
			getAddressList() {
				// 获取地址列表
				this.$refs.addressList.getAddressList().then(res => {
					this.addressTotal = res.total
					if (this.addressTotal != 0) {
						this.address = res.records[0]
					}
				})
			},
			//获取优惠券列表
			getCouponList() {
				this.$refs.couponList.getCouponList()
			},
			// 打开选择地址
			openAddress() {
				if (this.addressTotal == 0) {
					return uni.navigateTo({
						url: '/pages_order/mine/address?type=back'
					})
				}
				this.$refs.addressPopup.open('bottom')
			},
			// 选择地址
			selectAddress(e) {
				this.address = e
				this.$refs.addressPopup.close()
			},
			// 打开优惠券选择
			openCoupon() {
				if (this.addressTotal == 0) {
					return uni.navigateTo({
						url: '/pages_order/mine/address?type=back'
					})
				}
				this.$refs.couponPopup.open('bottom')
			},
			// 选择优惠券
			selectCoupon(e) {
				//判断优惠券限制
				let {
					useMoney
				} = e
				let productTotalPrice = 0
				this.payOrderProduct.forEach(item => {
					productTotalPrice += item.price
				})
				if (productTotalPrice < useMoney) {
					return uni.showToast({
						title: `此优惠券需要满${useMoney}使用`,
						icon: "none"
					})
				}
				this.coupon = e
				this.$refs.couponPopup.close()
			},

			submit() {

				let addressId = this.address.id

				if (!addressId) {
					uni.showToast({
						title: '请选择地址',
						icon: 'none'
					})
					return
				}
				
				if (!this.agreement) {
					uni.showToast({
						title: '请先同意使用协议',
						icon: 'none'
					})
					return
				}

				let data = {}
				let api = ''

				// 不是送礼
				if(this.type != 'give'){

					let list = []
					this.payOrderProduct.forEach(n => {
						list.push({
							num: n.num,
							shopId: n.shopId || n.id,
						})
					})
					data = {
						addressId,
						payType : this.payMethod,
						list: JSON.stringify(list),
					}
					
					api = 'createSumOrder'

					this.deleteCart(this.payOrderProduct.map(n => n.id).join(','))

				} else { //体验、常规商品
					data = {
						addressId,
						num: this.payOrderProduct[0].num,
						shopId: this.payOrderProduct[0].id,
						payType : this.payMethod,
                        isGive : this.isGive,
                        memberNum : 1,
					}
					api = 'createOrder'
				}
				
				if(this.coupon.id){
					data.couponId = this.coupon.id
				}
                if(this.isGive == 2){
					data.memberNum = this.multiNum
				}

				this.$api(api, data, res => {
					if (res.code == 200) {
						
						if(this.payMethod == 1){
							// uni.showToast({
							// 	title: '下单成功',
							// 	icon: 'none'
							// })
							this.paySuccess(res)
							return
						}
						
						uni.requestPaymentWxPay(res)
                        .then(e => {
                            uni.showToast({
                                title: '下单成功',
                                icon: 'none'
                            })

                            this.paySuccess(res)
                        }).catch(n => {
                            setTimeout(uni.redirectTo, 700, {
                                url: '/pages/index/order'
                            })
                        })
					
					}
				})
			},
            paySuccess(res){
                if(this.type == 'def'){
                    setTimeout(uni.redirectTo, 700, {
                        url: '/pages/index/order'
                    })
                }else{
                    setTimeout(uni.redirectTo, 700, {
                        url: `/pages_order/order/instantGift?id=${res.message}`
                    })
                }
            },
			// 删除购物车
			deleteCart(ids) {
				this.$api('deleteCart', {
					ids
				})
			},
		}
	}
</script>

<style scoped lang="scss">
	.page {
		overflow: auto;
		padding-bottom: 300rpx;
		
		/deep/ .nav-bar__view {
			padding-bottom: 190rpx;
			background-image: linear-gradient(#84A73F, #D8FF8F);
		}

		.content {
			position: absolute;
			z-index: 999;

			transform: translateY(-118rpx);
		
			width: 100vw;
			padding: 0 13rpx;
			box-sizing: border-box;
		}

		/deep/ .product-card__view {
			// margin: 0 13rpx;
			padding: 27rpx 25rpx;
			// width: calc(100vw - 13rpx*2);
			width: 100%;
			box-sizing: border-box;
			// transform: translateY(-50%);

			.img {
				width: 184rpx;
				height: 184rpx;
			}

			.title {
				margin-bottom: 14rpx;
			}

			.price {
				margin-top: 15rpx;
			}

			.sales {
				margin-top: 15rpx;
			}
		}

		.bac {
			width: 100%;
			height: 100px;
			background: $uni-color;
		}

        .give-type {
            background: #fff;
            border-radius: 20rpx;
            padding: 30rpx;
            margin-bottom: 20rpx;
            
            .tab-box {
                display: flex;
                justify-content: space-between;
                
                .tab-item {
                    width: 30%;
                    background: #F8F8F8;
                    border-radius: 20rpx;
                    padding: 20rpx;
                    text-align: center;
                    
                    text {
                        display: block;
                        
                        &.desc {
                            font-size: 24rpx;
                            color: #999;
                            margin-top: 10rpx;
                        }
                    }
                    
                    &.active {
                        background: rgba($uni-color, 0.1);
                        color: $uni-color;
                        
                        .desc {
                            color: $uni-color;
                        }
                    }
                }
            }
            
            .tips {
                margin-top: 20rpx;
                font-size: 26rpx;
                color: #999;
                display: flex;
                align-items: center;
                justify-content: space-between;
                
                .guide {
                    color: $uni-color;
                    text-decoration: underline;
                }
            }
        }

		.box {
			padding: 20rpx;
			margin-top: -150rpx;

			// 商品详情
			.product-item {
				display: flex;
				flex-wrap: wrap;
				align-items: center;
				justify-content: space-between;
				background: white;
				border-radius: 15rpx;
				box-sizing: border-box;
				padding: 25rpx;
				margin: 20rpx 0rpx;

				.img-box {
					width: 200rpx;
					height: 200rpx;
					background: #ccc;
					border-radius: 10rpx;
					overflow: hidden;

					image {
						width: 100%;
						height: 100%;
					}
				}

				.server-info {
					width: calc(100% - 200rpx);
					box-sizing: border-box;
					padding: 10rpx 20rpx;
					display: flex;
					flex-direction: column;
					justify-content: space-around;

					.server-title {
						font-size: 34rpx;
					}

					.texture {
						color: #B8B8B8;
						margin: 10rpx 0rpx;
					}

					.stepper {
						margin-bottom: 10rpx;

						&::v-deep .uv-number-box__input {
							color: $uni-color !important;
							width: 100rpx !important;
						}
					}

					.sales-volume {
						display: flex;
						align-items: center;
						color: #B8B8B8;
						font-size: 26rpx;

						image {
							width: 25rpx;
							height: 25rpx;
						}

					}

				}
			}

			//cell单元格(地址)
			.cell-item {
				display: flex;
				justify-content: space-between;
				align-items: center;
				background: white;
				border-radius: 20rpx;
				padding: 20rpx;
				box-sizing: border-box;

				.cell-item-left {
					display: flex;
					align-items: center;
					width: 90%;

					.cell-icon {
						width: 40rpx;
					}

					.user-name,
					.user-address {
						white-space: nowrap;
						overflow: hidden;
						text-overflow: ellipsis;
						width: 150rpx;
						padding-left: 20rpx;
						box-sizing: border-box;
					}

					.descript {
						color: #888888;
					}

					.user-address {
						width: calc(100% - 230rpx);
					}
				}

				.cell-item-right {
					width: 10%;
					display: flex;
					justify-content: flex-end;

                    .stepper {
                        display: flex;
                        align-items: center;
                        
                        text {
                            display: flex;
                            align-items: center;
                            justify-content: center;
                            width: 44rpx;
                            height: 44rpx;
                            
                            &.minus, &.plus {
                                background: #F8F8F8;
                                border-radius: 50%;
                                font-size: 32rpx;
                                
                                &.disabled {
                                    color: #ccc;
                                }
                            }
                            
                            &.num {
                                margin: 0 20rpx;
                                color: $uni-color;
                                font-size: 28rpx;
                            }
                        }
                    }
				}
			}

			.cell-list {
				margin: 20rpx 0rpx;
				border-radius: 20rpx;
				overflow: hidden;

				.cell-item {
					border-radius: 0rpx;
				}
			}

			// 提示
			.hint {
				font-size: 26rpx;
				margin-top: 80rpx;
				color: #BFBFBF;
			}

			// 用户协议
			.agreement {
				display: flex;
				justify-content: center;
				align-items: center;
				padding: 10px 0;

				.van-checkbox {
					margin-right: 5rpx;
				}

				text {
					color: $uni-color;
				}
			}

			// 下单
			.submit {
				position: fixed;
				bottom: 0;
				left: 0;
				width: 100%;
				height: 60px;
				background-color: #fff;
				display: flex;
				justify-content: space-between;
				align-items: center;

				.price {
					color: #F39637;
					padding: 0 20px;
				}

				.btn {
					background: $uni-color;
					color: white;
					width: 120px;
					height: 45px;
					border-radius: 23px;
					font-size: 16px;
					display: flex;
					justify-content: center;
					align-items: center;
				}
			}
		}

		//新增地址按钮
		.add-btn {
			width: 100%;

			.button-submit {
				display: flex;
				align-items: center;
				justify-content: center;
				width: 596rpx;
				height: 90rpx;
				background: #E3441A;
				border-radius: 46rpx;

				margin: 20rpx auto;

				font-size: 28rpx;
				font-family: PingFang SC, PingFang SC-Regular;
				font-weight: 400;
				text-align: center;
				color: #ffffff;
			}
		}
        .multi-box, .lucky-box {
            background: #fff;
            border-radius: 20rpx;
            padding: 30rpx;
            margin-bottom: 20rpx;

            .title {
                font-size: 28rpx;
                font-weight: 500;
                margin-bottom: 20rpx;
            }
        }

        .multi-box {
            .stepper {
                display: flex;
                align-items: center;
                justify-content: center;
                
                text {
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    width: 60rpx;
                    height: 60rpx;
                    
                    &.minus, &.plus {
                        background: #F8F8F8;
                        border-radius: 50%;
                        font-size: 36rpx;
                        
                        &.disabled {
                            color: #ccc;
                        }
                    }
                    
                    &.num {
                        margin: 0 40rpx;
                        color: $uni-color;
                        font-size: 32rpx;
                    }
                }
            }
        }

        .lucky-box {
            .tips-list {
                .tip-item {
                    font-size: 26rpx;
                    color: #666;
                    line-height: 2;
                }
            }
        }
	}

	

	.payment {
		margin-top: 23rpx;
		padding: 22rpx 42rpx 34rpx 41rpx;
		color: #000000;
		font-size: 28rpx;

		&-item {
			width: 100%;

			& + & {
				margin-top: 38rpx;
			}
		}

		.icon {
			width: 46rpx;
			height: auto;
			margin-right: 18rpx;
		}

		.label {
			flex: 1;
		}

		.desc {
			color: #999999;
		}
	}
</style>