<template>
	<uv-popup ref="popup" 
	:round="30" 
	bgColor="#f7f7f7">
		<view class="content">
			
			<!-- 配送方式选择 -->
			<view class="delivery-method">
				<view class="title">配送方式</view>
				<view class="options">
					<view 
						:class="['option', { active: deliveryMethod === '0' }]"
						@click="selectDeliveryMethod('0')"
					>
						<view class="icon">📦</view>
						<view class="text">线上发货</view>
					</view>
					<!-- 注释掉到店自提选项
					<view 
						:class="['option', { active: deliveryMethod === '1' }]"
						@click="selectDeliveryMethod('1')"
					>
						<view class="icon">🏪</view>
						<view class="text">到店自提</view>
					</view>
					-->
				</view>
			</view>
			
			<!-- 地址（仅线上发货显示） -->
			<view class="address"
			@click="openAddress"
			v-if="deliveryMethod === '0'">
				<image src="../../static/address/selectIcon.png" mode=""></image>
				<view class="">
					{{ address.name }}
				</view>
				<view class="">
					{{ address.addressDetail }}
				</view>
				<view class="icon">
					<uv-icon
					size="30rpx"
					name="arrow-right"></uv-icon>
				</view>
			</view>

			<!-- 店铺地址（仅到店自提显示） -->
			<view class="store-address" v-if="deliveryMethod == '1' && detail.shop && detail.shop.address">
				<view>
					<addressSpot
                    :address="detail.shop.address"
                    :latitude="detail.shop.latitude"
                    :longitude="detail.shop.longitude"
                    />
				</view>
			</view>
			
			<!-- 商品信息和数量 -->
			<view class="submit-info">
				<view class="title">
					{{ detail.name }}
				</view>
				<view class="box">
					<image
					class="image"
					:src="detail.image && detail.image.split(',')[0]" 
					mode=""></image>
					
					<view class="info">
						<view class="price"
						v-if="isProductPrice(detail)">
							价格￥<text>{{ detail.price }}</text>元
						</view>
						<!-- <view class="unit">
							请选择规格
						</view> -->
						<view class="favorable"
						v-if="isProductPoint(detail)">
							<view class="t">
								积分兑换
							</view>
							<view class="p">
								{{ detail.points }}
							</view>
						</view>
						<view class="">
							<uv-number-box v-model="num"></uv-number-box>
						</view>
					</view>
				</view>
			</view>
			
			<!-- 规格 -->
			<!-- <view class="submit-unit">
				<view class="title">
					规格选择
				</view>
				<view class="list">
					<view :class="{act : unitIndex == index}" 
					v-for="(item, index) in detail.hotelGoodsSkuList"
					@click="selectUnit(item, index)"
					:key="index">
						{{ item.title }}
					</view>
				</view>
			</view> -->
			
			
			
			<!-- 费用明细 -->
			<view class="expense-detail">
				<view class="title">
					费用明细
				</view>
				<view class="detail"
				v-if="isProductPoint(detail)">
					积分：{{ detail.points }}
				</view>
				<view class="detail"
				v-if="isProductPrice(detail)">
					金额：{{ detail.price }}
				</view>
			</view>
			
			
			
			<!-- 提交按钮 -->
			<view class="submit-btn">
				<view class="r"
				v-if="isProductPoint(detail)"
				@click="exchange">
					立即兑换
				</view>
				<view class="r"
				v-if="isProductPrice(detail)"
				@click="orderPay">
					立即购买
				</view>
			</view>
			
		</view>
		
		<uv-popup ref="addressPopup" :round="30">
			<addressList
			ref="addressList"
			height="60vh"
			@select="selectAddress"
			/>
		</uv-popup>
	</uv-popup>
</template>

<script>
	import addressList from '../address/addressList.vue'
	import productMixins from '@/mixins/product.js'
	export default {
		mixins : [productMixins],
		components : {
			addressList,
		},
		props : {
			submiitTitle : {
				default : '立即购买',
				type : String,
			},
			detail : {
				default : {}
			}
		},
		data() {
			return {
				unitIndex : 0,
				address : {
					name : '请选择联系人',
					addressDetail : '',
				},
				num : 1,
				unit : {},
				addressTotal : 0,
				deliveryMethod : '0',
			}
		},
		methods: {
			// 打开
			open(){
				this.$refs.popup.open('bottom')
				// if(!this.unit.id){
				// 	this.selectUnit(this.detail.hotelGoodsSkuList[0], 0)
				// }
				
				// 获取地址列表
				this.$refs.addressList.getAddressList().then(res => {
					this.addressTotal = res.total
					if(this.addressTotal != 0){
						this.address = res.records[0]
					}
				})
			},
			// 关闭
			close(){
				this.$refs.popup.close()
			},
			// 打开选择地址
			openAddress(){
				if (this.addressTotal == 0) {
					this.$refs.popup.close()
					return uni.navigateTo({
						url: '/pages_order/mine/address?type=back'
					})
				}
				this.$refs.addressPopup.open('bottom')
			},
			// 选择地址
			selectAddress(e){
				this.address = e
				this.$refs.addressPopup.close()
			},
			// 选择规格
			selectUnit(item, index){
				this.unit = item
				this.unitIndex = index
			},
			// 积分兑换
			exchange(){
				
				let data = {
					shopId : this.detail.id,//商品id
					num : this.num,
					deliveryMethod: this.deliveryMethod
				}
				
				// 线上发货需要地址
				if (this.deliveryMethod === 'delivery') {
					if (!this.address.id) {
						return uni.showToast({
							title: '请选择收货地址',
							icon: 'none'
						})
					}
					data.addressId = this.address.id
				}
				
				this.$api('createPointsOrder', data, res => {
					if(res.code == 200){
						uni.redirectTo({
							url: '/pages_order/order/order'
						})
					}
				})
			},
			orderPay(){
				
				let data = {
					shopId : this.detail.id,//商品id
					// skuId : this.unit.id,//规格id
					// sku : this.unit.title,//规格
					num : this.num,
					deliveryMethod: this.deliveryMethod
				}
				
				// 线上发货需要地址
				if (this.deliveryMethod == '0') {
					if (!this.address.id) {
						return uni.showToast({
							title: '请选择收货地址',
							icon: 'none'
						})
					}
					data.addressId = this.address.id
				}
				
				this.$api('createOrder', data, res => {
					if(res.code == 200){
						uni.requestPayment({
							provider: 'wxpay', // 服务提提供商
							timeStamp: res.result.timeStamp, // 时间戳
							nonceStr: res.result.nonceStr, // 随机字符串
							package: res.result.packageValue,
							signType: res.result.signType, // 签名算法
							paySign: res.result.paySign, // 签名
							success: function (res) {
								console.log('支付成功',res);
								uni.redirectTo({
									url: '/pages_order/order/order'
								})
							},
							fail: function (err) {
								console.log('支付失败',err);
								uni.showToast({
									icon:'none',
									title:"支付失败"
								})
							}
						});
					}
				})
			},
			selectDeliveryMethod(method){
				this.deliveryMethod = method
			},
		}
	}
</script>

<style scoped lang="scss">
.content{
	max-height: 80vh;
	overflow: hidden;
	overflow-y: auto;
	.delivery-method{
		padding: 20rpx;
		background-color: #fff;
		.title{
			font-size: 30rpx;
			padding: 10rpx;
			font-weight: 600;
		}
		.options{
			display: flex;
			gap: 20rpx;
			.option{
				padding: 15rpx 30rpx;
				border: 2rpx solid #F3F3F3;
				border-radius: 10rpx;
				display: flex;
				align-items: center;
				justify-content: center;
				flex: 1;
				background-color: #F6F6F6;
				&.active{
					border-color: $uni-price-color;
					background-color: $uni-price-color;
					color: #fff;
				}
				.icon{
					margin-right: 10rpx;
				}
				.text{
					font-size: 28rpx;
				}
			}
		}
	}
	.address{
		display: flex;
		padding: 20rpx;
		background-color: #fff;
		image{
			width: 30rpx;
			height: 30rpx;
			margin: 20rpx;
		}
		view{
			margin: 20rpx;
			overflow:hidden; //超出的文本隐藏
			text-overflow:ellipsis; //溢出用省略号显示
			white-space:nowrap; //溢出不换行
		}
		.icon{
			margin-left: auto;
		}
	}
	.submit-info{
		background-color: #fff;
		padding: 30rpx;
		margin-top: 20rpx;
		.title{
			font-size: 30rpx;
			padding: 10rpx;
			font-weight: 600;
		}
		.box{
			display: flex;
			margin-top: 10rpx;
			.image{
				width: 200rpx;
				height: 200rpx;
				border-radius: 20rpx;
				margin-right: 20rpx;
			}
			.info{
				flex: 1;
				.unit{
					font-size: 24rpx;
					padding: 10rpx 20rpx;
					color: #717171;
					display: flex;
					align-items: center;
				}
				.price{
					color: $uni-price-color;
					font-size: 28rpx;
					padding: 10rpx 20rpx;
					text{
						font-size: 36rpx;
						font-weight: 900;
					}
				}
				.favorable{
					margin-left: 10rpx;
					display: flex;
					// background-image: url(/static/image/product/favorable.png);
					background-size: 100% 100%;
					width: fit-content;
					font-size: 22rpx;
					margin-top: 6rpx;
					margin-bottom: 6rpx;
					border-radius: 10rpx;
					overflow: hidden;
					background-color: #ff000011;
					.t{
						padding: 5rpx 10rpx;
					}
					.p{
						padding: 5rpx 10rpx;
						color: #fff;
						background-color: #F03F25;
						height: 100%;
					}
				}
			}
		}
	}
	.submit-unit{
		padding: 30rpx;
		background-color: #fff;
		.title{
			font-size: 28rpx;
			font-weight: 600;
		}
		.list{
			display: flex;
			flex-wrap: wrap;
			font-size: 22rpx;
			.act{
				color: $uni-price-color;
				border: 1px solid $uni-price-color;
				background-color: #F9E7DE;
			}
			view{
				border-radius: 15rpx;
				width: 320rpx;
				background-color: #F3F3F3;
				border: 1px solid #F3F3F3;
				margin: 10rpx;
				display: flex;
				justify-content: center;
				padding: 15rpx 0;
			}
		}
	}
	.expense-detail{
		padding: 30rpx;
		background-color: #fff;
		font-size: 28rpx;
		.title{
			font-weight: 600;
		}
		.detail{
			background-color: #F6F6F6;
			color: #717171;
			margin: 10rpx 0;
			padding: 10rpx 20rpx;
		}
	}
	.submit-btn{
		width: 600rpx;
		height: 80rpx;
		color: #fff;
		border-radius: 40rpx;
		font-size: 28rpx;
		margin: 20rpx auto;
		display: flex;
		justify-content: center;
		align-items: center;
		border: 1rpx solid $uni-price-color;
		overflow: hidden;
		.l{
			flex: 1;
			display: flex;
			justify-content: center;
			align-items: center;
			color: $uni-price-color;
		}
		.r{
			background: $uni-price-color;
			flex: 1;
			height: 100%;
			display: flex;
			justify-content: center;
			align-items: center;
		}
	}
}
</style>
