<template>
	<view class="content">
		<u-image :src="venueInfo.url" mode="aspectFill" height="45vw" border-radius="10px" width="calc(100vw - 30px)" style="margin: 10px 15px;float: left;"></u-image>
		<u-section :title="venueInfo.name" :right="false" :show-line="false" font-size="32" class="title-box"></u-section>
		<view class="venue-text">
			<u-icon name="map" style="font-size: 14px;margin-right: 2px;"></u-icon>
			{{venueInfo.address}}
		</view>
		
		<!-- 场馆简介 -->
		<u-section title="场馆简介" :right="false" :show-line="false" font-size="32" class="title-box"></u-section>
		<view class="venue-text">{{venueInfo.desc}}</view>
		
		<!-- 会员开通 -->
		<u-section title="会员开通" font-size="32" :right="false" :show-line="false" class="title-box"></u-section>
		<view class="menber-box">
			<view class="menber-col" v-for="(item, index) in menberList" :key="index">
				<view class="menber-label">卡名: {{ item.typeValue }}</view>
				<view class="menber-label">售价: ¥ {{ item.sellingPrice }}</view>
				<view class="menber-label">使用时间: {{ item.startDate }}~{{ item.endDate }}</view>
				<!-- <u-button type="warning" shape="circle" :ripple="true" :custom-style="{...handleCustomStyle, float: 'left', marginLeft: ''}" size="mini" @click="goToPay(item)">点击开通</u-button> -->
				<u-checkbox v-model="item.checked" active-color="#ff6e3e" @change="changeCardClick(item)">选择</u-checkbox>
				<view class="menber-icon iconfont iconzu4931"></view>
			</view>
			<view v-if="checkedCardList.length">
				<u-button type="warning" shape="circle" :ripple="true" :custom-style="{...handleCustomStyle, float: 'right'}" size="mini" @click="handlePayClick">去支付</u-button>
			</view>
		</view>
		
		<!-- 班级信息 -->
		<u-section title="班级信息" :right="false" :show-line="false" font-size="32" class="title-box"></u-section>
		<view class="class-box">
			<u-card :head-border-bottom="false" :foot-border-top="false" padding="0" margin="10px" v-for="(item, index) in venueInfo.classListResList"
			 :key="index" class="class-card" @click="goToClassDetail(item)">
				<view class="class-content" slot="head" style="padding-top: 10px;">
					<text class="class-name">{{item.name}}</text>
				</view>
				<view class="class-content" slot="body" style="padding-bottom: 10px;">
					<view class="class-info">
						<view class="class-info-row">
							<u-icon name="clock"></u-icon>
							{{item.classStartDate}}&nbsp;~&nbsp;{{item.classEndDate}}
						</view>
						<view class="class-info-row" v-for="(site, index2) in item.classExtrasList" :key="index2">
							<u-icon name="calendar" style="visibility: hidden;"></u-icon>
							<text>{{site.week}}&nbsp;{{site.startTime}}-{{site.endTime}}</text>
						</view>
						<view class="class-info-row">
							<u-icon name="map"></u-icon>
							{{item.address}}
						</view>
					</view>
				</view>
				<view class="class-content" slot="foot" style="padding-bottom: 10px;text-align: right;">
					<u-button type="default" shape="circle" :ripple="true" :custom-style="handleDefaultCustomStyle" size="mini"
					 :hair-line="false" plain @click.stop="cardHandle(item, 1)">体验</u-button>
					<!-- <u-button type="warning" shape="circle" :ripple="true" :custom-style="handleCustomStyle" size="mini" @click.stop="cardHandle(item, 2)">报名</u-button> -->
				</view>
			</u-card>
		</view>
		<u-popup v-model="enlistShow" mode="bottom" border-radius="30" :closeable="true">
			<scroll-view scroll-y class="student-box">
				<u-card :title="item.studentName" title-size="32" :head-style="cardStyle" :head-border-bottom="false" :show-foot="false"
				 margin="10px" borderRadius="20" v-for="(item, index) in studentList1" :key="index" @click="enlistStudent(item)">
					<view class="student-card" slot="body">
						<view class="class-info-text">性别：{{item.sex}}&nbsp;&nbsp;年龄：{{item.age}}</view>
					</view>
				</u-card>
			</scroll-view>
			<u-button type="warning" shape="circle" :ripple="true" :custom-style="{...customStyle,margin:'15px',float: 'left',width: 'calc(100% - 30px)'}"
			 @click="goToSubscribelForm()">新增学员</u-button>
		</u-popup>
		<u-popup v-model="subscribeShow" mode="bottom" border-radius="30">
			<scroll-view scroll-y class="student-box">
				<u-card :title="item.studentName" title-size="32" :head-style="cardStyle" :head-border-bottom="false" :show-foot="false"
				 margin="10px" borderRadius="20" v-for="(item, index) in studentList2" :key="index" @click="subscribeStudent(item)">
					<view class="student-card" slot="body">
						<view class="class-info-text">性别：{{item.sex}}&nbsp;&nbsp;年龄：{{item.age}}</view>
					</view>
				</u-card>
			</scroll-view>
			<u-button type="warning" shape="circle" :ripple="true" :custom-style="{...customStyle,margin:'15px',float: 'left',width: 'calc(100% - 30px)'}"
			 @click="goToSubscribelForm()">新增学员</u-button>
		</u-popup>
		<u-top-tips ref="uTips" zIndex="100000"></u-top-tips>
	</view>
</template>

<script>
	import {
		mapGetters
	} from 'vuex'
	const NET = require('@/utils/request')
	const API = require('@/config/api')
	export default {
		computed: {
			...mapGetters([
				'mainColor',
				'customStyle',
				'handleCustomStyle',
				'handleDefaultCustomStyle',
			])
		},
		data() {
			return {
				venueId: '',
				venueInfo: {
					url: '',
					name: '',
					address: '',
					desc: '',
					classListResList: [],
				},
				menberList: [],
				checkedCardList: [],
				classId: '',
				cardStyle: {
					fontWeight: 'bold'
				},
				enlistShow: false,
				studentList1: [],
				subscribeShow: false,
				studentList2: [],
			}
		},
		onLoad(options) {
			this.venueId = options.id
			this.initialize()
		},
		onShow() {
			NET.request(API.getEnlistAbleStudent, {}, 'POST').then(res => {
				this.studentList1 = res.data.row
			}).catch(error => {
				this.$refs.uTips.show({
					title: error.message,
					type: 'warning',
				})
			})
			NET.request(API.getSubscribeAbleList, {}, 'POST').then(res => {
				this.studentList2 = res.data.row
			}).catch(error => {
				this.$refs.uTips.show({
					title: error.message,
					type: 'warning',
				})
			})
		},
		onPullDownRefresh() {
			this.initialize()
			setTimeout(() => {
				uni.stopPullDownRefresh();
			}, 500)
		},
		methods: {
			//  获取初始化数据
			initialize() {
				NET.request(API.getVenueDetail, {
					id: this.venueId
				}, 'POST').then(res => {
					this.venueInfo = res.data
				}).catch(error => {
					this.$refs.uTips.show({
						title: error.message,
						type: 'warning',
					})
				})
				// 会员卡
				NET.request(API.getMemberCardList, {venueId:this.venueId}, 'POST').then(res => {
					this.menberList = res.data.map(item => {
						return {
							id: item.id,
							type: item.type,
							typeValue: item.typeValue,
							sellingPrice: item.sellingPrice,
							startDate: item.startDate,
							endDate: item.endDate,
							checked: false
						}
					})

				}).catch(error => {
					this.$refs.uTips.show({
						title: error.message,
						type: 'warning',
					})
				})
			},
			//  选择会员卡
			changeCardClick(cardItem) {
				const cardItemIndex = this.checkedCardList.findIndex( item => item.id === cardItem.id )
				if(cardItemIndex === -1) {
					this.checkedCardList.push(cardItem)
				} else {
					this.checkedCardList.splice(cardItemIndex,1)
				}
			},
			//  跳转班级详情
			goToClassDetail(item) {
				uni.navigateTo({
					url: '/pagesMember/classDetail?id=' + item.id
				});
			},
			//  弹出
			cardHandle(item, type) {
				this.classId = item.id
				if (type == 1) {
					this.subscribeShow = true
				} else {
					this.enlistShow = true
				}
			},
			//  学员报名
			enlistStudent(item) {
				NET.request(API.enlistStudent, {
					classId: this.classId,
					studentId: item.studentId,
				}, 'POST').then(res => {
					this.enlistShow = false
					this.$refs.uTips.show({
						title: res.message,
						type: 'success',
					})
				}).catch(error => {
					this.$refs.uTips.show({
						title: error.message,
						type: 'warning',
					})
				})
			},
			//  学员预约
			subscribeStudent(item) {
				NET.request(API.subscribeStudent, {
					classId: this.classId,
					studentId: item.studentId,
				}, 'POST').then(res => {
					this.subscribeShow = false
					this.$refs.uTips.show({
						title: res.message,
						type: 'success',
					})
				}).catch(error => {
					this.$refs.uTips.show({
						title: error.message,
						type: 'warning',
					})
				})
			},
			//  跳转开通支付
			handlePayClick() {
				// uni.navigateTo({
				// 	url: '/pagesMain/openMember?memberCardType=' + site.type + '&typeValue=' + site.typeValue
				// });
				uni.navigateTo({
					url: '/pagesMain/openMember?cardinfo=' + encodeURIComponent(JSON.stringify(this.checkedCardList))
				})
			},
			//  跳转新增学员表单
			goToSubscribelForm() {
				uni.navigateTo({
					url: '/pagesMember/subscribelForm'
				});
			},
		},
	}
</script>

<style lang="scss" scoped>
	@import "@/static/css/themes.scss";

	.content {
		width: 100%;
		float: left;

		.title-box {
			width: 100vw;
			padding: 10px 15px 5px 15px;
			float: left;
			box-sizing: border-box;
		}

		.venue-text {
			width: 100vw;
			padding: 5px 15px 15px 15px;
			float: left;
			box-sizing: border-box;
			color: #999999;
			font-size: 10px;
			line-height: 16px;
		}
		
		.section-title {
			width: 100%;
			height: 28px;
			display: flex;
			align-items: center;
			margin-top: 20px;
			padding: 0 15px;
		
			u-section {
				margin-left: 10px;
				flex: 1;
			}
		}
		
		.menber-box {
			width: 100vw;
			float: left;
			padding: 10px 15px;
			
			.menber-col {
				width: 100%;
				padding: 15px 20px;
				margin-bottom: 10px;
				display: inline-block;
				background-color: #FFFFFF;
				border-radius: 15px;
				box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);
				position: relative;
				overflow: hidden;
		
				.menber-label {
					width: 100%;
					margin-bottom: 5px;
					float: left;
					font-size: 14px;
					font-weight: bold;
					// line-height: 20px;
				}
		
				.menber-num {
					width: 100%;
					float: left;
					font-size: 26px;
					line-height: 28px;
					color: $mainColor;
				}
		
				.menber-icon {
					font-size: 100px;
					color: $mainColor;
					position: absolute;
					right: -5px;
					bottom: -15px;
					opacity: 0.5;
				}
			}
		}
		
		.class-box {
			width: 100vw;
			padding: 5px;
			float: left;
			box-sizing: border-box;

			.class-card {
				/deep/.u-border:after {
					border-radius: 20px !important;
					border-color: #999999;
				}

				.class-content {
					width: 100%;
					padding: 2px 15px;
					float: left;
					position: relative;
				}

				.class-name {
					height: 20px;
					font-weight: bold;
					font-size: 14px;
					line-height: 20px;
				}

				.class-info {
					.class-info-row {
						color: #999999;
						line-height: 18px;
					}
				}
			}
		}

		.student-box {
			max-height: 200px;
			padding: 0 15px;
			margin: 25px 0 0 0;
			box-sizing: border-box;
			overflow: auto;

			/deep/.u-card__head {
				padding-bottom: 0px !important;
			}
		}
	}
</style>
