<template>
							 | 
						|
									<view class="container">
							 | 
						|
										<view class="header">
							 | 
						|
											<view class="header-bg">
							 | 
						|
												<image src="/static/member-background.png" class="header-img" mode="scaleToFill" />
							 | 
						|
												<!-- #ifndef H5 -->
							 | 
						|
												<text class="header-title">会员开通</text>
							 | 
						|
												<!-- 加一个推出箭头 -->
							 | 
						|
												<view class="header-icon" @click="goBack">
							 | 
						|
													<uv-icon name="arrow-left" color="#000" size="20" />
							 | 
						|
												</view>
							 | 
						|
												<!-- #endif -->
							 | 
						|
												<!-- 轮播容器 -->
							 | 
						|
												<view class="uv-demo-block swiper-container">
							 | 
						|
													<uv-swiper bgColor="transparent" :list="list" :loading="!list.length" @change="changeSwiper"
							 | 
						|
														keyName="img" previousMargin="70" nextMargin="70" acceleration height="75" circular
							 | 
						|
														:autoplay="false" radius="5">
							 | 
						|
													</uv-swiper>
							 | 
						|
													<button class="swiper-btn">
							 | 
						|
														已选择
							 | 
						|
													</button>
							 | 
						|
													<image class="swiper-arrow" src="/static/decorative-arrow.png" mode="aspectFill" />
							 | 
						|
												</view>
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
								
							 | 
						|
										<!-- 会员套餐选择容器 -->
							 | 
						|
										<view class="membership-container">
							 | 
						|
											<!-- 套餐选择 -->
							 | 
						|
											<view class="package-list">
							 | 
						|
												<view class="package-item" :class="{ 'active': selectedPackage === index }"
							 | 
						|
													v-for="(item, index) in packageList" :key="index" @click="selectPackage(index)">
							 | 
						|
													<view class="info">
							 | 
						|
														<!-- 赠送标识 -->
							 | 
						|
														<view class="gift-tag" v-if="item.content">
							 | 
						|
															{{ item.content }}
							 | 
						|
														</view>
							 | 
						|
								
							 | 
						|
														<view class="package-title">{{ item.title }}</view>
							 | 
						|
								
							 | 
						|
														<view class="package-price">¥{{ getInt(item.discountedprice) }}.<text
							 | 
						|
																class="package-decimal">{{ getDecimal(item.discountedprice) }}</text></view>
							 | 
						|
														<view class="package-original">¥{{ item.originalprice }}</view>
							 | 
						|
													</view>
							 | 
						|
								
							 | 
						|
													<view class="package-btn" :class="{ 'active': selectedPackage === index }">
							 | 
						|
														{{ selectedPackage === index ? '已选择' : '点击选择' }}
							 | 
						|
													</view>
							 | 
						|
												</view>
							 | 
						|
											</view>
							 | 
						|
								
							 | 
						|
											<!-- 优惠券选择 -->
							 | 
						|
											<view class="coupon-section">
							 | 
						|
												<view class="coupon-title">选择优惠券</view>
							 | 
						|
												<view class="coupon-selector" @click="selectCoupon">
							 | 
						|
													<view v-if="!selectedCoupon" class="coupon-placeholder">
							 | 
						|
														<text class="coupon-text">请选择</text>
							 | 
						|
														<uv-icon name="arrow-right" color="#999" size="16" />
							 | 
						|
													</view>
							 | 
						|
													<view v-else class="coupon-selected">
							 | 
						|
														<view class="coupon-info">
							 | 
						|
															<text class="coupon-name">{{ selectedCoupon.name }}</text>
							 | 
						|
															<text class="coupon-amount">-¥{{ selectedCoupon.money }}</text>
							 | 
						|
														</view>
							 | 
						|
														<uv-icon name="arrow-right" color="#999" size="16" />
							 | 
						|
													</view>
							 | 
						|
												</view>
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
								
							 | 
						|
										<!-- 立即开通会员按钮 -->
							 | 
						|
										<view class="member-button-section">
							 | 
						|
											<uv-button type="primary" text="立即开通会员" :custom-style="{
							 | 
						|
								          width: '100%',
							 | 
						|
								          height: '82rpx',
							 | 
						|
								          borderRadius: '44rpx',
							 | 
						|
								          backgroundColor: '#06DADC',
							 | 
						|
								          fontSize: '36rpx',
							 | 
						|
								          fontWeight: '500',
							 | 
						|
								          border: '1px solid #06DADC'
							 | 
						|
								        }" @click="handleRecharge"></uv-button>
							 | 
						|
										</view>
							 | 
						|
								
							 | 
						|
										<!-- 会员权益 -->
							 | 
						|
										<view class="benefits-section">
							 | 
						|
											<view class="benefits-title">会员权益</view>
							 | 
						|
								
							 | 
						|
											<view class="benefits-list">
							 | 
						|
												<!-- 碎片学习 系统掌握 -->
							 | 
						|
												<!-- <view class="benefit-item" v-for="item in packageList" :key="item.id"> -->
							 | 
						|
												<uv-parse :content="list[selectedMember].content" />
							 | 
						|
												<!-- </view> -->
							 | 
						|
								
							 | 
						|
												<!-- 匹配水平 -->
							 | 
						|
												<!-- <view class="benefit-item">
							 | 
						|
								          <view class="benefit-content">
							 | 
						|
								            <view class="benefit-title">匹配水平</view>
							 | 
						|
								            <view class="benefit-desc">依据水平精准推课,不做无用功快速提升</view>
							 | 
						|
								          </view>
							 | 
						|
								          <view class="benefit-icon">
							 | 
						|
								            <image src="/static/会员图片2.png" mode="aspectFit"></image>
							 | 
						|
								          </view>
							 | 
						|
								        </view>
							 | 
						|
								        
							 | 
						|
								         科学闭环测 讲练结合
							 | 
						|
								        <view class="benefit-item">
							 | 
						|
								          <view class="benefit-content">
							 | 
						|
								            <view class="benefit-title">科学闭环测 讲练结合</view>
							 | 
						|
								            <view class="benefit-desc">精心设计科学的学习流程 「测试-讲解-练习-检验」知识掌握更牢固</view>
							 | 
						|
								          </view>
							 | 
						|
								          <view class="benefit-icon">
							 | 
						|
								            <image src="/static/会员图片3.png" mode="aspectFit"></image>
							 | 
						|
								          </view>
							 | 
						|
								        </view> -->
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
								
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									export default {
							 | 
						|
										data() {
							 | 
						|
											return {
							 | 
						|
												list: [
							 | 
						|
								
							 | 
						|
												],
							 | 
						|
												selectedPackage: 0, // 默认选择第一个套餐
							 | 
						|
												selectedMember: 0, // 默认选择第一个会员
							 | 
						|
												defaultPackageList: [
							 | 
						|
								
							 | 
						|
												],
							 | 
						|
												couponId: '',
							 | 
						|
												selectedCoupon: null // 选中的优惠券信息
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										computed: {
							 | 
						|
											packageList() {
							 | 
						|
												return this.list[this.selectedMember]?.setmeals ? this.list[this.selectedMember].setmeals : this
							 | 
						|
													.defaultPackageList
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										methods: {
							 | 
						|
											handleCouponSelected(coupon) {
							 | 
						|
								
							 | 
						|
												// 处理选中的优惠券
							 | 
						|
												this.selectedCoupon = coupon
							 | 
						|
												this.couponId = coupon.id
							 | 
						|
								
							 | 
						|
												uni.showToast({
							 | 
						|
													title: `已选择优惠券:¥${coupon.money}`,
							 | 
						|
													icon: 'success'
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											async handleRecharge() {
							 | 
						|
												// console.log('选中的会员id是:', this.packageList[this.selectedPackage]);
							 | 
						|
								
							 | 
						|
												const object = {
							 | 
						|
													// #ifdef H5
							 | 
						|
													type: 'official',
							 | 
						|
													// #endif
							 | 
						|
													memberId: this.list[this.selectedMember].id,
							 | 
						|
													setmealId: this.packageList[this.selectedPackage].id
							 | 
						|
												}
							 | 
						|
												if (this.couponId) {
							 | 
						|
													object.couponId = this.couponId
							 | 
						|
												}
							 | 
						|
												const res = await this.$api.member.openMember({
							 | 
						|
													...object
							 | 
						|
												})
							 | 
						|
												if (res.code === 200) {
							 | 
						|
													if (res.result === 0) {
							 | 
						|
														// 零元购
							 | 
						|
														uni.showToast({
							 | 
						|
															title: '充值成功',
							 | 
						|
															icon: 'success'
							 | 
						|
														})
							 | 
						|
														this.goBack()
							 | 
						|
													} else {
							 | 
						|
														// 调起微信支付
							 | 
						|
														this.$utils.wxPay(res.result, (res) => {
							 | 
						|
															setTimeout(() => {
							 | 
						|
																this.goBack()
							 | 
						|
															}, 1000)
							 | 
						|
														})
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
											},
							 | 
						|
											goBack() {
							 | 
						|
												uni.navigateBack()
							 | 
						|
											},
							 | 
						|
											// 截取价格的整数与小数部分
							 | 
						|
											getInt(pri) {
							 | 
						|
												const price = String(pri)
							 | 
						|
												if (price.indexOf('.') === -1) {
							 | 
						|
													return price
							 | 
						|
												}
							 | 
						|
												if (price === null) {
							 | 
						|
													return '0'
							 | 
						|
												}
							 | 
						|
												return String(price).split('.')[0]
							 | 
						|
											},
							 | 
						|
											getDecimal(pri) {
							 | 
						|
												const price = String(pri)
							 | 
						|
												if (price === null) return '00'
							 | 
						|
												const parts = price.split('.')
							 | 
						|
												return parts[1] ? parts[1].padEnd(2, '0') : '00'
							 | 
						|
											},
							 | 
						|
											selectPackage(index) {
							 | 
						|
												this.selectedPackage = index
							 | 
						|
											},
							 | 
						|
											selectCoupon() {
							 | 
						|
												uni.navigateTo({
							 | 
						|
													url: '/subPages/user/discount?from=recharge'
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											async getMemberList() {
							 | 
						|
												const memberRes = await this.$api.member.getMemberList()
							 | 
						|
												if (memberRes.code === 200) {
							 | 
						|
													this.list = memberRes.result
							 | 
						|
												}
							 | 
						|
											},
							 | 
						|
											changeSwiper(e) {
							 | 
						|
												this.selectedMember = e.current
							 | 
						|
												this.selectedPackage = 0
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onShow() {
							 | 
						|
											// 监听优惠券选择事件
							 | 
						|
											uni.$on('couponSelected', this.handleCouponSelected)
							 | 
						|
											this.getMemberList()
							 | 
						|
										},
							 | 
						|
										onUnload() {
							 | 
						|
											// 移除事件监听
							 | 
						|
											uni.$off('couponSelected', this.handleCouponSelected)
							 | 
						|
											console.log('接触监听');
							 | 
						|
								
							 | 
						|
										},
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style lang="scss" scoped>
							 | 
						|
									.container {
							 | 
						|
										min-height: 100%;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									.header {
							 | 
						|
										width: 100%;
							 | 
						|
								
							 | 
						|
										.header-bg {
							 | 
						|
											position: relative;
							 | 
						|
											width: 100%;
							 | 
						|
											height: 500rpx;
							 | 
						|
											/* #ifdef H5 */
							 | 
						|
											margin-top: -100rpx;
							 | 
						|
								
							 | 
						|
											/* #endif */
							 | 
						|
											// background: red;
							 | 
						|
											.header-img {
							 | 
						|
												width: 100%;
							 | 
						|
												height: 500rpx;
							 | 
						|
											}
							 | 
						|
								
							 | 
						|
											.header-title {
							 | 
						|
												font-size: 32rpx;
							 | 
						|
												color: black;
							 | 
						|
												position: absolute;
							 | 
						|
												top: 100rpx;
							 | 
						|
												font-weight: 500;
							 | 
						|
												left: 50%;
							 | 
						|
												transform: translateX(-50%);
							 | 
						|
											}
							 | 
						|
								
							 | 
						|
											.header-icon {
							 | 
						|
												position: absolute;
							 | 
						|
												top: 100rpx;
							 | 
						|
												left: 30rpx;
							 | 
						|
											}
							 | 
						|
								
							 | 
						|
											.swiper-container {
							 | 
						|
												margin-top: -300rpx;
							 | 
						|
								
							 | 
						|
												.swiper-arrow {
							 | 
						|
													width: 100%;
							 | 
						|
													height: 22rpx;
							 | 
						|
												}
							 | 
						|
								
							 | 
						|
												.swiper-btn {
							 | 
						|
													margin: 35rpx auto 15rpx;
							 | 
						|
													width: 150rpx;
							 | 
						|
													height: 52rpx;
							 | 
						|
													border-radius: 999px;
							 | 
						|
													background: #06DADC;
							 | 
						|
													color: white;
							 | 
						|
													font-size: 28rpx;
							 | 
						|
													font-weight: 500;
							 | 
						|
													text-align: center;
							 | 
						|
													line-height: 52rpx;
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									/* 立即开通会员按钮样式 */
							 | 
						|
									.member-button-section {
							 | 
						|
										margin: 0 50rpx 40rpx;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									// 会员套餐选择容器
							 | 
						|
									.membership-container {
							 | 
						|
										background: linear-gradient(180deg, #DEFFFF 0%, #FBFEFF 22.65%, #FFFFFF 100%);
							 | 
						|
										padding: 40rpx 30rpx;
							 | 
						|
										margin-top: 20rpx;
							 | 
						|
								
							 | 
						|
										.package-list {
							 | 
						|
											display: flex;
							 | 
						|
											justify-content: space-between;
							 | 
						|
											gap: 16rpx;
							 | 
						|
											margin-bottom: 20rpx;
							 | 
						|
								
							 | 
						|
											.package-item {
							 | 
						|
												position: relative;
							 | 
						|
												flex: 1;
							 | 
						|
												background: #fff;
							 | 
						|
												border-radius: 20rpx;
							 | 
						|
								
							 | 
						|
												text-align: center;
							 | 
						|
												border: 2rpx solid #EEEEEE;
							 | 
						|
												transition: all 0.3s;
							 | 
						|
												// width: 119;
							 | 
						|
												height: 210rpx;
							 | 
						|
								
							 | 
						|
												// width: 238rpx;
							 | 
						|
												.info {
							 | 
						|
													padding: 16rpx 16rpx 0 16rpx;
							 | 
						|
												}
							 | 
						|
								
							 | 
						|
												&.active {
							 | 
						|
													border-color: $primary-color;
							 | 
						|
													// box-shadow: 0 4rpx 20rpx rgba(34, 242, 235, 0.2);
							 | 
						|
												}
							 | 
						|
								
							 | 
						|
												.gift-tag {
							 | 
						|
													position: absolute;
							 | 
						|
													top: -10rpx;
							 | 
						|
													left: 0%;
							 | 
						|
													// transform: translateX(-50%);
							 | 
						|
													background: #FF6B6B;
							 | 
						|
													color: #fff;
							 | 
						|
													font-size: 20rpx;
							 | 
						|
													padding: 8rpx 16rpx;
							 | 
						|
													border-radius: 20rpx 20rpx 20rpx 0;
							 | 
						|
													white-space: nowrap;
							 | 
						|
												}
							 | 
						|
								
							 | 
						|
												.package-title {
							 | 
						|
													font-size: 28rpx;
							 | 
						|
													color: #000;
							 | 
						|
													margin-bottom: 16rpx;
							 | 
						|
													font-weight: 500;
							 | 
						|
												}
							 | 
						|
								
							 | 
						|
												.package-price {
							 | 
						|
													font-size: 36rpx;
							 | 
						|
													color: #FF4800;
							 | 
						|
													font-weight: 500;
							 | 
						|
													margin-bottom: 8rpx;
							 | 
						|
								
							 | 
						|
													.package-decimal {
							 | 
						|
														font-size: 24rpx;
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
								
							 | 
						|
												.package-original {
							 | 
						|
													font-size: 24rpx;
							 | 
						|
													color: #8B8B8B;
							 | 
						|
													line-height: 1.4;
							 | 
						|
													text-decoration: line-through;
							 | 
						|
													margin-bottom: 8rpx;
							 | 
						|
												}
							 | 
						|
								
							 | 
						|
												.package-btn {
							 | 
						|
													background: #E4E7EB;
							 | 
						|
													color: #191919;
							 | 
						|
													font-size: 28rpx;
							 | 
						|
													// padding: 12rpx 20rpx;
							 | 
						|
													width: 100%;
							 | 
						|
													// border-radius: 30rpx;
							 | 
						|
													transition: all 0.3s;
							 | 
						|
													height: 52rpx;
							 | 
						|
													line-height: 52rpx;
							 | 
						|
													border-radius: 0 0 24rpx 24rpx;
							 | 
						|
								
							 | 
						|
													&.active {
							 | 
						|
														background: $primary-color;
							 | 
						|
														color: #fff;
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
								
							 | 
						|
										.coupon-section {
							 | 
						|
											.coupon-title {
							 | 
						|
												font-size: 26rpx;
							 | 
						|
												color: #181818;
							 | 
						|
												margin-bottom: 10rpx;
							 | 
						|
												// font-weight: 500;
							 | 
						|
											}
							 | 
						|
								
							 | 
						|
											.coupon-selector {
							 | 
						|
												background: #fff;
							 | 
						|
												border-radius: 16rpx;
							 | 
						|
												padding: 10rpx 0;
							 | 
						|
												display: flex;
							 | 
						|
												justify-content: space-between;
							 | 
						|
												align-items: center;
							 | 
						|
												border-bottom: 2rpx solid #f0f0f0;
							 | 
						|
								
							 | 
						|
												.coupon-placeholder {
							 | 
						|
													display: flex;
							 | 
						|
													justify-content: space-between;
							 | 
						|
													align-items: center;
							 | 
						|
													width: 100%;
							 | 
						|
								
							 | 
						|
													.coupon-text {
							 | 
						|
														font-size: 32rpx;
							 | 
						|
														color: #C6C6C6;
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
								
							 | 
						|
												.coupon-selected {
							 | 
						|
													display: flex;
							 | 
						|
													justify-content: space-between;
							 | 
						|
													align-items: center;
							 | 
						|
													width: 100%;
							 | 
						|
								
							 | 
						|
													.coupon-info {
							 | 
						|
														display: flex;
							 | 
						|
														// flex-direction: column;
							 | 
						|
														align-items: center;
							 | 
						|
														justify-content: space-between;
							 | 
						|
								
							 | 
						|
														.coupon-name {
							 | 
						|
															font-size: 28rpx;
							 | 
						|
															color: #181818;
							 | 
						|
															margin-bottom: 4rpx;
							 | 
						|
														}
							 | 
						|
								
							 | 
						|
														.coupon-amount {
							 | 
						|
															font-size: 28rpx;
							 | 
						|
															color: red;
							 | 
						|
															font-weight: 500;
							 | 
						|
														}
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									/* 会员权益样式 */
							 | 
						|
									.benefits-section {
							 | 
						|
										margin-top: 40rpx;
							 | 
						|
										padding: 0 30rpx;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									.benefits-title {
							 | 
						|
										font-size: 36rpx;
							 | 
						|
										font-weight: bold;
							 | 
						|
										color: #191919;
							 | 
						|
										margin-bottom: 32rpx;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									.benefits-list {
							 | 
						|
										display: flex;
							 | 
						|
										flex-direction: column;
							 | 
						|
										gap: 32rpx;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									.benefit-item {
							 | 
						|
										background: #F8F8F8;
							 | 
						|
										border: 1px solid #FFFFFF;
							 | 
						|
										border-radius: 48rpx;
							 | 
						|
										padding: 27rpx 40rpx;
							 | 
						|
										display: flex;
							 | 
						|
										align-items: center;
							 | 
						|
										justify-content: space-between;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									.benefit-content {
							 | 
						|
										flex: 1;
							 | 
						|
										margin-right: 40rpx;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									.benefit-title {
							 | 
						|
										font-size: 32rpx;
							 | 
						|
										font-weight: 600;
							 | 
						|
										color: #333;
							 | 
						|
										margin-bottom: 16rpx;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									.benefit-desc {
							 | 
						|
										font-size: 24rpx;
							 | 
						|
										color: #09B1B3;
							 | 
						|
										line-height: 36rpx;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									.benefit-icon {
							 | 
						|
										width: 152rpx;
							 | 
						|
										height: 152rpx;
							 | 
						|
										// flex-shrink: 0;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									.benefit-icon image {
							 | 
						|
										width: 100%;
							 | 
						|
										height: 100%;
							 | 
						|
									}
							 | 
						|
								</style>
							 |