Commit a98d0440 by 汪睦雄

修改了搜索和分类搜索

parent 8e89955d
// components/search-filter/index.js
import api from '../../utils/Api.js'
Component({
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: {
filter_idx: 0,
selected: {
sort: 'default',
region_params:{}
},
selected_titles: {
region: '全部地域',
sort: '默认排序'
},
sorts: [
{
id: 1,
name: '默认排序',
value: 'default'
},
{
id: 2,
name: '最新发布',
value: 'latest'
}, {
id: 3,
name: '价格最低',
value: 'pricelow'
}
],
// 地域选择
region_selected: {
level_1: -1,
level_1_title: '',
level_2: -1,
level_2_title: '',
level_3: -1,
level_3_title: '',
},
region_level1_datas: [],
region_level2_datas: [],
region_level3_datas: []
},
/**
* 组件渲染完后的方法
*/
ready() {
api.search.filter().then(res => {
this.setData({
types: res.data.type,
catalogs: res.data.catalog_id,
region_level1_datas: res.data.region_level_1,
tags: res.data.tags
})
})
},
/**
* 组件的方法列表
*/
methods: {
// 排序筛选
sortFilter: function (event) {
let item = event.target.dataset.item
let _selected = this.data.selected
_selected.sort = item.value
let _selected_titles = this.data.selected_titles
_selected_titles.sort = item.name
this.setData({
filter_idx: 0,
selected: _selected,
selected_titles: _selected_titles
})
this._submitFilter()
},
// 点击筛选项
filterTap: function(event) {
let idx = event.target.dataset.idx;
console.log(idx)
if (idx == this.data.filter_idx) {
this.setData({
filter_idx: 0
})
} else {
this.setData({
filter_idx: idx
})
}
},
// 提交筛选数据请求
_submitFilter() {
// console.log(this.data.selected)
let myEventDetail = {
filters: this.data.selected
} // detail对象,提供给事件监听函数
let myEventOption = {} // 触发事件的选项
this.triggerEvent('filter', myEventDetail, myEventOption)
},
// 点击蒙层关闭筛选弹框
closeFilter: function(event) {
this.setData({
filter_idx: 0
})
},
// 阻止子元素冒泡点击事件到付元素
preventEvent: function(event) {
},
// 选择地域
getLevelDatas: function(level, id) {
let that = this
let params = {
id: id
}
api.search.queryRegion(params).then(res => {
// TODO:success code id 0
if (res.code == 1) {
if (level == 1) {
that.setData({
region_level2_datas: res.data,
region_level3_datas: []
})
} else if (level == 2) {
that.setData({
region_level3_datas: res.data
})
}
}
})
},
/* 选择地域等级 */
selectRegionLevel: function(event) {
let region = event.target.dataset.item
let order = event.target.dataset.order
// 设置选中的ID
let _region_selected = this.data.region_selected
if (order == '1') {
_region_selected.level_1 = parseInt(region.id)
_region_selected.level_1_title = region.title
} else if (order == '2') {
_region_selected.level_2 = parseInt(region.id)
_region_selected.level_2_title = region.title
} else if (order == '3') {
_region_selected.level_3 = parseInt(region.id)
_region_selected.level_3_title = region.title
}
this.setData({
region_selected: _region_selected
})
// 选择区域
if (order == '1' || order == '2') {
if (order == '1') {
_region_selected.level_2 = -1
_region_selected.level_3 = -1
this.setData({
region_selected: _region_selected,
region_level2_datas: [],
region_level3_datas: []
})
} else {
_region_selected.level_3 = -1
this.setData({
region_selected: _region_selected,
region_level3_datas: []
})
}
if (region.id == 0) {
// 搜索上一级数据的全部
this.submitRegionFilter()
} else {
// 请求下一级数据
this.getLevelDatas(region.level, region.id)
}
} else {
// 搜索当前数据
this.submitRegionFilter()
}
},
/* 提交地域搜索 */
submitRegionFilter: function(){
let region_params = {}
let region_selected = this.data.region_selected
let title = '全部地域'
if (region_selected.level_1 == 0) {
region_params['key'] = 'level_1'
region_params['value'] = region_selected.level_1
}else{
if (region_selected.level_2 == 0) {
region_params['key'] = 'level_1'
region_params['value'] = region_selected.level_1
title = region_selected.level_1_title
} else {
if (region_selected.level_3 == 0) {
region_params['key'] = 'level_2'
region_params['value'] = region_selected.level_2
title = region_selected.level_2_title
} else {
region_params['key'] = 'level_3'
region_params['value'] = region_selected.level_3
title = region_selected.level_3_title
}
}
}
// 设置全部地域的标题
let _selected_titles = this.data.selected_titles
_selected_titles.region = title
this.setData({
selected_titles: _selected_titles
})
// 设置地域筛选参数
let _selected = this.data.selected
_selected.region_params = region_params
this.setData({
selected: _selected,
filter_idx: 0 // 关闭弹框
})
// 提交搜索
this._submitFilter()
}
}
})
\ No newline at end of file
{
"component": true,
"usingComponents": {
"i-row": "/iview/row/index",
"i-col": "/iview/col/index"
}
}
\ No newline at end of file
<!--components/search-filter/index.wxml-->
<wxs src="../../pages/common.wxs" module="common"></wxs>
<view class='filter-wrapper' catchtouchmove="true">
<i-row i-class='row-filter'>
<!-- 地区筛选 -->
<i-col span="11" i-class="col-class">
<view class="filter-item">
<text class="{{filter_idx==1?'active':''}}" catchtap='filterTap' data-idx="1">{{selected_titles.region}}</text>
<image class="search-icon" src="/images/icon-down-select{{filter_idx==1?'ed':''}}.png"></image>
</view>
</i-col>
<i-col span="2" i-class="col-class">
<view class="vdivider">
</view>
</i-col>
<!-- 排序筛选 -->
<i-col span="11" i-class="col-class">
<view class="filter-item">
<text class="{{filter_idx==2?'active':''}}" catchtap='filterTap' data-idx="2">{{selected_titles.sort}}</text>
<image class="search-icon" src="/images/icon-down-select{{filter_idx==2?'ed':''}}.png"></image>
</view>
</i-col>
</i-row>
<view catchtap='closeFilter' class='filter-content-wrapper' wx:if="{{filter_idx>0}}" catchtouchmove='true'>
<view class="row-content" catchtap='preventEvent'>
<scroll-view class="scroll-view" scroll-y="true" style="width: 100%;height: 100%;">
<!-- 地区选项 - 新版本 - 汪小熊 - 20181212 -->
<view wx:if="{{filter_idx==1}}" class="region_filter">
<scroll-view scroll-y='true' class="region_level_wrapper">
<view wx:for="{{region_level1_datas}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id" bindtap='selectRegionLevel' data-item="{{n}}" data-order='1' class="{{region_selected.level_1==n.id?'active':''}}"> {{n.title}} </view>
</scroll-view>
<scroll-view scroll-y='true' class="region_level_wrapper">
<view wx:for="{{region_level2_datas}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id" bindtap='selectRegionLevel' data-item="{{n}}" data-order='2' class="{{region_selected.level_2==n.id?'active':''}}"> {{n.title}} </view>
</scroll-view>
<scroll-view scroll-y='true' class="region_level_wrapper">
<view wx:for="{{region_level3_datas}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id" bindtap='selectRegionLevel' data-item="{{n}}" data-order='3' class="{{region_selected.level_3==n.id?'active':''}}"> {{n.title}} </view>
</scroll-view>
</view>
<!-- 排序筛选 -->
<view wx:if="{{filter_idx==2}}" class='filter-row' wx:for="{{sorts}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id">
<text bindtap="sortFilter" data-idx="{{n.id}}" data-item="{{n}}" class="{{selected.sort==n.value?'seled':''}}">{{n.name}}</text>
<image wx:if="{{selected.sort==n.value}}" class='f-selected' src='/images/icon_filter_selected.png'></image>
</view>
</scroll-view>
</view>
</view>
</view>
\ No newline at end of file
/* components/search-filter/index.wxss */
.filter-wrapper {
position: relative;
width: 100%;
z-index: 1;
}
.row-filter {
height: 56px;
line-height: 56px;
border-bottom: 1px solid #eee;
}
.filter-item {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.filter-item > image {
width: 12rpx;
height: 10rpx;
margin-left: 12rpx;
}
.filter-item > text {
color: rgb(51, 51, 51);
font-size: 28rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
/* width:58px; */
}
.filter-item > text.active {
color: rgb(43, 163, 215);
}
.filter-content-wrapper {
position: fixed;
width: 100%;
top: 56px;
left: 0;
bottom: 0;
right: 0;
background: rgba(0, 0, 0, 0.3);
}
.row-content {
position: relative;
border-top: 1px solid #f4f4f4;
background: white;
height: 60%;
width: 100%;
box-sizing: border-box;
}
.filter-row {
width: 100%;
display: flex;
align-items: center;
box-sizing: border-box;
justify-content: space-between;
font-size: 28rpx;
color: rgb(102, 102, 102);
margin-bottom: 46rpx;
}
.filter-row:last-child {
margin-bottom: 0rpx;
}
.filter-row > text {
width: 100%;
}
.filter-row > text.seled {
color: rgb(43, 163, 215);
}
.filter-row > .f-selected {
height: 27rpx;
width: 23rpx;
}
.tags-wrapper {
display: flex;
flex-flow: row wrap;
justify-content: space-around;
align-items: center;
height: 100%;
width: 100%;
}
.tag-item {
min-width: 120rpx;
padding: 0 10rpx 0 10rpx;
height: 75rpx;
border: 1px solid #f4f4f4;
color: rgb(102, 102, 102);
font-size: 26rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 10rpx;
border-radius: 2rpx;
}
.tab-scroll-view {
height: 88%;
width: 100%;
}
.scroll-view {
height: 100%;
width: 100%;
padding: 26px;
box-sizing: border-box;
}
.tag-item.active {
color: rgb(43, 163, 215);
border: 1px solid rgb(43, 163, 215);
}
.tag-btn-wrapper {
width: 100%;
text-align: center;
position: absolute;
bottom: 0;
height: 12%;
background-color: #f5f5f5;
display: flex;
justify-content: center;
align-items: center;
}
.tag-btn-wrapper > button.btn {
display: inline-block;
background: none;
font-size: 14px;
border-radius: 28rpx;
line-height: 58rpx;
outline-style: none;
}
.tag-btn-wrapper > button.cancel {
border: 1px solid #ddd;
color: rgb(102, 102, 102);
margin-right: 30rpx;
}
.tag-btn-wrapper > button.cancel::after {
display: none;
}
.tag-btn-wrapper > button.ensure {
border: 1px solid rgb(43, 163, 215);
color: rgb(43, 163, 215);
}
.tag-btn-wrapper > button.ensure::after {
display: none;
}
/*搜索相关*/
.region_filter {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
align-items: flex-start;
}
.region_level_wrapper {
display: flex;
flex-flow: column nowrap;
justify-content: flex-start;
align-items: center;
height: 500rpx;
}
.region_level_wrapper view {
height: 76rpx;
color: rgb(102, 102, 102);
}
.region_level_wrapper .active {
color: rgb(43, 163, 215);
}
.vdivider{
margin-top: 30rpx;
height: 60rpx;
width: 1px;
background:#ccc;
}
\ No newline at end of file
...@@ -23,13 +23,27 @@ Component({ ...@@ -23,13 +23,27 @@ Component({
city: '0', city: '0',
catalog: '0', catalog: '0',
region: '0', region: '0',
tags: [] tags: [],
region_params:{}
}, },
selected_titles: { selected_titles: {
type: '全部项目', type: '全部项目',
catalog: '全部分类', catalog: '全部分类',
region: '全部地域' region: '全部地域'
} },
// 地域选择
region_selected: {
level_1: -1,
level_1_title: '',
level_2: -1,
level_2_title: '',
level_3: -1,
level_3_title: '',
},
region_level1_datas: [],
region_level2_datas: [],
region_level3_datas: []
}, },
/** /**
* 组件渲染完后的方法 * 组件渲染完后的方法
...@@ -39,7 +53,7 @@ Component({ ...@@ -39,7 +53,7 @@ Component({
this.setData({ this.setData({
types: res.data.type, types: res.data.type,
catalogs: res.data.catalog_id, catalogs: res.data.catalog_id,
regions: res.data.city, region_level1_datas: res.data.region_level_1,
tags: res.data.tags tags: res.data.tags
}) })
}) })
...@@ -139,7 +153,7 @@ Component({ ...@@ -139,7 +153,7 @@ Component({
}, },
// 提交筛选数据请求 // 提交筛选数据请求
_submitFilter() { _submitFilter() {
console.log(this.data.selected ) // console.log(this.data.selected)
let myEventDetail = { let myEventDetail = {
filters: this.data.selected filters: this.data.selected
} // detail对象,提供给事件监听函数 } // detail对象,提供给事件监听函数
...@@ -155,6 +169,121 @@ Component({ ...@@ -155,6 +169,121 @@ Component({
// 阻止子元素冒泡点击事件到付元素 // 阻止子元素冒泡点击事件到付元素
preventEvent: function(event) { preventEvent: function(event) {
},
// 选择地域
getLevelDatas: function(level, id) {
let that = this
let params = {
id: id
}
api.search.queryRegion(params).then(res => {
// TODO:success code id 0
if (res.code == 1) {
if (level == 1) {
that.setData({
region_level2_datas: res.data,
region_level3_datas: []
})
} else if (level == 2) {
that.setData({
region_level3_datas: res.data
})
}
}
})
},
/* 选择地域等级 */
selectRegionLevel: function(event) {
let region = event.target.dataset.item
let order = event.target.dataset.order
// 设置选中的ID
let _region_selected = this.data.region_selected
if (order == '1') {
_region_selected.level_1 = parseInt(region.id)
_region_selected.level_1_title = region.title
} else if (order == '2') {
_region_selected.level_2 = parseInt(region.id)
_region_selected.level_2_title = region.title
} else if (order == '3') {
_region_selected.level_3 = parseInt(region.id)
_region_selected.level_3_title = region.title
}
this.setData({
region_selected: _region_selected
})
// 选择区域
if (order == '1' || order == '2') {
if (order == '1') {
_region_selected.level_2 = -1
_region_selected.level_3 = -1
this.setData({
region_selected: _region_selected,
region_level2_datas: [],
region_level3_datas: []
})
} else {
_region_selected.level_3 = -1
this.setData({
region_selected: _region_selected,
region_level3_datas: []
})
}
if (region.id == 0) {
// 搜索上一级数据的全部
this.submitRegionFilter()
} else {
// 请求下一级数据
this.getLevelDatas(region.level, region.id)
}
} else {
// 搜索当前数据
this.submitRegionFilter()
}
},
/* 提交地域搜索 */
submitRegionFilter: function(){
let region_params = {}
let region_selected = this.data.region_selected
let title = '全部地域'
if (region_selected.level_1 == 0) {
region_params['key'] = 'level_1'
region_params['value'] = region_selected.level_1
}else{
if (region_selected.level_2 == 0) {
region_params['key'] = 'level_1'
region_params['value'] = region_selected.level_1
title = region_selected.level_1_title
} else {
if (region_selected.level_3 == 0) {
region_params['key'] = 'level_2'
region_params['value'] = region_selected.level_2
title = region_selected.level_2_title
} else {
region_params['key'] = 'level_3'
region_params['value'] = region_selected.level_3
title = region_selected.level_3_title
}
}
}
// 设置全部地域的标题
let _selected_titles = this.data.selected_titles
_selected_titles.region = title
this.setData({
selected_titles: _selected_titles
})
// 设置地域筛选参数
let _selected = this.data.selected
_selected.region_params = region_params
this.setData({
selected: _selected,
filter_idx: 0 // 关闭弹框
})
// 提交搜索
this._submitFilter()
} }
} }
}) })
\ No newline at end of file
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
<image class="search-icon" src="/images/icon-down-select{{filter_idx==2?'ed':''}}.png"></image> <image class="search-icon" src="/images/icon-down-select{{filter_idx==2?'ed':''}}.png"></image>
</view> </view>
</i-col> </i-col>
<!-- 地区筛选 --> <!-- 地区筛选 -->
<i-col span="6" i-class="col-class"> <i-col span="6" i-class="col-class">
<view class="filter-item"> <view class="filter-item">
...@@ -21,6 +22,7 @@ ...@@ -21,6 +22,7 @@
<image class="search-icon" src="/images/icon-down-select{{filter_idx==3?'ed':''}}.png"></image> <image class="search-icon" src="/images/icon-down-select{{filter_idx==3?'ed':''}}.png"></image>
</view> </view>
</i-col> </i-col>
<i-col span="6" i-class="col-class"> <i-col span="6" i-class="col-class">
<view class="filter-item"> <view class="filter-item">
<text class="{{filter_idx==4?'active':''}}" catchtap='filterTap' data-idx="4">标签{{selected.tags.length>0?'('+selected.tags.length+')':''}}</text> <text class="{{filter_idx==4?'active':''}}" catchtap='filterTap' data-idx="4">标签{{selected.tags.length>0?'('+selected.tags.length+')':''}}</text>
...@@ -39,25 +41,39 @@ ...@@ -39,25 +41,39 @@
<text bindtap="selectFilter" data-idx="{{n.id}}" data-name="{{n.name}}">{{n.name}}</text> <text bindtap="selectFilter" data-idx="{{n.id}}" data-name="{{n.name}}">{{n.name}}</text>
<image wx:if="{{selected.catalog==n.id}}" class='f-selected' src='/images/icon_filter_selected.png'></image> <image wx:if="{{selected.catalog==n.id}}" class='f-selected' src='/images/icon_filter_selected.png'></image>
</view> </view>
<!-- 地区选项 --> <!-- 地区选项 - 旧版本 -->
<view wx:if="{{filter_idx==3}}" class='filter-row' wx:for="{{regions}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id"> <view wx:if="{{filter_idx==111113}}" class='filter-row' wx:for="{{regions}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id">
<text bindtap="selectFilter" data-idx="{{n.id}}" data-name="{{n.name}}">{{n.name}}</text> <text bindtap="selectFilter" data-idx="{{n.id}}" data-name="{{n.name}}">{{n.name}}</text>
<image wx:if="{{selected.region==n.id}}" class='f-selected' src='/images/icon_filter_selected.png'></image> <image wx:if="{{selected.region==n.id}}" class='f-selected' src='/images/icon_filter_selected.png'></image>
</view> </view>
<!-- 地区选项 - 新版本 - 汪小熊 - 20181212 -->
<view wx:if="{{filter_idx==3}}" class="region_filter">
<scroll-view scroll-y='true' class="region_level_wrapper">
<view wx:for="{{region_level1_datas}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id" bindtap='selectRegionLevel' data-item="{{n}}" data-order='1' class="{{region_selected.level_1==n.id?'active':''}}"> {{n.title}} </view>
</scroll-view>
<scroll-view scroll-y='true' class="region_level_wrapper">
<view wx:for="{{region_level2_datas}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id" bindtap='selectRegionLevel' data-item="{{n}}" data-order='2' class="{{region_selected.level_2==n.id?'active':''}}"> {{n.title}} </view>
</scroll-view>
<scroll-view scroll-y='true' class="region_level_wrapper">
<view wx:for="{{region_level3_datas}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id" bindtap='selectRegionLevel' data-item="{{n}}" data-order='3' class="{{region_selected.level_3==n.id?'active':''}}"> {{n.title}} </view>
</scroll-view>
</view>
</scroll-view> </scroll-view>
<scroll-view class="tab-scroll-view" scroll-y="true" wx:if="{{filter_idx==4}}"> <scroll-view class="tab-scroll-view" scroll-y="true" wx:if="{{filter_idx==4}}">
<view class="tags-wrapper"> <view class="tags-wrapper">
<block wx:for="{{tags}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id"> <block wx:for="{{tags}}" wx:for-index="idx" wx:for-item="n" wx:key="n.id">
<view class="tag-item {{common.inArray(selected.tags, n.id)==true?'active':''}}" bindtap="selectTags" data-idx="{{n.id}}"> <view class="tag-item {{common.inArray(selected.tags, n.id)==true?'active':''}}" bindtap="selectTags" data-idx="{{n.id}}">
{{n.name}} {{n.name}}
</view> </view>
</block> </block>
</view> </view>
</scroll-view> </scroll-view>
<view class="tag-btn-wrapper" wx:if="{{filter_idx==4}}"> <view class="tag-btn-wrapper" wx:if="{{filter_idx==4}}">
<button class="btn cancel" bindtap="cancelSelectTags">取消选择</button> <button class="btn cancel" bindtap="cancelSelectTags">取消选择</button>
<button class="btn ensure" bindtap="ensureSelectTags">确定</button> <button class="btn ensure" bindtap="ensureSelectTags">确定</button>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
\ No newline at end of file
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.filter-item > image { .filter-item > image {
width: 12rpx; width: 12rpx;
height: 10rpx; height: 10rpx;
...@@ -26,9 +27,9 @@ ...@@ -26,9 +27,9 @@
.filter-item > text { .filter-item > text {
color: rgb(51, 51, 51); color: rgb(51, 51, 51);
font-size: 28rpx; font-size: 28rpx;
white-space:nowrap; white-space: nowrap;
overflow:hidden; overflow: hidden;
text-overflow:ellipsis; text-overflow: ellipsis;
/* width:58px; */ /* width:58px; */
} }
...@@ -91,6 +92,7 @@ ...@@ -91,6 +92,7 @@
height: 100%; height: 100%;
width: 100%; width: 100%;
} }
.tag-item { .tag-item {
min-width: 120rpx; min-width: 120rpx;
padding: 0 10rpx 0 10rpx; padding: 0 10rpx 0 10rpx;
...@@ -104,16 +106,19 @@ ...@@ -104,16 +106,19 @@
margin: 10rpx; margin: 10rpx;
border-radius: 2rpx; border-radius: 2rpx;
} }
.tab-scroll-view { .tab-scroll-view {
height: 88%; height: 88%;
width: 100%; width: 100%;
} }
.scroll-view { .scroll-view {
height: 100%; height: 100%;
width: 100%; width: 100%;
padding: 26px; padding: 26px;
box-sizing: border-box; box-sizing: border-box;
} }
.tag-item.active { .tag-item.active {
color: rgb(43, 163, 215); color: rgb(43, 163, 215);
border: 1px solid rgb(43, 163, 215); border: 1px solid rgb(43, 163, 215);
...@@ -145,7 +150,8 @@ ...@@ -145,7 +150,8 @@
color: rgb(102, 102, 102); color: rgb(102, 102, 102);
margin-right: 30rpx; margin-right: 30rpx;
} }
.tag-btn-wrapper > button.cancel::after{
.tag-btn-wrapper > button.cancel::after {
display: none; display: none;
} }
...@@ -153,6 +159,33 @@ ...@@ -153,6 +159,33 @@
border: 1px solid rgb(43, 163, 215); border: 1px solid rgb(43, 163, 215);
color: rgb(43, 163, 215); color: rgb(43, 163, 215);
} }
.tag-btn-wrapper > button.ensure::after{
.tag-btn-wrapper > button.ensure::after {
display: none; display: none;
} }
\ No newline at end of file
/*搜索相关*/
.region_filter {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
align-items: flex-start;
}
.region_level_wrapper {
display: flex;
flex-flow: column nowrap;
justify-content: flex-start;
align-items: center;
height: 500rpx;
}
.region_level_wrapper view {
height: 76rpx;
color: rgb(102, 102, 102);
}
.region_level_wrapper .active {
color: rgb(43, 163, 215);
}
...@@ -22,7 +22,8 @@ Page({ ...@@ -22,7 +22,8 @@ Page({
catalog: '0', catalog: '0',
city: '0', city: '0',
region: '0', region: '0',
tags: [] tags: [],
region_params: {}
} }
}, },
...@@ -56,6 +57,14 @@ Page({ ...@@ -56,6 +57,14 @@ Page({
if (parseInt(this.data.filters.catalog) > 0) { if (parseInt(this.data.filters.catalog) > 0) {
params['catalog_id'] = this.data.filters.catalog params['catalog_id'] = this.data.filters.catalog
} }
// 三级区域选择
let region_params = this.data.filters.region_params
let arr = Object.getOwnPropertyNames(region_params)
if (arr.length > 0){
params[region_params['key']] = region_params['value']
}
console.log('params', params)
// 请求数据接口 // 请求数据接口
api.search.index(params).then(res => { api.search.index(params).then(res => {
if (res.code) { if (res.code) {
...@@ -118,7 +127,7 @@ Page({ ...@@ -118,7 +127,7 @@ Page({
wx.showLoading({ wx.showLoading({
title: '加载中...', title: '加载中...',
}) })
new Schedule().task(this.getListData).delay(1600).task(() => { new Schedule().task(this.getListData).delay(800).task(() => {
wx.hideNavigationBarLoading() wx.hideNavigationBarLoading()
wx.stopPullDownRefresh() wx.stopPullDownRefresh()
wx.hideLoading() wx.hideLoading()
......
...@@ -18,17 +18,22 @@ Page({ ...@@ -18,17 +18,22 @@ Page({
title: '', title: '',
tags: [], tags: [],
catalog: '0' catalog: '0',
filters: {
region_params: {},
sort: 'default'
}
}, },
/** /**
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad: function (options) { onLoad: function(options) {
let _title = options.title let _title = options.title
let _tags = options.tags let _tags = options.tags
let _catalog = options.catalog let _catalog = options.catalog
if (_tags!=null && _tags.length>0){ if (_tags != null && _tags.length > 0) {
this.setData({ this.setData({
tags: JSON.parse(_tags) tags: JSON.parse(_tags)
}) })
...@@ -56,7 +61,7 @@ Page({ ...@@ -56,7 +61,7 @@ Page({
/** /**
* 加载 * 加载
*/ */
getListData: function (callback) { getListData: function(callback) {
const p = this.data.currentPage const p = this.data.currentPage
let params = { let params = {
p: p p: p
...@@ -70,6 +75,16 @@ Page({ ...@@ -70,6 +75,16 @@ Page({
if (parseInt(this.data.catalog) > 0) { if (parseInt(this.data.catalog) > 0) {
params['catalog_id'] = this.data.catalog params['catalog_id'] = this.data.catalog
} }
// 地域和排序
params['sort'] = this.data.filters.sort
let region_params = this.data.filters.region_params
let arr = Object.getOwnPropertyNames(region_params)
if (arr.length > 0) {
params[region_params['key']] = region_params['value']
}
console.log('params', params)
// 请求数据接口 // 请求数据接口
api.search.index(params).then(res => { api.search.index(params).then(res => {
if (res.code) { if (res.code) {
...@@ -78,6 +93,10 @@ Page({ ...@@ -78,6 +93,10 @@ Page({
loading: false, loading: false,
currentPage: 2 currentPage: 2
}) })
$Toast({
content: res.msg,
type: 'error'
});
} else { } else {
let _projects = this.data.projects let _projects = this.data.projects
this.setData({ this.setData({
...@@ -94,35 +113,35 @@ Page({ ...@@ -94,35 +113,35 @@ Page({
/** /**
* 生命周期函数--监听页面初次渲染完成 * 生命周期函数--监听页面初次渲染完成
*/ */
onReady: function () { onReady: function() {
}, },
/** /**
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow: function () { onShow: function() {
}, },
/** /**
* 生命周期函数--监听页面隐藏 * 生命周期函数--监听页面隐藏
*/ */
onHide: function () { onHide: function() {
}, },
/** /**
* 生命周期函数--监听页面卸载 * 生命周期函数--监听页面卸载
*/ */
onUnload: function () { onUnload: function() {
}, },
/** /**
* 页面相关事件处理函数--监听用户下拉动作 * 页面相关事件处理函数--监听用户下拉动作
*/ */
onPullDownRefresh: function () { onPullDownRefresh: function() {
this.setData({ this.setData({
projects: [], projects: [],
loading: true, loading: true,
...@@ -133,7 +152,7 @@ Page({ ...@@ -133,7 +152,7 @@ Page({
wx.showLoading({ wx.showLoading({
title: '加载中...', title: '加载中...',
}) })
new Schedule().task(this.getListData).delay(1600).task(() => { new Schedule().task(this.getListData).delay(800).task(() => {
wx.hideNavigationBarLoading() wx.hideNavigationBarLoading()
wx.stopPullDownRefresh() wx.stopPullDownRefresh()
wx.hideLoading() wx.hideLoading()
...@@ -143,7 +162,7 @@ Page({ ...@@ -143,7 +162,7 @@ Page({
/** /**
* 页面上拉触底事件的处理函数 * 页面上拉触底事件的处理函数
*/ */
onReachBottom: function () { onReachBottom: function() {
let that = this let that = this
if (that.data.loading || !that.data.hasMore) { if (that.data.loading || !that.data.hasMore) {
return; return;
...@@ -161,7 +180,18 @@ Page({ ...@@ -161,7 +180,18 @@ Page({
/** /**
* 用户点击右上角分享 * 用户点击右上角分享
*/ */
onShareAppMessage: function () { onShareAppMessage: function() {
} },
/**
* 用户进行了筛选操作
*/
filterChange: function (event) {
let _filters = event.detail.filters
this.setData({
filters: _filters
})
wx.startPullDownRefresh()
},
}) })
\ No newline at end of file
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
"usingComponents": { "usingComponents": {
"project-item": "/components/project-item/index", "project-item": "/components/project-item/index",
"more": "/components/more/index", "more": "/components/more/index",
"i-toast": "/iview/toast/index" "i-toast": "/iview/toast/index",
"catalog-filter": "/components/catalog-filter/index"
} }
} }
\ No newline at end of file
<!--pages/search/list/list.wxml--> <!--pages/search/list/list.wxml-->
<view class="page-wrapper"> <view class="page-wrapper">
<view class="search-header">
<catalog-filter bind:filter="filterChange" />
</view>
<view class="projects-wrapper"> <view class="projects-wrapper">
<project-item wx:for="{{projects}}" wx:for-index="idx" wx:for-item="item" wx:key="item.id" project-item="{{item}}" /> <project-item wx:for="{{projects}}" wx:for-index="idx" wx:for-item="item" wx:key="item.id" project-item="{{item}}" />
</view> </view>
<i-toast id="toast" /> <i-toast id="toast" />
</view> </view>
<more hasMore="{{hasMore}}" loading="{{loading}}" page="{{currentPage}}" />
\ No newline at end of file <!-- <more hasMore="{{hasMore}}" loading="{{loading}}" page="{{currentPage}}" /> -->
\ No newline at end of file
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
"list": [] "list": []
}, },
"miniprogram": { "miniprogram": {
"current": 14, "current": 16,
"list": [ "list": [
{ {
"id": 0, "id": 0,
...@@ -130,6 +130,19 @@ ...@@ -130,6 +130,19 @@
"name": "预约下次", "name": "预约下次",
"pathName": "pages/detail/appoint/index", "pathName": "pages/detail/appoint/index",
"query": "id=173" "query": "id=173"
},
{
"id": -1,
"name": "搜索",
"pathName": "pages/search/index",
"query": ""
},
{
"id": -1,
"name": "搜索列表",
"pathName": "pages/search/list/list",
"query": "catalog=5&ptitle=品牌酒店",
"scene": "1047"
} }
] ]
} }
......
...@@ -78,6 +78,9 @@ export const search = { ...@@ -78,6 +78,9 @@ export const search = {
}, },
filter: params => { filter: params => {
return req.post('project/searchCondition', params).then(res => res.data) return req.post('project/searchCondition', params).then(res => res.data)
},
queryRegion: params => {
return req.post('project/queryRegion', params).then(res => res.data)
} }
} }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
// } // }
export const Config = { export const Config = {
apiPath: "https://meixz.utools.club/api/", apiPath: "https://meixzz.usa1.utools.club/api/",
mobPath: "https://mavaler.jqhulian.com/mob/", mobPath: "https://mavaler.jqhulian.com/mob/",
shopJoinPath: "https://mavaler.jqhulian.com/mob/Index/shopjoin" shopJoinPath: "https://mavaler.jqhulian.com/mob/Index/shopjoin"
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment