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

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);
}
})