<template>
|
|
<view class="content">
|
|
<!-- 选择展示框 -->
|
|
<u-dropdown ref="uDropdown" @open="open" @close="close">
|
|
<u-dropdown-item v-model="region" :title="region" :options="options1">
|
|
<!-- 地区联动 -->
|
|
</u-dropdown-item>
|
|
|
|
<u-dropdown-item v-model="live" :title="live.length>1?'多选':live[0]" :options="options2">
|
|
<!-- 分栏 -->
|
|
</u-dropdown-item>
|
|
<u-dropdown-item v-model="price" :title="price" :options="options2">
|
|
<!-- 价格区间选择 -->
|
|
<view class="Price-box">
|
|
<view class="Price-box-title">
|
|
快捷选择
|
|
</view>
|
|
<view class="Price-box-select">
|
|
<view class="Price-box-select-row" v-for="(item,index) in price_list" :key="index" @click="changePriceIndex(index)">
|
|
<u-tag :text="item.conten" :mode="item.mode" size="select-custom"/>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 间隔区间线 -->
|
|
</u-dropdown-item>
|
|
</u-dropdown>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: "select-search",
|
|
props: {
|
|
list: {
|
|
typeof: Array,
|
|
default: []
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
region: '区域',
|
|
live: ['居住',],
|
|
price: '租金',
|
|
priceIndex: '', //记录价格坐标
|
|
price_list: [
|
|
{
|
|
mode: 'plain',
|
|
conten: '不限'
|
|
},{
|
|
mode: 'plain',
|
|
conten: '<800'
|
|
},{
|
|
mode: 'plain',
|
|
conten: '800-1000'
|
|
},{
|
|
mode: 'plain',
|
|
conten: '>1000'
|
|
}]
|
|
};
|
|
},
|
|
methods: {
|
|
open(index) {
|
|
console.log(index,"打开")
|
|
// 展开某个下来菜单时,先关闭原来的其他菜单的高亮
|
|
// 同时内部会自动给当前展开项进行高亮
|
|
this.$refs.uDropdown.highlight();
|
|
},
|
|
close(index) {
|
|
console.log(index,"关闭")
|
|
// 关闭的时候,给当前项加上高亮
|
|
// 当然,您也可以通过监听dropdown-item的@change事件进行处理
|
|
this.$refs.uDropdown.highlight(index);
|
|
},
|
|
change() {
|
|
// 更多的细节,如有需要请自行根据业务逻辑进行处理
|
|
// this.$refs.uDropdown.highlight(xxx);
|
|
console.log(this.$refs.uDropdown)
|
|
},
|
|
// 请求数据
|
|
/*
|
|
* 将请求的价格做相应的处理
|
|
* 小标的plain空 light量
|
|
* list[
|
|
* {mode: 'plain', content:'内容'}]
|
|
*
|
|
*/
|
|
// 选择价格
|
|
changePriceIndex(index){
|
|
console.log(index)
|
|
// 只能选择一个
|
|
const price_list = this.price_list;
|
|
// 如果记录的下标值不为空且与之前记录的值不同则将之前的暗灭
|
|
if(this.priceIndex !== index && this.priceIndex !== ''){
|
|
this.price_list[this.priceIndex].mode = 'plain';
|
|
// 将值保存到一个地方
|
|
}
|
|
|
|
if(this.priceIndex === index ){
|
|
// 取消保存的值
|
|
}
|
|
this.priceIndex = index
|
|
if(price_list[index].mode === 'dark'){
|
|
this.price_list[index].mode = 'plain'
|
|
}else {
|
|
this.price_list[index].mode = 'dark'
|
|
}
|
|
this.price_list = price_list
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.content {
|
|
width: 100%;
|
|
height: 80rpx;
|
|
border-bottom: rgba(167, 164, 162, .3);
|
|
.Price-box{
|
|
background-color: #fff;
|
|
&-title{
|
|
padding-top: 26rpx;
|
|
padding-left: 20rpx;
|
|
font-weight: 700;
|
|
font-size: 36rpx;
|
|
}
|
|
&-select{
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
padding-top: 24rpx;
|
|
width: 100%;
|
|
&-row{
|
|
padding: 30rpx 20rpx;
|
|
height: 80rpx;
|
|
font-size: 28rpx;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
</style>
|