You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
4.2 KiB
179 lines
4.2 KiB
var util = require('../../utils/util.js');
|
|
var api = require('../../config/api.js');
|
|
|
|
var app = getApp()
|
|
Page({
|
|
data: {
|
|
keywrod: '',
|
|
searchStatus: false,
|
|
goodsList: [],
|
|
helpKeyword: [],
|
|
historyKeyword: [],
|
|
categoryFilter: false,
|
|
currentSortType: 'default',
|
|
currentSortOrder: '',
|
|
filterCategory: [],
|
|
defaultKeyword: {},
|
|
hotKeyword: [],
|
|
page: 1,
|
|
size: 20,
|
|
currentSortType: 'id',
|
|
currentSortOrder: 'desc',
|
|
categoryId: 0
|
|
},
|
|
//事件处理函数
|
|
closeSearch: function () {
|
|
wx.navigateBack()
|
|
},
|
|
clearKeyword: function () {
|
|
this.setData({
|
|
keyword: '',
|
|
searchStatus: false
|
|
});
|
|
},
|
|
onLoad: function () {
|
|
|
|
this.getSearchKeyword();
|
|
},
|
|
|
|
getSearchKeyword() {
|
|
let that = this;
|
|
util.request(api.SearchIndex).then(function (res) {
|
|
if (res.errno === 0) {
|
|
that.setData({
|
|
historyKeyword: res.data.historyKeywordList,
|
|
defaultKeyword: res.data.defaultKeyword,
|
|
hotKeyword: res.data.hotKeywordList
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
inputChange: function (e) {
|
|
|
|
this.setData({
|
|
keyword: e.detail.value,
|
|
searchStatus: false
|
|
});
|
|
this.getHelpKeyword();
|
|
},
|
|
getHelpKeyword: function () {
|
|
let that = this;
|
|
util.request(api.SearchHelper, { keyword: that.data.keyword }).then(function (res) {
|
|
if (res.errno === 0) {
|
|
that.setData({
|
|
helpKeyword: res.data
|
|
});
|
|
}
|
|
});
|
|
},
|
|
inputFocus: function () {
|
|
this.setData({
|
|
searchStatus: false,
|
|
goodsList: []
|
|
});
|
|
|
|
if (this.data.keyword) {
|
|
this.getHelpKeyword();
|
|
}
|
|
},
|
|
clearHistory: function () {
|
|
this.setData({
|
|
historyKeyword: []
|
|
})
|
|
|
|
util.request(api.SearchClearHistory, {}, 'POST')
|
|
.then(function (res) {
|
|
console.log('清除成功');
|
|
});
|
|
},
|
|
getGoodsList: function () {
|
|
let that = this;
|
|
util.request(api.GoodsList, { keyword: that.data.keyword, page: that.data.page, size: that.data.size, sort: that.data.currentSortType, order: that.data.currentSortOrder, categoryId: that.data.categoryId }).then(function (res) {
|
|
if (res.code == 200) {
|
|
that.setData({
|
|
searchStatus: true,
|
|
categoryFilter: false,
|
|
goodsList: res.data,
|
|
filterCategory: res.data.filterCategory,
|
|
page: res.meta.currentPage,
|
|
size: res.meta.per_page
|
|
});
|
|
}
|
|
|
|
//重新获取关键词
|
|
that.getSearchKeyword();
|
|
});
|
|
},
|
|
onKeywordTap: function (event) {
|
|
|
|
this.getSearchResult(event.target.dataset.keyword);
|
|
|
|
},
|
|
getSearchResult(keyword) {
|
|
this.setData({
|
|
keyword: keyword,
|
|
page: 1,
|
|
categoryId: 0,
|
|
goodsList: []
|
|
});
|
|
|
|
this.getGoodsList();
|
|
},
|
|
openSortFilter: function (event) {
|
|
let currentId = event.currentTarget.id;
|
|
switch (currentId) {
|
|
case 'categoryFilter':
|
|
this.setData({
|
|
'categoryFilter': !this.data.categoryFilter,
|
|
'currentSortOrder': 'asc'
|
|
});
|
|
break;
|
|
case 'priceSort':
|
|
let tmpSortOrder = 'asc';
|
|
if (this.data.currentSortOrder == 'asc') {
|
|
tmpSortOrder = 'desc';
|
|
}
|
|
this.setData({
|
|
'currentSortType': 'price',
|
|
'currentSortOrder': tmpSortOrder,
|
|
'categoryFilter': false
|
|
});
|
|
|
|
this.getGoodsList();
|
|
break;
|
|
default:
|
|
//综合排序
|
|
this.setData({
|
|
'currentSortType': 'default',
|
|
'currentSortOrder': 'desc',
|
|
'categoryFilter': false
|
|
});
|
|
this.getGoodsList();
|
|
}
|
|
},
|
|
selectCategory: function (event) {
|
|
let currentIndex = event.target.dataset.categoryIndex;
|
|
let filterCategory = this.data.filterCategory;
|
|
let currentCategory = null;
|
|
for (let key in filterCategory) {
|
|
if (key == currentIndex) {
|
|
filterCategory[key].selected = true;
|
|
currentCategory = filterCategory[key];
|
|
} else {
|
|
filterCategory[key].selected = false;
|
|
}
|
|
}
|
|
this.setData({
|
|
'filterCategory': filterCategory,
|
|
'categoryFilter': false,
|
|
categoryId: currentCategory.id,
|
|
page: 1,
|
|
goodsList: []
|
|
});
|
|
this.getGoodsList();
|
|
},
|
|
onKeywordConfirm(event) {
|
|
this.getSearchResult(event.detail.value);
|
|
}
|
|
}) |