<template>
	<view class="content">
		<view class="yue">
			<view class="font">当前余额</view>
			<view class="money">￥{{ userInfo.now_money | getMoneyStyle }}</view>
		</view>
		<view class="row-box">
			<view class="title">充值金额</view>
			<view class="row">
				<text class="tit">￥</text>
				<input class="input" type="number" v-model="money" placeholder="请选择充值金额"
					placeholder-class="placeholder" disabled/>
			</view>
			<view class="xian"></view>
			<view class="moneyBtn-box">
				<view class="moneyBtn" v-for="(item, index) in moneyList" :class="{ current: choose == index }"
					:key="index" @click="changemoney(item.price, index,item.id)">{{ item.price }}元</view>
			</view>
		</view>

		<view class="list" v-if="!weichatBsrowser">
			<radio-group @change="tabRadio">
				<!-- #ifdef APP-PLUS -->
				<!-- <label>
					<view class="box">
						<view class="icon iconfont iconzhifubao"></view>
						<view class="title-box">
							<view class="title"><text>支付宝充值</text></view>
						</view>
						<view class="right"><radio value="alipay" color="#5dbc7c" :checked="type == 'alipay'" /></view>
					</view>
				</label> -->
				<!-- #endif -->
				<label>
					<view class="box">
						<view class="icon iconfont iconweixin1"></view>
						<view class="title-box">
							<view class="title"><text>微信充值</text></view>
						</view>
						<view class="right">
							<radio value="weixin" color=" #5dbc7c" :checked="type == 'weixin'" />
						</view>
					</view>
				</label>
			</radio-group>
		</view>
		<button class="add-btn up" :class="{ 'active-bg': payLoding }"
			@click="!payLoding ? confirm() : ''">立即充值</button>
		<button class="card" @click="go()">充值卡兑换</button>
		<uni-popup ref="popup" type="center">
			<view class="popup-box">
				<view class="img">
					<view class="img-font">兑换充值卡</view>
					<view class="img-bg">
						<image src="../../static/img/img009.png" mode=""></image>
					</view>
				</view>
				<view class="mian">
					<view class="main-item">
						<view class="font">卡号</view>
						<input type="text" v-model="card" class="input" placeholder="请输入卡号"
							placeholder-class="input-font" />
					</view>
					<view class="main-item" style="margin-top: 40rpx;">
						<view class="font">密码</view>
						<input type="password" v-model="pwd" placeholder="请输入密码" class="input"
							placeholder-class="input-font" />
					</view>
					<view class="comfirm-box">
						<view class="cancel" @click="cancel">取消</view>
						<view class="comfirm" @click="comfirm()">确认兑换</view>
					</view>
				</view>
			</view>
		</uni-popup>
	</view>
</template>

<script>
	import uniPopup from '@/components/uni-popup/uni-popup.vue';
	import {
		verification
	} from '@/api/merchant.js';
	import {
		getMoneyStyle
	} from '@/utils/rocessor.js';
	import {
		rechargeWechat,
		getRechargeList
	} from '@/api/wallet.js';
	import {
		mapState,
		mapMutations
	} from 'vuex';
	import {
		getUserInfo
	} from '@/api/login.js';
	export default {
		components: {
			uniPopup
		},
		filters: {
			getMoneyStyle
		},
		data() {
			return {
				moneyList: [],
				choose: -1,
				// #ifdef APP-PLUS
				type: 'weixinapp',
				// #endif
				// #ifdef H5
				type: 'weixin',
				// #endif
				money: '', //充值金额
				payLoding: false, //是否加载中
				// #ifdef H5
				weichatBsrowser: false,
				// #endif
				// #ifdef APP-PLUS
				weichatBsrowser: true,
				// #endif
				nowmoney: 0,
				card: '',
				pwd: '',
				chooseId: '',

			};
		},
		onLoad(options) {
			// #ifdef H5
			this.weichatBsrowser = uni.getStorageSync('weichatBrowser');
			// #endif
			this.getRechargeList()
		},
		computed: {

			// #ifdef H5
			...mapState(['weichatObj']),
			// #endif
			...mapState('user', ['userInfo'])
		},
		methods: {
			...mapMutations('user', ['setUserInfo', 'setOrderInfo']),
			getRechargeList() {
				getRechargeList().then(({
					data
				}) => {
					console.log(data, 'getRechargeList')
					// data.recharge_quota.forEach(item => {
					// 	this.moneyList.push(item.price * 1)
					// })
					this.moneyList = data.recharge_quota
				})
			},
			// 跳转
			navTo(url) {
				uni.navigateTo({
					url: url
				});
			},
			// 切换选中对象
			tabRadio(e) {
				this.type = e;
			},
			// 提交
			confirm() {
				let obj = this;
				obj.payLoding = true;
				if (this.money <= 0) {
					uni.showToast({
						title: '请输入金额',
						duration: 2000,
						icon: 'none'
					});
					return
				}
				rechargeWechat({
						price: this.money,
						from: this.type,
						rechar_id: this.chooseId
					})
					.then(e => {
						console.log(e);
						// #ifdef H5
						let da = e.data.data;
						obj.weichatObj.chooseWXPay({
							timestamp: da.timestamp,
							nonceStr: da.nonceStr,
							package: da.package,
							signType: da.signType,
							paySign: da.paySign,
							success: function(res) {
								uni.showToast({
									title: '充值成功',
									duration: 2000,
									position: 'top'
								});
								getUserInfo()
									.then(({
										data
									}) => {
										obj.setUserInfo(data);
									})
									.catch(e => {
										console.log(e);
									});
							}
						});
						// #endif
						// #ifdef APP-PLUS
						uni.requestPayment({
							provider: 'wxpay',
							orderInfo: e.data.data,
							success: function() {
								uni.showToast({
									title: '充值成功',
									duration: 2000,
									position: 'top'
								});
								getUserInfo()
									.then(({
										data
									}) => {
										obj.setUserInfo(data);
									})
									.catch(e => {
										console.log(e);
									});
							},
							fail(e) {
								console.log(e);
							}
						});
						// #endif
						obj.payLoding = false;
					})
					.catch(e => {
						obj.payLoding = false;
						console.log(e);
					});
			},
			go() {
				this.$refs.popup.open()
			},
			cancel() {
				this.$refs.popup.close();
				this.card = '';
				this.pwd = '';
			},
			comfirm() {
				let obj = this
				verification({
					card_number: this.card,
					card_password: this.pwd,
					is_confirm: 1,
					type: 1,
				}).then(e => {
					console.log(e)
					this.card = '';
					this.pwd = '';
					getUserInfo()
						.then(({
							data
						}) => {
							obj.setUserInfo(data);
						})
						.catch(e => {
							console.log(e);
						});
				}).catch(e => {
					console.log(e)
				})
				this.$refs.popup.close();
			},
			//获取订单列表
			loadData(source) {
				console.log(source);
				//这里是将订单挂载到tab列表下
				let index = this.tabCurrentIndex;
				let navItem = this.navList[index];
				let state = navItem.state;
				if (source === 'tabChange' && navItem.loaded === true) {
					//tab切换只有第一次需要加载数据
					return;
				}
				if (navItem.loadingType === 'loading') {
					//防止重复加载
					return;
				}
				navItem.loadingType = 'loading';
				setTimeout(() => {
					let orderList = [];
					orderList.forEach(item => {
						navItem.orderList.push(item);
					});
					//loaded新字段用于表示数据加载完毕，如果为空可以显示空白页
					this.$set(navItem, 'loaded', true);
					//判断是否还有数据， 有改为 more， 没有改为noMore
					navItem.loadingType = 'more';
				}, 600);
			},
			changemoney(item, index,id) {
				this.choose = index;
				this.money = item;
				this.chooseId = id
			}
		}
	};
</script>

<style lang="scss">
	page {
		height: 100%;
	}

	.yue {
		display: flex;
		justify-content: space-between;
		padding: 30rpx 48rpx 30rpx 26rpx;
		background: #ffffff;

		.font {
			font-size: 28rpx;
			font-family: PingFang SC;
			font-weight: 500;
			color: #333333;
		}

		.money {
			font-size: 30rpx;
			font-family: PingFang SC;
			font-weight: bold;
			color: #ff6f0f;
		}
	}

	.add-btn {
		&.modified {
			color: $base-color;
		}

		&.up {
			background-color: $base-color;
			color: #fff;
		}

		display: flex;
		align-items: center;
		justify-content: center;
		width: 690rpx;
		height: 80rpx;
		margin: 0 auto;
		margin-top: 30rpx;
		font-size: $font-lg;
		border-radius: 10rpx;
		// box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
	}

	.card {
		background: #ffffff;
		border: 1px solid $base-color;
		color: $base-color;
		display: flex;
		align-items: center;
		justify-content: center;
		width: 690rpx;
		height: 80rpx;
		margin: 30rpx auto 0;
		font-size: $font-lg;
		border-radius: 10rpx;
	}

	.row-box {
		margin-top: 30rpx;
		padding: 20rpx 0rpx 20rpx 30rpx;
		background: #fff;

		.title {
			font-size: $font-base + 2rpx;
			color: $font-color-dark;
		}

		.row {
			display: flex;
			align-items: center;
			position: relative;
			height: 80rpx;

			.tit {
				flex-shrink: 0;
				width: 40rpx;
				font-size: 30rpx;
				color: $font-color-dark;
			}

			.input {
				flex: 1;
				font-size: 30rpx;
				color: $font-color-dark;
			}

			.iconlocation {
				font-size: 36rpx;
				color: $font-color-light;
			}

			.buttom {
				color: $font-color;
				font-size: $font-base;
			}
		}

		.xian {
			width: 700rpx;
			height: 1rpx;
			background: #e6e6e6;
			margin-bottom: 16rpx;
		}

		.moneyBtn-box {
			display: flex;
			justify-content: flex-start;
			flex-wrap: wrap;

			.moneyBtn {
				margin-right: 30rpx;
				width: 210rpx;
				height: 70rpx;
				background: #f0f0f0;
				border-radius: 4px;
				margin-top: 30rpx;
				text-align: center;
				line-height: 70rpx;
			}
		}
	}

	.list {
		padding-left: 30rpx;
		margin-top: 30rpx;
		background-color: #ffffff;

		.box {
			display: flex;
			align-items: center;
			width: 100%;
			height: 120rpx;
			border-bottom: 1px solid $border-color-light;

			.icon {
				font-size: 48rpx;
				padding-right: 20rpx;
			}

			.iconweixin1 {
				color: #18bf16;
			}

			.iconzhifubao {
				color: #08aaec;
			}

			.title-box {
				flex-grow: 1;
				text-align: left;

				.title {
					font-size: $font-base + 2rpx;
					color: $font-color-base;
				}

				.node {
					font-size: $font-sm;
					color: $font-color-light;
				}
			}
		}
	}

	/deep/ .uni-radio-input {
		width: 45rpx;
		height: 45rpx;
	}

	.active-bg {
		background-color: $color-gray !important;
	}

	.current {
		background: $base-color !important;
		color: #fff;
	}

	.popup-box {
		width: 650rpx;
		padding-bottom: 30rpx;
		background-color: #ffffff;
		border-radius: 20rpx;
		position: relative;

		.img {
			position: relative;
			top: -56rpx;
			left: 0;
			width: 650rpx;
			height: 132rpx;
			z-index: 100;
			text-align: center;
			line-height: 132rpx;

			.img-bg {
				position: absolute;
				left: 50%;
				top: 0;
				margin-left: -250rpx;
				border-radius: 20rpx 20rpx 0 0;
				width: 500rpx;
				height: 132rpx;

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

			.img-font {
				line-height: 120rpx;
				position: relative;
				z-index: 10;
				text-align: center;
				font-size: 32rpx;
				font-weight: bold;
				color: #54300f;
			}
		}

		.mian {
			margin-top: -10rpx;
			display: flex;
			flex-direction: column;
			align-items: center;
			// padding: 32rpx 32rpx;
			background-color: #ffffff;
			border-radius: 0 0 20rpx 20rpx;
			text-align: center;
			padding: 20rpx;
			width: 100%;

			.main-item {
				display: flex;
				width: 580rpx;
				align-items: center;
				padding: 20rpx 40rpx;
				border-radius: 10rpx;
				background: #f5f2e5;
				height: 100rpx;

				.font {
					color: #623324;
					font-size: 30rpx;
				}

				.input {
					margin-left: 20rpx;
					text-align: left;
					color: #cdc0b3;
					font-size: 28rpx;
				}

				.input-font {
					color: #cdc0b3;
					font-size: 28rpx;
				}

			}

			.comfirm-box {
				margin-top: 80rpx;
				display: flex;
				// margin-bottom: 32rpx;

				// justify-content: space-around;
				.cancel {
					display: flex;
					align-items: center;
					justify-content: center;
					width: 260rpx;
					height: 100rpx;
					border: 1px solid #dcc786;
					border-radius: 10px;

					font-size: 32rpx;
					color: #605128;
				}

				.comfirm {
					margin-left: 60rpx;
					display: flex;
					align-items: center;
					justify-content: center;
					width: 260rpx;
					height: 100rpx;
					background: linear-gradient(-90deg, #d1ba77 0%, #f7e8ad 100%);
					border-radius: 10px;
					font-size: 32rpx;
					color: #605128;
				}
			}
		}
	}
</style>
