|                                                                                                                                                                                                                                                         |  | <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">欢快无限饮  饮酒有限度</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>
 |