<template>
							 | 
						|
									<view>
							 | 
						|
										<view class="se-bgc-white se-pb-20 se-pt-30 se-px-40">
							 | 
						|
											<uv-search @search="onSearch" placeholder="搜索租房信息" :showAction="false" v-model="keyword"></uv-search>
							 | 
						|
										</view>
							 | 
						|
										<view class="se-pb-10 se-px-40 se-bgc-white">
							 | 
						|
											<uv-drop-down ref="dropDown" sign="dropDown_1" text-active-color="#20CD7D"
							 | 
						|
												:extra-icon="{name:'arrow-down-fill',color:'#666',size:'26rpx'}"
							 | 
						|
												:extra-active-icon="{name:'arrow-up-fill',color:'#20CD7D',size:'26rpx'}" :defaultValue="defaultValue"
							 | 
						|
												:custom-style="{padding: '0rpx 0rpx',borderBottom:'1rpx solid transparent'}" @click="selectMenu">
							 | 
						|
												
							 | 
						|
												<uv-drop-down-item name="region" type="2" :label="dropItem('region').label" :value="dropItem('region').value">
							 | 
						|
												</uv-drop-down-item>
							 | 
						|
												<uv-drop-down-item name="rent" type="2" :label="dropItem('rent').label" :value="dropItem('rent').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="duration" type="2" :label="dropItem('duration').label" :value="dropItem('duration').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>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									import { houseArea,houseIconClass,housePrice,houseYear } from "@/common/api.js"
							 | 
						|
									export default {
							 | 
						|
										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];
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										data() {
							 | 
						|
											return {
							 | 
						|
												keyword: "",
							 | 
						|
												// 表示value等于这些值,就属于默认值
							 | 
						|
												defaultValue: ['all', 'all', 'all','all'],
							 | 
						|
												// 筛选结果
							 | 
						|
												result: [],
							 | 
						|
												region:{
							 | 
						|
													label: '区域',
							 | 
						|
													value: 'all',
							 | 
						|
													activeIndex: 0,
							 | 
						|
													color: '#333',
							 | 
						|
													activeColor: '#20CD7D',
							 | 
						|
													child: [
							 | 
						|
														// {
							 | 
						|
														// 	label: '全部区域',
							 | 
						|
														// 	value: 'all'
							 | 
						|
														// }, {
							 | 
						|
														// 	label: '湖南',
							 | 
						|
														// 	value: 'hunan'
							 | 
						|
														// }, {
							 | 
						|
														// 	label: '广州',
							 | 
						|
														// 	value: 'guangzhou'
							 | 
						|
														// },
							 | 
						|
													]
							 | 
						|
												},
							 | 
						|
												rent:{
							 | 
						|
													label: '租金',
							 | 
						|
													value: 'all',
							 | 
						|
													activeIndex: 0,
							 | 
						|
													color: '#333',
							 | 
						|
													activeColor: '#20CD7D',
							 | 
						|
													child: [
							 | 
						|
													// 	{
							 | 
						|
													// 	label: '全部',
							 | 
						|
													// 	value: 'all'
							 | 
						|
													// }, 
							 | 
						|
													// {
							 | 
						|
													// 	label: '0-2k',
							 | 
						|
													// 	value: '2000'
							 | 
						|
													// }, {
							 | 
						|
													// 	label: '2k-4k',
							 | 
						|
													// 	value: '4000'
							 | 
						|
													// }, {
							 | 
						|
													// 	label: '4k-6k',
							 | 
						|
													// 	value: '6000'
							 | 
						|
													// }, {
							 | 
						|
													// 	label: '6k+',
							 | 
						|
													// 	value: '6000+'
							 | 
						|
													// },
							 | 
						|
													]
							 | 
						|
												},
							 | 
						|
												type: {
							 | 
						|
													label: '类型',
							 | 
						|
													value: 'all',
							 | 
						|
													activeIndex: 0,
							 | 
						|
													color: '#333',
							 | 
						|
													activeColor: '#20CD7D',
							 | 
						|
													child: [
							 | 
						|
														// {
							 | 
						|
														// 	label: '全部',
							 | 
						|
														// 	value: 'all'
							 | 
						|
														// }, {
							 | 
						|
														// 	label: '闲置散居农房',
							 | 
						|
														// 	value: 'nongfang'
							 | 
						|
														// }, {
							 | 
						|
														// 	label: '鱼塘',
							 | 
						|
														// 	value: 'yutang'
							 | 
						|
														// }, {
							 | 
						|
														// 	label: '耕地',
							 | 
						|
														// 	value: 'gengdi'
							 | 
						|
														// },
							 | 
						|
													]
							 | 
						|
												},
							 | 
						|
												duration:{
							 | 
						|
													label: '年限',
							 | 
						|
													value: 'all',
							 | 
						|
													activeIndex: 0,
							 | 
						|
													color: '#333',
							 | 
						|
													activeColor: '#20CD7D',
							 | 
						|
													child: [
							 | 
						|
														// {
							 | 
						|
														// 	label: '全部',
							 | 
						|
														// 	value: 'all'
							 | 
						|
														// }, 
							 | 
						|
														// {
							 | 
						|
														// 	label: '5年内',
							 | 
						|
														// 	value: '0-5'
							 | 
						|
														// }, {
							 | 
						|
														// 	label: '5-10年',
							 | 
						|
														// 	value: '5-10'
							 | 
						|
														// }, {
							 | 
						|
														// 	label: '10-20年',
							 | 
						|
														// 	value: '10-20'
							 | 
						|
														// },
							 | 
						|
													]
							 | 
						|
												},
							 | 
						|
												activeName: 'region',
							 | 
						|
												
							 | 
						|
												vip_type: {
							 | 
						|
													label: 'VIP文档',
							 | 
						|
													value: 0,
							 | 
						|
													activeIndex: 0
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										mounted() {
							 | 
						|
											let that = this
							 | 
						|
											// setTimeout(()=>{
							 | 
						|
												that.onhouseArea()
							 | 
						|
												that.onhouseIconClass()
							 | 
						|
												that.onhousePrice()
							 | 
						|
												that.onhouseYear()
							 | 
						|
											// },2000)
							 | 
						|
											console.info('组件')
							 | 
						|
												// houseArea,houseIconClass,housePrice,houseYear
							 | 
						|
										},
							 | 
						|
										methods: {
							 | 
						|
											onhouseArea(){
							 | 
						|
												let that = this
							 | 
						|
												houseArea({}).then(response=>{
							 | 
						|
													let arr = [
							 | 
						|
														{
							 | 
						|
															label: '全部',
							 | 
						|
															value: 'all'
							 | 
						|
														}
							 | 
						|
													]
							 | 
						|
													response.result.forEach(items=>{
							 | 
						|
														let obj = {}
							 | 
						|
														obj.label=items.title;
							 | 
						|
														obj.value=items.id
							 | 
						|
														arr.push(obj)
							 | 
						|
													})
							 | 
						|
													that.region.child=arr
							 | 
						|
													console.info('houseArea',response.result)
							 | 
						|
												}).catch(error=>{
							 | 
						|
													
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											onhouseIconClass(){
							 | 
						|
												let that = this
							 | 
						|
												houseIconClass({}).then(response=>{
							 | 
						|
													console.info(response.result)
							 | 
						|
													let arr = [
							 | 
						|
														{
							 | 
						|
															label: '全部',
							 | 
						|
															value: 'all'
							 | 
						|
														}
							 | 
						|
													]
							 | 
						|
													response.result.forEach(items=>{
							 | 
						|
														let obj = {}
							 | 
						|
														obj.label=items.title;
							 | 
						|
														obj.value=items.id
							 | 
						|
														arr.push(obj)
							 | 
						|
													})
							 | 
						|
													that.type.child=arr
							 | 
						|
												}).catch(error=>{
							 | 
						|
													
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											onhousePrice(){
							 | 
						|
												let that = this
							 | 
						|
												housePrice({}).then(response=>{
							 | 
						|
													let arr = [
							 | 
						|
														{
							 | 
						|
															label: '全部',
							 | 
						|
															value: 'all'
							 | 
						|
														}
							 | 
						|
													]
							 | 
						|
													response.result.forEach(items=>{
							 | 
						|
														let obj = {}
							 | 
						|
														obj.label=items.title;
							 | 
						|
														obj.value=items.price
							 | 
						|
														arr.push(obj)
							 | 
						|
													})
							 | 
						|
													that.rent.child=arr
							 | 
						|
												}).catch(error=>{
							 | 
						|
													
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											onhouseYear(){
							 | 
						|
												let that = this
							 | 
						|
												houseYear({}).then(response=>{
							 | 
						|
													console.info(response.result)
							 | 
						|
													let arr = [
							 | 
						|
														{
							 | 
						|
															label: '全部',
							 | 
						|
															value: 'all'
							 | 
						|
														}
							 | 
						|
													]
							 | 
						|
													response.result.forEach(items=>{
							 | 
						|
														let obj = {}
							 | 
						|
														obj.label=items.title;
							 | 
						|
														obj.value=items.timeGo
							 | 
						|
														arr.push(obj)
							 | 
						|
													})
							 | 
						|
													that.duration.child=arr
							 | 
						|
												}).catch(error=>{
							 | 
						|
													
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											onSearch(){
							 | 
						|
												this.$emit("onSearch",this.keyword)
							 | 
						|
											},
							 | 
						|
											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;
							 | 
						|
												this.result.push({
							 | 
						|
													name: this.activeName,
							 | 
						|
													label,
							 | 
						|
													value
							 | 
						|
												});
							 | 
						|
												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)}`
							 | 
						|
												// })
							 | 
						|
												console.info('onParent',this.result)
							 | 
						|
												this.$emit("onParent",this.result)
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style>
							 | 
						|
								</style>
							 |