<template>
	<view class="drawer-content">
		<!--右抽屉-->
		<tui-drawer mode="right" :visible="rightDrawer" @close="closeDrawer">
			<view
				class="drawer-container clearfix"
				scroll-y
				:style="{ paddingTop: '0px', paddingBottom: isIphoneX ? '180rpx' : '146rpx' }"
			>
				<scroll-view class="tui-drawer-scroll" scroll-y :style="{ height: drawerH + 'px' }">
					<view class="drawer-title">更多筛选</view>
					<view class="drawer-main">
						<view class="drawer-main-name">日期</view>
						<view class="drawer-main-time">
							<view class="drawer-main-time-input">
								<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindStartDateChange">
									<text class="input-text">{{ queryData.startAddTime }}</text>
								</picker>
								<text class="iconfont icon-riqi"></text>
							</view>
							<view class="line">-</view>
							<view class="drawer-main-time-input">
								<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindEndDateChange">
									<text class="input-text">{{ queryData.endAddTime }}</text>
								</picker>
								<text class="iconfont icon-riqi"></text>
							</view>
						</view>
						<view class="drawer-main-name">咨询类别</view>
						<view class="drawer-main-brand clearfix">
							<view
								class="drawer-brand-list"
								:class="category.isChecked ? 'checked' : ''"
								v-for="(category, index) in categorys"
								:key="index"
								@click="choiceCategorys(category, index)"
							>
								{{ category.className }}
							</view>
						</view>
						<template v-if="manager > 0">
							<view class="drawer-main-name">小组</view>
							<view class="drawer-main-brand clearfix">
								<view
									class="drawer-brand-list"
									:class="isCheckedGroups ? 'checked' : ''"
									@click="choiceGroupsAll"
									>全部</view
								> 
								<view
									class="drawer-brand-list"
									:class="group.isChecked ? 'checked' : ''"
									v-for="(group, index) in groups"
									:key="index"
									@click="choiceGroups(group, index)"
								>
									{{ group.leaderName }}
								</view>
							</view>
						</template>
						<template v-if="manager>0 || leaderId>0">
							<view class="drawer-main-name" v-if="members.length>0">组员</view>
							<view class="drawer-main-brand clearfix" v-if="members.length>0">
								<view
									class="drawer-brand-list"
									:class="member.isChecked ? 'checked' : ''"
									v-for="(member, index) in members"
									:key="index"
									@click="choiceMembers(member, index)"
								>
									{{ member.groupName }}
								</view>
							</view>
						</template>
					</view>
				</scroll-view>
				<view class="drawer-input btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
					<view class="drawer-btn clear" @click="closeDrawer">取消</view>
					<view class="drawer-btn comfrim" @click="handSearchConfirm">确定</view>
				</view>
			</view>
		</tui-drawer>
	</view>
</template>

<script>
export default {
	name: 'rightDrawer',
	props: {
		rightDrawer: {
			type: Boolean,
			default: false
		}
	},
	data() {
		const currentDate = this.getDate({
			format: true
		})
		return {
			CustomBar: this.CustomBar, // 顶部导航栏高度
			isIphoneX: this.$store.state.isIphoneX,
			isCheckedGroups:false,
			checkedIndex: 0,
			checkedGroupsIndex: 0,
			checkedMemberIndex: 0,
			isShowClose: false,
			dataList: [],
			date: currentDate,
			manager:0,
			leaderId:0,
			height: 0,
			drawerH: 0 ,// 抽屉内部scrollview高度
			categorys:[],
			checkedCategorysList:[],
			groups:[],
			members:[],
			queryData:{
				startAddTime:'',
				endAddTime:'',
				consult:'',
				leaderId:0,
				groupId:0,
			}
		}
	},
	created() {
		this.SetScrollHeight()
		this.getUserClubConsults()
	},
	computed: {
		startDate() {
			return this.getDate('start')
		},
		endDate() {
			return this.getDate('end')
		}
	},
	methods: {
		async getUserClubConsults() {
			const userInfo = await this.$api.getStorage()
			this.manager = userInfo.manager ? userInfo.manager : 0
			this.leaderId = userInfo.leaderId ? userInfo.leaderId : 0
			//查询咨询类别
			this.UserService.getUserClubConsults()
				.then(response => {
					this.categorys = response.data.map((el, index) => {
						el.isChecked = false
						return el
					})
					if(this.manager > 0){
						this.getUserClubTeams()
					}
					if(this.leaderId > 0){
						this.getUserClubTeamsRroups(this.leaderId)
					}
				})
				.catch(error => {
					console.log('=========>获取咨询类别列表失败')
				})
		},
		getUserClubTeams() {
			this.UserService.getUserClubTeams()
				.then(response => {
					this.groups = response.data.map((el, index) => {
						el.isChecked = false
						return el
					})
				})
				.catch(error => {
					console.log('=========>获取小组列表失败')
				})
		},
		getUserClubTeamsRroups(leaderId) {
			this.UserService.getUserClubTeamsRroups({leaderId:leaderId})
				.then(response => {
					this.members = response.data.map((el, index) => {
						el.isChecked = false
						return el
					})
				})
				.catch(error => {
					console.log('=========>获取咨询类别列表失败')
				})
		},
		choiceCategorys(category,idx){
			//选择分类
			category.isChecked = !category.isChecked 
			if (category.isChecked) {
				if(!this.contains(this.checkedCategorysList,category.id)){
					this.checkedCategorysList.push(category.id)
				}
			} else {
				this.checkedCategorysList.splice(this.checkedCategorysList.indexOf(category.id),1)
			}
			this.queryData.consult = this.checkedCategorysList.join(',')
		},
		contains(arr, val) {// 校验
			return arr.some(item => item === val)
		},
		choiceGroupsAll() {
			// 点击选择全部小组
			this.isCheckedGroups = true
			this.queryData.leaderId = ''
			this.groups.forEach(el => {
				el.isChecked = false
			})
		},
		choiceGroups(group,idx){
			//选择小组
			this.isCheckedGroups = false
			this.checkedGroupsIndex = idx
			this.groups.forEach((el, index) => {
				if (this.checkedGroupsIndex == index) {
					el.isChecked = true
					this.queryData.leaderId = group.leaderId
					this.getUserClubTeamsRroups(group.leaderId)
				} else {
					el.isChecked = false
				}
			})
		},
		choiceMembers(member, idx) {
			//选择组员
			this.checkedMemberIndex = idx
			this.members.forEach((el, index) => {
				if (this.checkedMemberIndex == index) {
					el.isChecked = true
					this.queryData.groupId = member.groupId
				} else {
					el.isChecked = false
				}
			})
		},
		closeDrawer(){
			this.$parent.isScreenDrawer = false
		},
		handSearchConfirm(){
			//确定筛选
			this.$emit('handSearchConfirm', this.queryData)
			this.$parent.isScreenDrawer = false
		},
		bindStartDateChange(event){
			//开始时间
			console.log('开始时间==>',event.detail.value)
			this.queryData.startAddTime = event.detail.value
		},
		bindEndDateChange(event){
			//结束时间
			console.log('结束时间==>',event.detail.value)
			this.queryData.endAddTime = event.detail.value
		},
		SetScrollHeight() {
			let obj = {}
			const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
			uni.getSystemInfo({
				success: res => {
					this.height = obj.top ? obj.top + obj.height + 8 : res.statusBarHeight + 44
					this.drawerH = res.windowHeight - uni.upx2px(180) - this.height
				}
			})
			this.windowHeight = windowHeight - 1
			this.scrollHeight = windowHeight - 1
		},
		getDate(type) {
			const date = new Date()
			let year = date.getFullYear()
			let month = date.getMonth() + 1
			let day = date.getDate()
			if (type === 'start') {
				year = year - 1
			} else if (type === 'end') {
				year = year + 1
			}
			month = month > 9 ? month : '0' + month
			day = day > 9 ? day : '0' + day
			return `${year}-${month}-${day}`
		}
	}
}
</script>

<style lang="scss">
/*screen*/
.drawer-container {
	width: 580rpx;
	height: 100%;
	padding: 80rpx 0;
	overflow: hidden;
	box-sizing: border-box;
	background-color: #FFFFFF;
	.drawer-title {
		width: 100%;
		height: 72rpx;
		line-height: 72rpx;
		box-sizing: border-box;
		padding: 0 30rpx;
		float: left;
		background-color: #f7f7f7;
		font-size: $font-size-26;
		color: #333333;
		font-weight: bold;
		text-align: left;
	}
	.drawer-main {
		width: 100%;
		height: auto;
		box-sizing: border-box;
		float: left;
		.drawer-main-name{
			width: 100%;
			height: 80rpx;
			line-height: 80rpx;
			text-align: left;
			font-size: $font-size-26;
			color: #333333;
			box-sizing: border-box;
			padding: 0 20rpx;
			font-weight: bold;
		}
		.drawer-main-time{
			width: 100%;
			height: 56rpx;
			box-sizing: border-box;
			.line{
				color: #999999;
				float: left;
				line-height: 56rpx;
			}
			.drawer-main-time-input{
				width: 228rpx;
				height: 56rpx;
				background: #F7F7F7;
				border-radius: 28rpx;
				box-sizing: border-box;
				padding: 0 20rpx;
				line-height: 56rpx;
				float: left;
				margin: 0 20rpx;
				position: relative;
				.input-text{
					display: block;
					height: 56rpx;
					font-size: 26rpx;
					color: #666666;
				}
				.icon-riqi{
					color: #E15616;
					display: block;
					width: 40rpx;
					height: 56rpx;
					position: absolute;
					right: 10rpx;
					top: 0;
					line-height: 56rpx;
				}
			}
		}
		.drawer-main-brand {
			width: 100%;
			height: auto;
			box-sizing: border-box;
			padding: 0 20rpx;
			background-color: #ffffff;
			.drawer-brand-list {
				width: 160rpx;
				height: 56rpx;
				line-height: 56rpx;
				text-align: center;
				font-size: 26rpx;
				background-color: #f7f7f7;
				color: #999999;
				border-radius: 30rpx;
				box-sizing: border-box;
				padding: 0 15rpx;
				float: left;
				margin: 12rpx 24rpx 12rpx 0;
				text-overflow: ellipsis;
				overflow: hidden;
				display: -webkit-box;
				-webkit-line-clamp: 1;
				line-clamp: 1;
				-webkit-box-orient: vertical;
				&.checked {
					background-color: #fef6f3;
					color: #e15616;
				}
				&:nth-child(3n) {
					margin-right: 0;
				}
			}
		}
	}
	.drawer-input {
		width: 100%;
		float: left;
		box-sizing: border-box;
		padding: 24rpx 10rpx 0 10rpx;
		border: 1px solid rgba(0, 0, 0, 0.2);
		border-radius: 4rpx;
		position: relative;
		background-color: #ffffff;
		&.btn {
			border: none;
			display: flex;
			position: fixed;
			left: 0;
			bottom: 0;
		}
		.drawer-btn {
			width: 210rpx;
			height: 84rpx;
			border-radius: 42rpx;
			background: $btn-confirm;
			line-height: 84rpx;
			text-align: center;
			font-size: $font-size-26;
			color: #ffffff;
			flex: 1;
			margin: 0 10rpx;
			&.comfrim {
				background: $btn-confirm;
			}
			&.clear {
				background: #FFE6DC;
				color: $color-system;
			}
		}
	}
}
</style>
