<template>
	<view class="container">
		<view class="header">
			<!-- #ifndef H5 -->
			<view class="header-bg">
				<image src="/static/member-background.png" class="header-img" mode="scaleToFill" />
				<text class="header-title">会员中心</text>
			</view>
			<!-- #endif -->

			<view class="header-content">
				<view class="zuanshi">
					<image src="/static/member-diamond.png" mode="scaleToFill" class="zuanshi-img" />
				</view>
				<view v-if="!isMember" class="noVip-container">
					<image src="/static/VIP.png" mode="aspectFit" class="VIP-img" />
					<text class="intro">{{ configParamContent('member_info') || '共19项会员特权 | 3 项年VIP专属特权' }}</text>
					<view class="border"></view>
					<view class="info">
						<view class="avatar-box">
							<image :src="userInfo.avatar" mode="aspectFill" class="avatar" />
							<text class="name">{{ userInfo.name }}</text>
						</view>
						<uv-button :text="isLogin ? '立即开通' : '前往登陆'" @click="goRecharge" type="primary" :customStyle="{
							width: '160rpx',
							height: '60rpx',
							borderRadius: '198rpx',
							backgroundColor: '#06DADC',
							color: '#fff',
							fontSize: '28rpx',
							fontWeight: '500',
							lineHeight: '60rpx',
							letterSpacing: '0%',
							verticalAlign: 'middle',
						}" />
					</view>
				</view>
				<view v-else>
					<!-- 代码加在这里 -->
					<view class="vip-container ">
						<view class="avatar-box ">
							<image :src="userInfo.avatar" mode="aspectFill" class="avatar" />
							<text class="name">{{ userInfo.name }}</text>
							<text class="time">{{ memberInfo[0].endTime.split(' ')[0] }}</text>
						</view>
						<view class="border"></view>
						<view class="project">{{ memberInfo[0].memberTitle }}</view>
						<text class="res-time">{{ '预计剩余学习' +
							$utils.calculateDateDifference(memberInfo[0].endTime.split(' ')[0]) + '天'}}</text>
					</view>
				</view>
			</view>
		</view>


		<!-- 会员权益 -->
		<view class="benefits-section" v-if="!isMember">
			<view class="benefits-title">会员权益</view>

			<view class="benefits-list">
				<!-- 碎片学习 系统掌握 -->
				<!-- <view class="benefit-item" v-for="(item, index) in memberBenefits" 
		:key="index">
          <uv-parse :content="item"></uv-parse>
        </view> -->

				<uv-parse :content="memberBenefits[0]"></uv-parse>

				<!-- 匹配水平 -->
				<!-- <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 class="study-plan-section" v-else>
			<view class="section-title">学习计划</view>


			<view class="plan-books">
				<view v-for="(book, index) in studyPlanBooks" :key="index" class="plan-book-item"
					@click="goBookDetail(book.book.id)" :class="{ 'active-book': index === 1 }">
					<view class="plan-book-cover">
						<image :src="book.book.booksImg" mode="aspectFill"></image>
						<!-- 学习中标识 -->
						<view v-if="index === 1" class="studying-badge">
							<view class="studying-icon" />
							<text>学习中</text>
						</view>
					</view>
					<view class="plan-book-info">
						<text class="plan-book-title" :class="{ 'highlight-title': index === 1 }">{{ book.book.booksName
							|| '暂无课程' }}</text>
						<view class="plan-book-meta">
							<text class="plan-book-grade" :class="{ 'highlight-title': index === 1 }">{{
								book.book.categoryName || '--' }}/</text>
							<image v-if="index !== 1" src="/static/play-icon.png" class="plan-book-duration-icon" />
							<image v-else src="/static/play-icon-highlight.png" class="plan-book-duration-icon" />
							<text class="plan-book-duration" :class="{ 'highlight-title': index === 1 }">{{
								book.book.duration }}</text>
						</view>
					</view>
				</view>
			</view>
		</view>

		<!-- 学习推荐 -->
		<view class="study-recommend-section" v-if="isMember">
			<view class="section-header" @click="goRecommend">
				<text class="section-title">学习推荐</text>
				<view class="section-more">
					<text>更多</text>
					<uv-icon name="arrow-right" size="14" color="#8B8B8B"></uv-icon>
				</view>
			</view>

			<view class="recommend-grid">
				<view v-for="(book, index) in recommendBooks" :key="index" @click="goBookDetail(book.id)"
					class="recommend-grid-item">
					<view class="recommend-grid-cover">
						<image :src="book.booksImg" mode="aspectFill"></image>
					</view>
					<view class="recommend-grid-info">
						<text class="recommend-grid-title">{{ book.booksName }}</text>
						<view class="recommend-grid-meta">
							<text class="recommend-grid-grade">{{ book.categoryName }}/</text>
							<image src="/static/播放图标.png" class="recommend-grid-duration-icon" />
							<text class="recommend-grid-duration">{{ book.duration }}</text>
						</view>
					</view>
				</view>
			</view>
		</view>

	</view>
</template>

<script>
export default {
	data() {
		return {
			isLogin: uni.getStorageSync('token') ? true : false,
			memberInfo: [],
			memberBenefits: [],
			userInfo: {
				name: '战斗世界',
				avatar: '/static/默认头像.png'
			},

			// 学习计划书籍数据
			studyPlanBooks: [

			],

			// 学习推荐书籍数据
			recommendBooks: [

			]
		}
	},
	computed: {
		isMember() {
			return this.memberInfo.length > 0
		}
	},
	methods: {
		// 跳转学习推荐
		goRecommend() {
			uni.navigateTo({
				url: '/subPages/home/search'
			})
		},
		// 跳转书籍详情
		goBookDetail(bookId) {
			uni.navigateTo({
				url: `/subPages/home/directory?id=${bookId}`
			})
		},
		goRecharge() {
			if (!this.isLogin) {
				uni.navigateTo({
					url: '/subPages/login/login'
				})
				return
			}
			uni.navigateTo({
				url: '/subPages/member/recharge'
			})
		},
		// 获取会员信息
		async getUserMemberInfo() {
			const memberRes = await this.$api.member.getUserMemberInfo()
			if (memberRes.code === 200) {
				this.memberInfo = [...memberRes.result]
			}
			if (!this.memberInfo.length) {
				// 如果不是会员 获取会员部分信息
				this.getMemberBenefits()
			}
		},
		// 获取会员权益
		async getMemberBenefits() {
			const benefitsRes = await this.$api.member.getMemberList()
			if (benefitsRes.code === 200) {
				this.memberBenefits = benefitsRes.result.map(item => item.content)
			}
		},
		// 获取用户信息
		async getUserInfo() {
			const userRes = await this.$api.login.getUserInfo()
			if (userRes.code === 200) {
				this.userInfo = userRes.result
			}
		},
		// 获取3个学习计划书籍
		async getStudyPlanBook() {
			const bookRes = await this.$api.book.stand({
				pageNo: 1,
				pageSize: 3
			})
			if (bookRes.code === 200) {
				const oneBook = bookRes.result.records[1]
				const twoBook = bookRes.result.records[0]
				const threeBook = bookRes.result.records[2]
				this.studyPlanBooks = [oneBook, twoBook, threeBook]

			}
		},
		async getRecommendBook() {
			const bookRes = await this.$api.book.list({
				pageNo: 1,
				pageSize: 6,
				member: 1
			}, false)
			if (bookRes.code === 200) {
				this.recommendBooks = bookRes.result.records
			}
		},
	},
	async onShow() {
		// 如果登录了就查询会员情况 如果没有登录就不查询
		if (uni.getStorageSync('token')) {
			this.isLogin = true
			Promise.all([this.getUserMemberInfo(), this.getUserInfo(), this.getStudyPlanBook(), this
				.getRecommendBook()
			])
		} else {
			this.isLogin = false
			this.userInfo = {
				name: '登录后查看会员情况',
				avatar: '/static/默认头像.png'
			}
		}
	}
}
</script>

<style lang="scss" scoped>
.container {
	min-height: 100%;
	padding-bottom: 50rpx;
}

.header {
	width: 100%;

	.header-bg {
		position: relative;
		width: 100%;
		height: 400rpx;

		// background: red;
		.header-img {
			width: 100%;
			height: 400rpx;
		}

		.header-title {
			font-size: 32rpx;
			color: black;
			position: absolute;
			top: 100rpx;
			font-weight: 500;
			left: 50%;
			transform: translateX(-50%);
		}
	}

	.header-content {
		margin: 0 18rpx;
		/* #ifndef H5 */
		margin-top: -150rpx;
		/* #endif */
		/* #ifdef H5 */
		margin-top: 100rpx;
		/* #endif */

		// height: 256rpx;
		border-radius: 32rpx;
		border-width: 2rpx;
		padding: 40rpx;
		background: linear-gradient(180deg, #DEFFFF 0%, #FBFEFF 22.65%, #F0FBFF 100%);
		border: 2rpx solid #06DADC12;
		display: flex;
		flex-direction: column;
		gap: 28rpx;
		position: relative;

		.vip-container {
			padding: 20rpx 0;
			display: flex;
			flex-direction: column;
			gap: 18rpx;

			.project {
				font-size: 36rpx;
				color: #191919;
				line-height: 1.4;
				font-weight: 500;
			}

			.res-time {
				color: $primary-color;

				font-size: 24rpx;
				line-height: 36rpx;
			}
		}

		.noVip-container {
			display: flex;
			flex-direction: column;
			// align-items: center;
			// justify-content: center;
			gap: 28rpx;

		}

		.zuanshi {
			position: absolute;
			width: 190rpx;
			height: 190rpx;
			top: -80rpx;
			right: 0;

			.zuanshi-img {
				width: 190rpx;
				height: 190rpx;
			}
		}

		.VIP-img {
			width: 80rpx;
			height: 50rpx;
		}

		.border {
			width: 100%;
			// height: 2rpx;
			border: 2rpx solid;

			border-image-source: linear-gradient(90deg, rgba(228, 255, 255, 0) 0%, #C3EFEF 50.48%, rgba(228, 255, 255, 0) 100%);
			border-image-slice: 1;

		}

		.intro {
			font-size: 28rpx;

			line-height: 36rpx;
			letter-spacing: 0%;
			vertical-align: middle;
			color: #09B1B3;

		}

		.info {
			display: flex;
			justify-content: space-between;
			align-items: center;
		}

		.avatar-box {
			display: flex;
			align-items: center;
			gap: 16rpx;

			.name {
				font-weight: 600;
				font-size: 36rpx;
				line-height: 44rpx;
				letter-spacing: 0%;
				vertical-align: middle;
				color: #252545;
			}

			.avatar {
				width: 60rpx;
				height: 60rpx;
				border-radius: 50%;
			}

			.time {
				font-size: 30rpx;
				color: #8B8B8B;
				line-height: 36rpx;
			}
		}
	}
}

/* 立即开通会员按钮样式 */
.member-button-section {
	margin: 40rpx 50rpx;
}

/* 会员权益样式 */
.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%;
}

/* 学习计划样式 */
.study-plan-section {
	margin-top: 40rpx;
	padding: 0 30rpx;
}

.section-title {
	font-size: 36rpx;
	font-weight: 500;
	color: #191919;
	margin-bottom: 32rpx;
}

.plan-books {
	display: flex;
	justify-content: center;
	align-items: flex-end;
	gap: 78rpx;
	padding: 20rpx 0;
}

.plan-book-item {
	display: flex;
	flex-direction: column;
	align-items: center;

	transition: all 0.3s ease;

	&.active-book {
		transform: scale(1.15);

		.plan-book-cover {
			// box-shadow: 0 8rpx 24rpx rgba(6, 218, 220, 0.3);
		}
	}
}

.plan-book-cover {
	width: 172rpx;
	height: 230rpx;
	border-radius: 16rpx;
	overflow: hidden;
	margin-bottom: 16rpx;
	position: relative;
	box-shadow: 0px 4px 4px 0px #C0BCBA75;

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

	.studying-badge {
		position: absolute;
		bottom: 0rpx;
		right: 0rpx;
		background: #00000099;
		color: #fff;
		padding: 6rpx 10rpx;
		border-radius: 20rpx;
		font-size: 18rpx;
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 6rpx;

		.studying-icon {
			width: 10rpx;
			height: 10rpx;
			background: $primary-color;
			border-radius: 50%;
		}
	}
}

.plan-book-info {
	text-align: center;

	width: 180rpx;

	.plan-book-title {
		// width: 100%;
		font-size: 28rpx;
		font-weight: 700;
		color: #333;
		margin-bottom: 8rpx;
		display: block;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;

		&.highlight-title {
			color: $primary-color;
		}
	}

	.plan-book-meta {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 8rpx;


		.plan-book-duration-icon {
			width: 20rpx;
			height: 20rpx;
		}

		.plan-book-grade {
			font-size: 24rpx;
			color: #999;

			&.highlight-title {
				color: $primary-color;
			}
		}

		.plan-book-duration {
			font-size: 24rpx;
			color: #999;

			&.highlight-title {
				color: $primary-color;
			}
		}
	}
}

/* 学习推荐样式 */
.study-recommend-section {
	margin-top: 40rpx;
	padding: 0 30rpx;
}

.section-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 24rpx;

	.section-more {
		display: flex;
		align-items: center;
		gap: 4rpx;

		text {
			font-size: 24rpx;
			color: #8B8B8B;
		}
	}
}

.recommend-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 32rpx;

	.recommend-grid-item {
		width: 208rpx;
		display: flex;
		flex-direction: column;

		.recommend-grid-cover {
			box-shadow: 0px 4px 4px 0px #C0BCBA75;
			width: 100%;
			height: 278rpx;
			border-radius: 16rpx;
			overflow: hidden;
			margin-bottom: 16rpx;

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

		.recommend-grid-info {
			padding: 6rpx;

			.recommend-grid-title {
				font-size: 28rpx;
				font-weight: 700;
				color: #333;
				margin-bottom: 14rpx;
				overflow: hidden;
				text-overflow: ellipsis;
				white-space: nowrap;
			}

			.recommend-grid-meta {
				display: flex;
				align-items: center;

				.recommend-grid-duration-icon {
					width: 24rpx;
					height: 24rpx;
					margin-right: 12rpx;
				}

				.recommend-grid-grade {
					font-size: 24rpx;
					color: #999;
					margin-right: 8rpx;
				}

				.recommend-grid-duration {
					font-size: 24rpx;
					color: #999;
				}
			}
		}
	}
}
</style>