<template>
	<view class="home">
		<view class="content" style="padding-top: 25vh;">
			<span class="font-bold">预约日期和时间</span>
			<view class="flex-center mt-60" style="gap: 50rpx;">
				<view class="time-wrapper">
					<span style="color: #dcb066;">2024年</span>
				</view>
				<view class="time-wrapper">
					9月20日
				</view>
				<view class="time-wrapper">
					08：00
				</view>
			</view>
			<span class="font-bold mt-60">预约信息</span>
			<view class="flex-center mt-40" style="gap: 30rpx;">
				<view class="flex-center">
					<input class="time-wrapper1" type="text" v-model="firstName" />
					<span>姓</span>
				</view>
				<view class="flex-center">
					<input class="time-wrapper1" type="text" v-model="lastName" />
					<span>名</span>
				</view>
				<view class="">
					<uv-drop-down ref="dropDown" sign="dropDown_1" text-active-color="#3c9cff"
						:extra-icon="{name:'arrow-down-fill',color:'#666',size:'26rpx'}"
						:extra-active-icon="{name:'arrow-up-fill',color:'#3c9cff',size:'26rpx'}"
						:defaultValue="defaultValue" :custom-style="{padding: '0 30rpx'}" @click="selectMenu">
						<uv-drop-down-item name="order" type="2" :label="dropItem('order').label"
							:value="dropItem('order').value">
						</uv-drop-down-item>
						<uv-drop-down-item name="type" type="2" :label="dropItem('type').label"
							:value="dropItem('type').value">
						</uv-drop-down-item>
						<uv-drop-down-item name="vip_type" type="1" label='VIP文档' :value="dropItem('vip_type').value">
						</uv-drop-down-item>
					</uv-drop-down>
					<uv-drop-down-popup sign="dropDown_1" :click-overlay-on-close="true"
						:currentDropItem="currentDropItem" @clickItem="clickItem"
						@popupChange="change"></uv-drop-down-popup>
				</view>
			</view>
			<view class="flex-col query" style="gap: 0rpx;">
				<view class="flex-sa">
					<view class="btn3" @click="pre">
						返回
					</view>
					<view class="btn3" @click="next">
						取消预约
					</view>
				</view>
				<text class="second-color">欢快无限饮&nbsp;&nbsp;饮酒有限度</text>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				firstName: '',
				lastName: '',
				// 表示value等于这些值，就属于默认值
				defaultValue: [0, 'all', '0'],
				// 筛选结果
				result: [{
					name: 'order',
					label: '最新发布',
					value: 'new'
				}],
				// { name: 'order', label: '最新发布', value: 'new' }
				activeName: 'order',
				order: {
					label: '综合排序',
					value: 'all',
					activeIndex: 0,
					color: '#333',
					activeColor: '#2878ff',
					child: [{
						label: '综合排序',
						value: 'all'
					}, {
						label: '最新发布',
						value: 'new'
					}, {
						label: '低价优先',
						value: 'money'
					}]
				},
				type: {
					label: '文档格式',
					value: 'all',
					activeIndex: 0,
					color: '#333',
					activeColor: '#2878ff',
					child: [{
						label: '全部',
						value: 'all'
					}, {
						label: 'PDF',
						value: 'pdf'
					}, {
						label: 'WROD',
						value: 'word'
					}, {
						label: 'PPT',
						value: 'ppt'
					}]
				},
				vip_type: {
					label: 'VIP文档',
					value: 0,
					activeIndex: 0
				}
			}
		},
		onPageScroll() {
			// 滚动后及时更新位置
			this.$refs.dropDown.init();
		},
		computed: {
			dropItem(name) {
				return (name) => {
					const result = {};
					const find = this.result.find(item => item.name === name);
					if (find) {
						result.label = find.label;
						result.value = find.value;
					} else {
						result.label = this[name].label;
						result.value = this[name].value;
					}
					return result;
				}
			},
			// 获取当前下拉筛选项
			currentDropItem() {
				return this[this.activeName];
			}
		},
		methods: {
			pre() {
				uni.navigateTo({
					url: '/pages/index/greetP5'
				})
			},
			next() {
				uni.navigateTo({
					url: '/pages/index/selectAppointment'
				})
			},
			change(e) {
				console.log('弹窗打开状态：', e);
			},
			/**
			 * 点击每个筛选项回调
			 * @param {Object} e { name, active, type } = e
			 */
			selectMenu(e) {
				const {
					name,
					active,
					type
				} = e;
				this.activeName = name;
				// type 等于1 的需要特殊处理：type不等于1可以忽略
				if (type == 1) {
					this.clickItem({
						name: 'vip_type',
						label: 'VIP文档',
						value: e.active ? 1 : 0
					});
				} else {
					const find = this.result.find(item => item.name == this.activeName);
					if (find) {
						const findIndex = this[this.activeName].child.findIndex(item => item.label == find.label && item
							.value == find.value);
						this[this.activeName].activeIndex = findIndex;
					} else {
						this[this.activeName].activeIndex = 0;
					}
				}
			},
			/**
			 * 点击菜单回调处理
			 * @param {Object} item 选中项 { label,value } = e
			 */
			clickItem(e) {
				// 下面有重新赋值，所以用let
				let {
					label,
					value
				} = e;
				const findIndex = this.result.findIndex(item => item.name == this.activeName);
				if (this.defaultValue.indexOf(value) > -1 && this[this.activeName].label) {
					label = this[this.activeName].label;
				}
				// 已经存在筛选项
				if (findIndex > -1) {
					this.$set(this.result, findIndex, {
						name: this.activeName,
						label,
						value
					})
				} else {
					this.result.push({
						name: this.activeName,
						label,
						value
					});
				}
				this.result = this.result.filter(item => this.defaultValue.indexOf(item.value) == -1);
				uni.showModal({
					content: `筛选的值：${JSON.stringify(this.result)}`
				})
			}

		}
	}
</script>

<style lang="scss" scoped>
	.query {
		position: relative;
		bottom: -45vh;
	}

	.mt-30 {
		padding-top: 30vh;
	}

	.time-wrapper {
		border: 4rpx solid #dcb066;
		padding: 16rpx 26rpx;
		border-radius: 20rpx;
	}

	.time-wrapper1 {
		border: 4rpx solid #dcb066;
		margin-right: 20rpx;
		padding: 14rpx 20rpx;
		width: 80rpx;
		border-radius: 15rpx;
		text-align: center;
	}
</style>