Commit 98db674d3911e8a99513ad6365b37f4792a15620
1 parent
76134058
搜索页增加历史搜索记录
Showing
3 changed files
with
90 additions
and
2 deletions
pages/goods/search/search.js
| @@ -22,7 +22,12 @@ Page({ | @@ -22,7 +22,12 @@ Page({ | ||
| 22 | tabname: "sort", //排序的字段 | 22 | tabname: "sort", //排序的字段 |
| 23 | adname: "asc", //升降的字段 | 23 | adname: "asc", //升降的字段 |
| 24 | rq_data:null, | 24 | rq_data:null, |
| 25 | + | ||
| 26 | + | ||
| 27 | + searchRecord: [], | ||
| 28 | + keyword: '', | ||
| 25 | }, | 29 | }, |
| 30 | + | ||
| 26 | onLoad: function(t) { | 31 | onLoad: function(t) { |
| 27 | this.data.rq_data=t; | 32 | this.data.rq_data=t; |
| 28 | 33 | ||
| @@ -104,6 +109,9 @@ Page({ | @@ -104,6 +109,9 @@ Page({ | ||
| 104 | if (0 != t.max_price && t.max_price!=undefined) { url += "&min_pirce=" + t.min_pirce + "&max_price=" + t.max_price;} | 109 | if (0 != t.max_price && t.max_price!=undefined) { url += "&min_pirce=" + t.min_pirce + "&max_price=" + t.max_price;} |
| 105 | if (url != this.data.baseUrl) return this.requestSearch(url); | 110 | if (url != this.data.baseUrl) return this.requestSearch(url); |
| 106 | this.openSearchModal(); | 111 | this.openSearchModal(); |
| 112 | + | ||
| 113 | + // 获取历史搜索记录 | ||
| 114 | + this.getHistorySearch(); | ||
| 107 | }, | 115 | }, |
| 108 | changeTab: function(t) { | 116 | changeTab: function(t) { |
| 109 | var ord = t.currentTarget.dataset.href; | 117 | var ord = t.currentTarget.dataset.href; |
| @@ -176,18 +184,23 @@ Page({ | @@ -176,18 +184,23 @@ Page({ | ||
| 176 | }); | 184 | }); |
| 177 | }, | 185 | }, |
| 178 | submitSearch: function(t) { | 186 | submitSearch: function(t) { |
| 187 | + console.log(111); | ||
| 179 | this.search(t.detail.value.word); | 188 | this.search(t.detail.value.word); |
| 189 | + | ||
| 190 | + | ||
| 180 | }, | 191 | }, |
| 181 | 192 | ||
| 182 | //热搜关键字 | 193 | //热搜关键字 |
| 183 | searchHotWord: function(t) { | 194 | searchHotWord: function(t) { |
| 184 | - this.search(t.currentTarget.dataset.word); | 195 | + this.historyRecord(); |
| 196 | + this.search(t.currentTarget.dataset.word); | ||
| 185 | }, | 197 | }, |
| 186 | 198 | ||
| 187 | //-----点击搜索按钮---- | 199 | //-----点击搜索按钮---- |
| 188 | search: function(t) { | 200 | search: function(t) { |
| 189 | if ("string" != typeof t || "" == t) return a.showWarning("请输入搜索关键词"); | 201 | if ("string" != typeof t || "" == t) return a.showWarning("请输入搜索关键词"); |
| 190 | this.data.key_str=t; | 202 | this.data.key_str=t; |
| 203 | + this.historyRecord(); | ||
| 191 | this.resetData(), this.requestSearch(this.data.baseUrl + "&key_str=" + encodeURIComponent(t)); | 204 | this.resetData(), this.requestSearch(this.data.baseUrl + "&key_str=" + encodeURIComponent(t)); |
| 192 | }, | 205 | }, |
| 193 | 206 | ||
| @@ -253,4 +266,56 @@ Page({ | @@ -253,4 +266,56 @@ Page({ | ||
| 253 | func(ob); | 266 | func(ob); |
| 254 | }) | 267 | }) |
| 255 | }, | 268 | }, |
| 269 | + | ||
| 270 | + | ||
| 271 | + getInput(e) { | ||
| 272 | + this.setData({ | ||
| 273 | + keyword: e.detail.value | ||
| 274 | + }); | ||
| 275 | + }, | ||
| 276 | + | ||
| 277 | + historyRecord() { | ||
| 278 | + let self = this; | ||
| 279 | + let keyword = this.data.key_str; | ||
| 280 | + let searchRecord = this.data.searchRecord; | ||
| 281 | + | ||
| 282 | + if(keyword) { | ||
| 283 | + if(searchRecord.indexOf(keyword) > -1) { | ||
| 284 | + // 已经存在该值 | ||
| 285 | + return; | ||
| 286 | + } else { | ||
| 287 | + if(searchRecord.length >= 10) { | ||
| 288 | + searchRecord.pop(); // 删除最早的一条记录 | ||
| 289 | + }; | ||
| 290 | + searchRecord.unshift(keyword); | ||
| 291 | + | ||
| 292 | + // // 将历史记录添加到缓存中 | ||
| 293 | + wx.setStorage({ | ||
| 294 | + key: 'searchRecord', | ||
| 295 | + data: searchRecord, | ||
| 296 | + success: function(res) { | ||
| 297 | + self.setData({ | ||
| 298 | + searchRecord, | ||
| 299 | + }) | ||
| 300 | + } | ||
| 301 | + }) | ||
| 302 | + }; | ||
| 303 | + }; | ||
| 304 | + }, | ||
| 305 | + | ||
| 306 | + | ||
| 307 | + | ||
| 308 | + | ||
| 309 | + getHistorySearch() { | ||
| 310 | + this.setData({ | ||
| 311 | + searchRecord: wx.getStorageSync('searchRecord') || [] //若无存储则为空 | ||
| 312 | + }); | ||
| 313 | + }, | ||
| 314 | + | ||
| 315 | + clearSearchRecord() { | ||
| 316 | + wx.clearStorageSync('searchRecord'); | ||
| 317 | + this.setData({ | ||
| 318 | + searchRecord: [] | ||
| 319 | + }); | ||
| 320 | + }, | ||
| 256 | }); | 321 | }); |
| 257 | \ No newline at end of file | 322 | \ No newline at end of file |
pages/goods/search/search.wxml
| @@ -162,7 +162,7 @@ | @@ -162,7 +162,7 @@ | ||
| 162 | <view class="search-modal"> | 162 | <view class="search-modal"> |
| 163 | <view class="search-bar"> | 163 | <view class="search-bar"> |
| 164 | <form bindsubmit="submitSearch"> | 164 | <form bindsubmit="submitSearch"> |
| 165 | - <input autoFocus class="search-input" name="word" placeholder="搜索商品"></input> | 165 | + <input autoFocus class="search-input" name="word" placeholder="搜索商品" bindinput="getInput"></input> |
| 166 | <button class="search-btn" formType="submit"> | 166 | <button class="search-btn" formType="submit"> |
| 167 | <image class="wh100 search-img" src="{{url}}/miniapp/images/sea.png"></image> | 167 | <image class="wh100 search-img" src="{{url}}/miniapp/images/sea.png"></image> |
| 168 | </button> | 168 | </button> |
| @@ -176,5 +176,17 @@ | @@ -176,5 +176,17 @@ | ||
| 176 | </view> | 176 | </view> |
| 177 | </block> | 177 | </block> |
| 178 | </view> | 178 | </view> |
| 179 | + <view class="search-hot"> | ||
| 180 | + <view class="hot-title flex jc_sb ai_c"> | ||
| 181 | + <text>历史搜索</text> | ||
| 182 | + <text class="iconfont icon-shanchu xc-ash" bindtap="clearSearchRecord" wx:if="{{searchRecord.length != 0}}"></text> | ||
| 183 | + </view> | ||
| 184 | + <block wx:if="{{searchRecord.length>0}}"> | ||
| 185 | + <view class="hot-row flex flex-wrap" wx:key="{{index}}"> | ||
| 186 | + <view class="hot-item history ellipsis-1" bindtap="searchHotWord" data-word="{{item}}" wx:for="{{searchRecord}}" wx:key="{{index}}">{{item}}</view> | ||
| 187 | + </view> | ||
| 188 | + </block> | ||
| 189 | + <view wx:else class="fs24">暂无历史搜索记录</view> | ||
| 190 | + </view> | ||
| 179 | </view> | 191 | </view> |
| 180 | </view> | 192 | </view> |
| 181 | \ No newline at end of file | 193 | \ No newline at end of file |
pages/goods/search/search.wxss
| @@ -298,3 +298,14 @@ | @@ -298,3 +298,14 @@ | ||
| 298 | /* line-height: 38rpx; */ | 298 | /* line-height: 38rpx; */ |
| 299 | flex-grow: 1; | 299 | flex-grow: 1; |
| 300 | } | 300 | } |
| 301 | + | ||
| 302 | +.history { | ||
| 303 | + background-color: #f0f0f0; | ||
| 304 | + color: #7b7b7b; | ||
| 305 | + border: none; | ||
| 306 | + margin-bottom: 8rpx; | ||
| 307 | +} | ||
| 308 | + | ||
| 309 | +.history:first-of-type { | ||
| 310 | + margin-left: 0; | ||
| 311 | +} |