Commit a4e94ec2eab8789455c120a87d6b7dc831918d40

Authored by 后端研发-苏泰源
1 parent 912c8c00

搜索框优化

pages/goods/search/search.js
1   -var t = function (t) {
  1 +var t = function(t) {
2 2 return t && t.__esModule ? t : {
3 3 default: t
4 4 };
5 5 }(require("../../../utils/LoadMore.js")), ut = require("../../../utils/util.js"),
6   - a = getApp(), e = new t.default(), rq = a.request, oo = a.globalData.setting;
  6 + a = getApp(), e = new t.default(), rq = a.request, oo = a.globalData.setting;
7 7  
8 8 Page({
9 9 data: {
... ... @@ -18,157 +18,147 @@ Page({
18 18 requestUrl: "",
19 19 //hotWords: [ [ "手机", "小米", "iphone" ], [ "三星", "华为", "冰箱" ] ]
20 20 hotWords: null,
21   - is_no_plus:1,
  21 +
22 22 tabname: "sort", //排序的字段
23 23 adname: "asc", //升降的字段
24   - rq_data: null,
25   - searchRecord: [],
26   - keyword: '',
27   - is_his: 0,
  24 + rq_data:null,
  25 +
  26 +
  27 + searchRecord: [],
  28 + keyword: '',
  29 + is_his:0,
  30 +
  31 + hiddenClear: true,
28 32 },
29   -
30   - onLoad: function (t) {
31   - this.data.rq_data = t;
  33 +
  34 + onLoad: function(t) {
  35 + this.data.rq_data=t;
32 36 //接受有没有导购的参数
33   - var first_leader = t.first_leader;
34   - if (first_leader) {
35   - getApp().globalData.first_leader = first_leader;
  37 + var first_leader=t.first_leader;
  38 + if(first_leader){
  39 + getApp().globalData.first_leader=first_leader;
36 40 //调用接口判断是不是会员
37   - getApp().request.promiseGet("/api/weshop/shoppingGuide/get/" + oo.stoid + "/" + first_leader, {}).then(res => {
38   - if (res.data.code == 0) {
39   - getApp().globalData.guide_id = res.data.data.id;
  41 + getApp().request.promiseGet("/api/weshop/shoppingGuide/get/"+oo.stoid+"/"+first_leader,{}).then(res=>{
  42 + if(res.data.code==0){
  43 + getApp().globalData.guide_id=res.data.data.id;
40 44 }
41 45 })
42 46 }
43   - var th = this;
44   - //调用接口判断商家plus有没有过期
45   - rq.promiseGet("/store/storemoduleendtime/page?store_id=" + oo.stoid + "&type=3", {}).then(res => {
46   - if (res.data.code == 0) {
47   - var arr = res.data.data.pageData;
48   - if (arr.length > 0) {
49   - var item = arr[0];
50   - if (item.is_sy == 0) {
51   - var now = Date.parse(new Date()); now = now / 1000;
52   - if (item.end_time < now) {
53   - th.setData({ is_no_plus: 0 })
54   - }
55   - }
56   - }
57   - }
58   - })
59   - a.getConfig2(function (rs) {
60   - console.log('getConfig2', rs);
61   - var arr = new Array(), arr2 = new Array();
62   - if (rs.hot_keywords != null && ut.trim(rs.hot_keywords) != "") {
63   - var arr1 = rs.hot_keywords.split('|');
64   - for (var i = 0; i < arr1.length; i++) {
65   - if (i % 5 == 0 && i != 0) {
66   - arr.push(arr2);
67   - arr2 = [];
68   - } else {
69   - arr2.push(arr1[i]);
70   - }
71   - }
72   - if (arr2.length > 0) arr.push(arr2);
73   - th.setData({ hotWords: arr });
74   - }
75   -
76   -
77   - //计算等级价相关
78   - var swithc_list = rs.switch_list;
79   - var sw_arr = JSON.parse(swithc_list);
80   - console.log('sw_arr', sw_arr);
81   - //---如果后台又开等级卡的开关---
82   - if (sw_arr.rank_switch && sw_arr.rank_switch == "2") {
83   - th.setData({ rank_switch: true });
84   - var user = getApp().globalData.userInfo;
85   - var ti = setInterval(function () {
86   - if (!user) return false;
87   - clearInterval(ti);
88   - //---回调卡的列表---
89   - th.getPlusCardType(function (ob) {
90   - th.setData({ card_list: ob.card_list });
91   - if (user.card_field) {
92   - var str = user['card_expiredate'].replace(/-/g, '/');
93   - var end = new Date(str);
94   - end = Date.parse(end) / 1000;
95   - var now = ut.gettimestamp();
96 47  
97   - //--- 判断是等级会员,且在有效期范围内 ---
98   - if (user.card_field && now < end) {
99   - var card_name = ob.name_map.get(user.card_field);
100   - if (card_name.length > 7) card_name = card_name.substring(0, 8);
101   - th.setData({ card_field: user.card_field, card_name: card_name, card_list: ob.card_list });
102   - }
103   - }
104   - })
105   - }, 500)
  48 + var th=this;
  49 + a.getConfig2(function(rs) {
  50 + var arr=new Array(),arr2=new Array();
  51 + if (rs.hot_keywords != null && ut.trim(rs.hot_keywords)!="" ){
  52 + var arr1 = rs.hot_keywords.split('|');
  53 + for (var i = 0; i < arr1.length;i++){
  54 + if(i%5==0 && i!=0){
  55 + arr.push(arr2);
  56 + arr2=[];
  57 + }else{
  58 + arr2.push(arr1[i]);
  59 + }
106 60 }
107   -
108   -
109   -
  61 + if (arr2.length > 0) arr.push(arr2);
  62 + th.setData({ hotWords: arr});
  63 + }
  64 +
  65 +
  66 + //计算等级价相关
  67 + var swithc_list=rs.switch_list;
  68 + var sw_arr=JSON.parse(swithc_list);
  69 + //---如果后台又开等级卡的开关---
  70 + if(sw_arr.rank_switch && sw_arr.rank_switch=="2"){
  71 + th.setData({rank_switch:true});
  72 + var user=getApp().globalData.userInfo;
  73 + var ti=setInterval(function(){
  74 + if(!user) return false;
  75 + clearInterval(ti);
  76 + //---回调卡的列表---
  77 + th.getPlusCardType(function(ob){
  78 + th.setData({card_list:ob.card_list});
  79 + if(user.card_field ){
  80 + var str = user['card_expiredate'].replace(/-/g, '/');
  81 + var end = new Date(str);
  82 + end = Date.parse(end) / 1000;
  83 + var now = ut.gettimestamp();
  84 +
  85 + //--- 判断是等级会员,且在有效期范围内 ---
  86 + if(user.card_field && now<end){
  87 + var card_name=ob.name_map.get(user.card_field);
  88 + if(card_name.length>7) card_name=card_name.substring(0,8);
  89 + th.setData({card_field:user.card_field,card_name:card_name,card_list:ob.card_list});
  90 + }
  91 + }
  92 + })
  93 + },500)
  94 + }
  95 +
  96 +
  97 +
  98 + })
  99 + //e.init(this, "", "requestData");
  100 + var url = this.data.baseUrl;
  101 +
  102 + //扫一扫过来,显示搜索的内容
  103 + var s_key = t.s_key;
  104 + if (s_key){
  105 + s_key=s_key.trim();
  106 + this.search(s_key); this.openSearchModal();
  107 + return;
  108 + }
  109 +
  110 + if (0 != t.brand_id && t.brand_id!=undefined){ url += "&brand_id=" + t.brand_id;}
  111 + if (0 != t.nation_id && t.nation_id!=undefined) { url += "&nation_id=" + t.nation_id;}
  112 + if (0 != t.max_price && t.max_price!=undefined) { url += "&min_pirce=" + t.min_pirce + "&max_price=" + t.max_price;}
  113 + if (0 != t.ladder_id && t.ladder_id != undefined) {
  114 + url += "&ladder_id=" + t.ladder_id;
  115 + this.setData({
  116 + baseUrl:url,
110 117 })
111   - //e.init(this, "", "requestData");
112   - var url = this.data.baseUrl;
113   -
114   - //扫一扫过来,显示搜索的内容
115   - var s_key = t.s_key;
116   - if (s_key) {
117   - s_key = s_key.trim();
118   - this.search(s_key); this.openSearchModal();
119   - return;
120   - }
121   -
122   - if (0 != t.brand_id && t.brand_id != undefined) { url += "&brand_id=" + t.brand_id; }
123   - if (0 != t.nation_id && t.nation_id != undefined) { url += "&nation_id=" + t.nation_id; }
124   - if (0 != t.max_price && t.max_price != undefined) { url += "&min_pirce=" + t.min_pirce + "&max_price=" + t.max_price; }
125   - if (0 != t.ladder_id && t.ladder_id != undefined) {
126   - url += "&ladder_id=" + t.ladder_id;
127   - this.setData({
128   - baseUrl: url,
129   -
130   - })
131   - }
132   - if (url != this.data.baseUrl) return this.requestSearch(url);
133   - this.openSearchModal();
  118 + }
  119 + if (url != this.data.baseUrl) return this.requestSearch(url);
  120 + this.openSearchModal();
134 121 // 获取历史搜索记录
135   - this.getHistorySearch();
  122 + this.getHistorySearch();
136 123 },
137   - changeTab: function (t) {
138   - var ord = t.currentTarget.dataset.href;
139   - var ad = t.currentTarget.dataset.ad;
140   -
141   - var url = this.data.requestUrl;
142   -
143   - if (this.data.tabname != ord) {
144   - this.setData({ tabname: ord, adname: "desc" });
145   - } else {
146   - ad = ad == "desc" ? "asc" : "desc";
147   - this.setData({ adname: ad });
148   - }
149   - this.resetData(), this.requestSearch(url);
  124 +
  125 +
  126 + changeTab: function(t) {
  127 + var ord = t.currentTarget.dataset.href;
  128 + var ad = t.currentTarget.dataset.ad;
  129 +
  130 + var url = this.data.requestUrl;
  131 +
  132 + if (this.data.tabname != ord) {
  133 + this.setData({ tabname: ord, adname: "desc" });
  134 + } else {
  135 + ad = ad == "desc" ? "asc" : "desc";
  136 + this.setData({ adname: ad });
  137 + }
  138 + this.resetData(), this.requestSearch(url);
150 139  
151 140 },
152 141  
153 142 //-----------真的调用地址进行搜索------------
154   - requestSearch: function (t) {
155   - if (this.data.loading) return false;
156   - this.data.loading = 1;
157   - var e = this, th = e;
158   - if (getApp().globalData.userInfo) {
159   - t += "&user_id=" + getApp().globalData.userInfo.user_id;
160   - }
  143 + requestSearch: function(t) {
  144 + console.log('t===>', t);
  145 + if(this.data.loading) return false;
  146 + this.data.loading=1;
  147 + var e = this,th=e;
  148 + if(getApp().globalData.userInfo) {
  149 + t += "&user_id=" + getApp().globalData.userInfo.user_id;
  150 + }
161 151 this.data.requestUrl = t;
162 152  
163   - var user_id = getApp().globalData.user_id;
164   - if (!user_id) user_id = 0;
  153 + var user_id=getApp().globalData.user_id;
  154 + if(!user_id) user_id=0;
165 155  
166   - getApp().request.promiseGet(t, { data: { is_mainshow: 1, isonsale: 1, store_id: oo.stoid, orderField: e.data.tabname, orderType: e.data.adname, page: e.data.currentPage } }).then(async res => {
167   - th.data.loading = 0;
168   - if (ut.ajax_ok(res)) {
169   - if (!e.data.requestData) e.data.requestData = [];
170   - for (let i in res.data.data.pageData) {
171   - let item = res.data.data.pageData[i];
  156 + getApp().request.promiseGet(t, {data:{is_mainshow: 1, isonsale: 1, store_id: oo.stoid,orderField: e.data.tabname, orderType: e.data.adname, page: e.data.currentPage}}).then(async res=>{
  157 + th.data.loading=0;
  158 + if(ut.ajax_ok(res)){
  159 + if(!e.data.requestData) e.data.requestData=[];
  160 + for(let i in res.data.data.pageData){
  161 + let item=res.data.data.pageData[i];
172 162 item.original_img = th.data.url + item.original_img;
173 163  
174 164 /*--
... ... @@ -185,48 +175,48 @@ Page({
185 175 })--*/
186 176  
187 177 var prom_type = item.prom_type; //0普通商品 1秒杀 6拼单 2团购 4积分购
188   - var prom_id = item.prom_id;
189   - var now = ut.gettimestamp();
  178 + var prom_id=item.prom_id;
  179 + var now=ut.gettimestamp();
190 180 var url = "";
191   - switch (prom_type) {
  181 + switch (prom_type){
192 182 case 1:
193   - url = "/api/ms/flash_sale/getNew/" + oo.stoid + "/" + user_id + "/" + prom_id;
  183 + url = "/api/ms/flash_sale/getNew/" +oo.stoid + "/" +user_id+"/"+ prom_id;
194 184 break;
195 185 case 2:
196   - url = "/api/weshop/goods/groupBuy/getActInfo/" + oo.stoid + "/" + item.goods_id + "/" + prom_id
  186 + url ="/api/weshop/goods/groupBuy/getActInfo/" +oo.stoid + "/" +item.goods_id+"/"+ prom_id
197 187 break;
198 188 case 4:
199   - url = "/api/weshop/integralbuy/get/" + oo.stoid + "/" + prom_id;
  189 + url ="/api/weshop/integralbuy/get/"+oo.stoid +"/"+prom_id;
200 190 break;
201 191 case 6:
202 192 url = "/api/weshop/teamlist/get/" + oo.stoid + "/" + prom_id;
203   - await getApp().request.promiseGet("/api/weshop/teamlist/pageteam/1", {
204   - data: {
205   - store_id: oo.stoid,
206   - is_end: 0,
207   - is_show: 1,
208   - user_id: getApp().globalData.user_id,
209   - pageSize: 1000,
  193 + await getApp().request.promiseGet("/api/weshop/teamlist/pageteam/1",{
  194 + data:{
  195 + store_id: oo.stoid,
  196 + is_end: 0,
  197 + is_show: 1,
  198 + user_id: getApp().globalData.user_id,
  199 + pageSize:1000,
210 200 }
211   - }).then(pd => {
212   - let pd_list = pd.data.data.pageData;
213   - if (res.data.code == 0 && pd_list.length > 0) {
214   - var flag = pd_list.some(pd => {
215   - return pd.goods_id == item.goods_id
216   - })
217   -
218   - if (!flag) {
219   - item.prom_type = 0;
220   - item.prom_id = 0;
221   - item.prom_price = null;
222   - }
  201 + }).then(pd=>{
  202 + let pd_list=pd.data.data.pageData;
  203 + if(res.data.code==0 && pd_list.length>0){
  204 + var flag = pd_list.some(pd=>{
  205 + return pd.goods_id==item.goods_id
  206 + })
  207 +
  208 + if(!flag){
  209 + item.prom_type=0;
  210 + item.prom_id=0;
  211 + item.prom_price=null;
  212 + }
223 213 }
224   - })
  214 + })
225 215 break;
226 216 case 8:
227 217 var presell_id = prom_id;
228 218 var url1 = "/api/weshop/marketing/marketingPresellList/list";
229   - var rd = {
  219 + var rd= {
230 220 store_id: oo.stoid,
231 221 presell_id: presell_id,
232 222 goods_id: item.goods_id
... ... @@ -238,247 +228,269 @@ Page({
238 228 if (res.data.code == 0 && res.data.data && res.data.data.length > 0) {
239 229 var arr = res.data.data[0];
240 230 item.prom_price = arr.luck_goods_price;
241   - item.sales_sum = arr.buy_goodnum + (arr.virtual_qty ? arr.virtual_qty : 0);
  231 + item.sales_sum=arr.buy_goodnum+(arr.virtual_qty?arr.virtual_qty:0);
242 232 }
243 233 })
244 234 break;
245 235 default:
246   - break
247   - }
248   - if (url != null && url != '') {
  236 + break;
  237 + };
  238 + if(url!=null && url!=''){
249 239 await getApp().request.promiseGet(url, {}).then(async res => {
250   - var prom = null;
251   - if (res.data.code == 0 && res.data.data) {
252   - prom = res.data.data;
  240 + var prom =null;
  241 + if(res.data.code==0 && res.data.data){
  242 + prom=res.data.data;
253 243  
254   - if (prom != null && prom.is_end == 0 && prom.end_time > now && (prom.start_time < now || (prom.show_time && prom.show_time < now))) {
  244 + if (prom != null && prom.is_end==0 && prom.end_time>now && (prom.start_time<now || (prom.show_time && prom.show_time<now)) ) {
255 245 item.prom_price = res.data.data.price;
256   - if (res.data.data.user_price) item.prom_price = res.data.data.user_price;
257   - var vNum = prom.virtual_num ? prom.virtual_num : 0;
258   - var vNum1 = prom.virtualNum ? prom.virtualNum : 0;
259   - var vNum2 = prom.virtual ? prom.virtual : 0;
260   - item.sales_sum = prom.buy_num + (vNum + vNum1 + vNum2);
261   - } else {
262   - item.prom_type = 0;
263   - item.prom_id = 0;
264   - item.prom_price = null;
  246 + if(res.data.data.user_price) item.prom_price=res.data.data.user_price;
  247 + var vNum=prom.virtual_num?prom.virtual_num:0;
  248 + var vNum1=prom.virtualNum?prom.virtualNum:0;
  249 + var vNum2=prom.virtual?prom.virtual:0;
  250 + item.sales_sum=prom.buy_num+(vNum+vNum1+vNum2);
  251 + }else{
  252 + item.prom_type=0;
  253 + item.prom_id=0;
  254 + item.prom_price=null;
265 255 }
266   -
267   -
268 256 }
269 257 })
270   - }
271   - if (!th.data.requestData) th.data.requestData = [];
  258 + };
  259 + if(!th.data.requestData) th.data.requestData=[];
272 260 th.data.requestData.push(item);
273   - e.setData({ requestData: e.data.requestData });
  261 + e.setData({requestData: e.data.requestData});
274 262 }
275 263 }
276 264 e.closeSearchModal();
277 265 })
278 266 },
279   - onReachBottom: function () {
  267 + onReachBottom: function() {
  268 + console.log('触发上滑加载事件');
280 269 this.data.currentPage++
  270 + console.log('触发上滑加载事件currentPage',this.data.currentPage);
281 271 this.data.openSearchModal || e.canloadMore() && this.requestSearch(this.data.requestUrl);
282 272 },
283   - openFilterModal: function () {
  273 +
  274 +
  275 + openFilterModal: function() {
284 276 this.setData({
285 277 openFilterModal: !0
286 278 });
287 279 },
288   - closeFilterModal: function () {
  280 + closeFilterModal: function() {
289 281 this.setData({
290 282 openFilterModal: !1
291 283 });
292 284 },
293   - filterGoods: function (t) {
  285 + filterGoods: function(t) {
294 286 this.resetData(), this.requestSearch(t.currentTarget.dataset.href), this.closeFilterModal();
295 287 },
296   - resetData: function () {
  288 +
  289 +
  290 +
  291 + resetData: function() {
297 292 e.resetConfig(), this.data.requestData = null, this.data.currentPage = 1;
298 293 },
299 294  
300 295 //---回复最初的设置---显示全部分类--
301   - restoreData: function () {
  296 + restoreData: function() {
302 297 this.setData({
303 298 requestData: this.data.allData,
304 299 });
305   - this.data.currentPage = 2;
  300 + this.data.currentPage=2;
306 301 },
307   - openSearchModal: function () {
  302 + openSearchModal: function() {
308 303 this.setData({
309 304 openSearchModal: !0
310 305 });
311 306 },
312   - closeSearchModal: function () {
  307 + closeSearchModal: function() {
313 308 this.setData({
314 309 openSearchModal: !1
315 310 });
316 311 },
317   - submitSearch: function (t) {
318   - console.log(111, t);
319   - var val = t.detail.value.word;
320   - if (val == undefined) val = t.detail.value;
321   - val = val ? val.trim() : '';
322   - if (!val) {
323   - a.showWarning("请输入搜索关键词");
324   - }
325   - this.search(val);
326   -
  312 +
  313 + submitSearch: function(t) {
  314 + var val=t.detail.value.word;
  315 + if(val==undefined) val=t.detail.value;
  316 + val=val?val.trim():'';
  317 + if(!val){
  318 + a.showWarning("请输入搜索关键词");
  319 + }
  320 + this.search(val);
327 321 },
328 322  
329 323 //热搜关键字
330   - searchHotWord: function (t) {
331   -
332   - var word = t.currentTarget.dataset.word;
333   - this.historyRecord(word);
334   - this.search(word);
  324 + searchHotWord: function(t) {
  325 + var word = t.currentTarget.dataset.word;
  326 + this.historyRecord(word);
  327 + this.search(word);
335 328 },
336 329  
337 330 //-----点击搜索按钮----
338   - search: function (t) {
  331 + search: function(t) {
339 332 if ("string" != typeof t || "" == t) return a.showWarning("请输入搜索关键词");
340   - this.data.key_str = t;
341   - this.historyRecord();
342   - this.resetData(), this.requestSearch(this.data.baseUrl + "&key_str=" + encodeURIComponent(t));
  333 + this.data.key_str=t;
  334 + this.resetData();
  335 + this.requestSearch(this.data.baseUrl + "&key_str=" + encodeURIComponent(t));
  336 + this.historyRecord();
343 337 },
344 338  
345 339 //---------分享配置--------
346 340 onShareAppMessage: function (e) {
347   - var curPage = this;
  341 + var curPage=this;
348 342 var pagePath = curPage.route; //当前页面url
349 343 if (pagePath.indexOf('/') != 0) {
350 344 pagePath = '/' + pagePath;
351 345 }
352 346  
353   - if (this.data.key_str) {
  347 + if(this.data.key_str) {
354 348 pagePath += "?s_key=" + this.data.key_str;
355 349 }
356 350  
357   - if (getApp().globalData.user_id) {
  351 + if(getApp().globalData.user_id){
358 352  
359   - if (pagePath.indexOf("?") > 0) {
360   - pagePath += "&first_leader=" + getApp().globalData.user_id;
361   - } else {
362   - pagePath += "?first_leader=" + getApp().globalData.user_id;
  353 + if(pagePath.indexOf("?")>0){
  354 + pagePath+="&first_leader="+getApp().globalData.user_id;
  355 + }else{
  356 + pagePath+="?first_leader="+getApp().globalData.user_id;
363 357 }
364 358 }
365 359  
366   - console.log("11-11" + pagePath);
  360 + // console.log("11-11"+pagePath);
367 361 return {
368 362 title: "商品搜索",
369   - path: pagePath,
  363 + path:pagePath,
370 364 }
371 365 },
372 366  
373 367  
374 368 //---------图片失败,默认图片--------
375 369 bind_bnerr: function (e) {
376   - var _errImg = e.target.dataset.errorimg;
377   - var _errObj = {};
378   - _errObj[_errImg] = this.data.url + "/miniapp/images/default_g_img.gif";
379   - this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ;
  370 + var _errImg = e.target.dataset.errorimg;
  371 + var _errObj = {};
  372 + _errObj[_errImg] = this.data.url+ "/miniapp/images/default_g_img.gif";
  373 + this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ;
380 374 },
381   -
382   - //--- 获取卡类列表 ---
383   - getPlusCardType: function (func) {
384   - var storid = oo.stoid;
385   - var th = this;
386   - getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?" + "storeId=" + storid, {}).then(res => {
387   - var plusCard = res.data.data;
388   - var arr = [1219, 2089, 3031];
389   - var new_arr = new Array();
390   - var card_name_map = new Map();
391   - var user = getApp().globalData.userInfo;
392   -
393   - for (var i = 0; i < plusCard.length; i++) {
394   - if ((!user || user.card_field == null || user.card_field == "") && (plusCard[i].IsStopBuy == true)) {
395   - continue;
396   - }
397   - var name = "card" + plusCard[i].CorrPrice.toLowerCase();
398   - card_name_map.set(name, plusCard[i].CardName);
399   - new_arr.push(plusCard[i]);
400   -
401   - }
402   -
403   - var ob = { "card_list": new_arr, "name_map": card_name_map };
404   - func(ob);
405   - })
406   - },
407   -
408   -
409   - getInput(e) {
410   - this.setData({
411   - keyword: e.detail.value
412   - });
413   - },
414   -
415   - historyRecord(w) {
416   - let keyword = w;
417   - let self = this;
418   - if (!keyword) {
419   - keyword = this.data.key_str.trim();
420   - }
421   - let searchRecord = this.data.searchRecord;
422   - if (!searchRecord || searchRecord.length == 0) searchRecord = wx.getStorageSync('searchRecord') || [];
423   -
424   - if (keyword) {
425   -
426   - var index = searchRecord.indexOf(keyword);
427   - if (index > -1) {
428   - // 已经存在该值
429   - searchRecord.splice(index, 1);
430   - searchRecord.unshift(keyword);
431   -
432   - // 将历史记录添加到缓存中
433   - wx.setStorage({
434   - key: 'searchRecord',
435   - data: searchRecord,
436   - success: function (res) {
437   - self.setData({
438   - searchRecord,
439   - })
440   - }
441   - })
442   -
443   - return;
444   - } else {
445   - if (searchRecord.length >= 10) {
446   - searchRecord.pop(); // 删除最早的一条记录
447   - };
448   - searchRecord.unshift(keyword);
449   -
450   - // // 将历史记录添加到缓存中
451   - wx.setStorage({
452   - key: 'searchRecord',
453   - data: searchRecord,
454   - success: function (res) {
455   - self.setData({
456   - searchRecord,
457   - })
458   - }
459   - })
460   - };
461   - };
462   - },
463   -
464   -
465   -
466   -
467   - getHistorySearch() {
468   - this.setData({
469   - searchRecord: wx.getStorageSync('searchRecord') || [] //若无存储则为空
470   - });
471   - },
472   -
473   - clearSearchRecord() {
474   - wx.clearStorageSync('searchRecord');
475   - this.setData({
476   - searchRecord: []
477   - });
478   - },
479   -
480   - go_url: function (e) {
481   - var url = e.currentTarget.dataset.url;
  375 +
  376 + //--- 获取卡类列表 ---
  377 + getPlusCardType: function (func) {
  378 + var storid = oo.stoid;
  379 + var th = this;
  380 + getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?" + "storeId=" + storid, {}).then(res => {
  381 + var plusCard = res.data.data;
  382 + var arr = [1219, 2089, 3031];
  383 + var new_arr = new Array();
  384 + var card_name_map=new Map();
  385 + var user = getApp().globalData.userInfo;
  386 +
  387 + for (var i = 0; i < plusCard.length; i++) {
  388 + if ((!user || user.card_field==null || user.card_field=="") && (plusCard[i].IsStopBuy==true)) {
  389 + continue;
  390 + }
  391 + var name="card"+plusCard[i].CorrPrice.toLowerCase();
  392 + card_name_map.set(name,plusCard[i].CardName);
  393 + new_arr.push(plusCard[i]);
  394 +
  395 + }
  396 +
  397 + var ob={"card_list":new_arr,"name_map":card_name_map};
  398 + func(ob);
  399 + })
  400 + },
  401 +
  402 +
  403 + getInput(e) {
  404 + let val = e.detail.value;
  405 + if(val) {
  406 + this.setData({
  407 + keyword: e.detail.value,
  408 + hiddenClear: false,
  409 + });
  410 + } else {
  411 + this.setData({
  412 + hiddenClear: true,
  413 + });
  414 + }
  415 +
  416 + },
  417 +
  418 + historyRecord(w) {
  419 + let keyword =w;
  420 + let self = this;
  421 + if(!keyword){
  422 + keyword = this.data.key_str.trim();
  423 + }
  424 + let searchRecord = this.data.searchRecord;
  425 + if(!searchRecord || searchRecord.length==0) searchRecord=wx.getStorageSync('searchRecord') || [];
  426 +
  427 + if(keyword) {
  428 +
  429 + var index=searchRecord.indexOf(keyword);
  430 + if(index > -1) {
  431 + // 已经存在该值
  432 + searchRecord.splice(index,1);
  433 + searchRecord.unshift(keyword);
  434 +
  435 + // 将历史记录添加到缓存中
  436 + wx.setStorage({
  437 + key: 'searchRecord',
  438 + data: searchRecord,
  439 + success: function(res) {
  440 + self.setData({
  441 + searchRecord,
  442 + })
  443 + }
  444 + })
  445 +
  446 + return;
  447 + } else {
  448 + if(searchRecord.length >= 10) {
  449 + searchRecord.pop(); // 删除最早的一条记录
  450 + };
  451 + searchRecord.unshift(keyword);
  452 +
  453 + // // 将历史记录添加到缓存中
  454 + wx.setStorage({
  455 + key: 'searchRecord',
  456 + data: searchRecord,
  457 + success: function(res) {
  458 + self.setData({
  459 + searchRecord,
  460 + })
  461 + }
  462 + })
  463 + };
  464 + };
  465 + },
  466 +
  467 +
  468 +
  469 + // 获取历史搜索记录
  470 + getHistorySearch() {
  471 + this.setData({
  472 + searchRecord: wx.getStorageSync('searchRecord') || [] //若无存储则为空
  473 + });
  474 + },
  475 +
  476 + // 清除历史搜素记录
  477 + clearSearchRecord() {
  478 + wx.clearStorageSync('searchRecord');
  479 + this.setData({
  480 + searchRecord: []
  481 + });
  482 + },
  483 +
  484 + go_url:function (e) {
  485 + var url=e.currentTarget.dataset.url;
482 486 getApp().goto(url);
483   - }
  487 + },
  488 +
  489 + clearInput() {
  490 + this.setData({
  491 + keyword: '',
  492 + hiddenClear: true,
  493 + openSearchModal: true,
  494 + });
  495 + }
484 496 });
485 497 \ No newline at end of file
... ...
pages/goods/search/search.wxml
1 1 <wxs module="g_filter" src="g_filter.wxs"></wxs>
  2 +
2 3 <view class="container">
3   - <view class="nav">
4   - <navigator bindtap="changeTab" class="nav-item" data-href="sort" data-ad="{{adname}}">综合
5   - <view class="ico-dg" wx:if="{{tabname=='sort'}}">
6   - <image class="wh100" src="{{url}}/miniapp/images/dg.png" wx:if="{{adname=='desc'}}"></image>
7   - <image class="wh100" src="{{url}}/miniapp/images/up_s.png" wx:if="{{adname=='asc'}}"></image>
8   - </view>
9   - </navigator>
10   - <navigator bindtap="changeTab" class="nav-item" data-href="sales_sum" data-ad="{{adname}}">销量
11   - <view class="ico-dg" wx:if="{{tabname=='sales_sum'}}">
12   - <image class="wh100" src="{{url}}/miniapp/images/dg.png" wx:if="{{adname=='desc'}}"></image>
13   - <image class="wh100" src="{{url}}/miniapp/images/up_s.png" wx:if="{{adname=='asc'}}"></image>
14   - </view>
15   - </navigator>
16   - <navigator bindtap="changeTab" class="nav-item" data-href="final_price" data-ad="{{adname}}">价格
17   - <view class="ico-dg" wx:if="{{tabname=='final_price'}}">
18   - <image class="wh100" src="{{url}}/miniapp/images/dg.png" wx:if="{{adname=='desc'}}"></image>
19   - <image class="wh100" src="{{url}}/miniapp/images/up_s.png" wx:if="{{adname=='asc'}}"></image>
20   - </view>
21   - </navigator>
22   - <!-- <navigator bindtap="openFilterModal" class="nav-item">筛选<view class="ico-filter">
23   - <image class="wh100" src="{{url}}/miniapp/images/xx.png"></image>
24   - </view>
25   - </navigator> -->
26   - <navigator bindtap="openSearchModal" class="nav-item nav-search">
27   - <image class="wh100 search-img" src="{{url}}/miniapp/images/search.png"></image>
28   - </navigator>
29   - </view>
  4 + <!-- 搜索框 -->
  5 + <view class="search-bar">
  6 + <form bindsubmit="submitSearch">
  7 + <view class="pdh20 pdv10 flex ai_c jc_sb">
  8 + <view class="input-box">
  9 + <input autoFocus class="input-search" name="word" placeholder="搜索商品" bindconfirm="submitSearch" bindinput="getInput" value="{{keyword}}"/>
  10 + <text class="iconfont icon-guan" hidden="{{hiddenClear}}" catchtap="clearInput"></text>
  11 + </view>
  12 + <button class="btn" formType="submit" hover-class="none">搜索</button>
  13 + </view>
  14 + </form>
  15 + </view>
  16 +
  17 +
  18 + <view wx:if="{{openSearchModal}}">
  19 + <view class="pd20">
  20 + <view class="" wx:if="{{searchRecord.length != 0}}">
  21 + <view class="flex jc_sb ai_c">
  22 + <text class="fs28 bold">历史搜索</text>
  23 + <text class="iconfont icon-shanchu c-6" bindtap="clearSearchRecord" wx:if="{{searchRecord.length != 0}}"></text>
  24 + </view>
  25 + <block wx:if="{{searchRecord.length>0}}">
  26 + <view class="hot-row flex flex-wrap" wx:key="{{index}}">
  27 + <view class="hot-item history ellipsis-1" bindtap="searchHotWord" data-word="{{item}}" wx:for="{{searchRecord}}" wx:key="{{index}}">{{item}}</view>
  28 + </view>
  29 + </block>
  30 + <view wx:else class="fs24">暂无历史搜索记录</view>
  31 + </view>
  32 +
  33 + <view class="" wx:if="{{hotWords.length>0}}">
  34 + <view class="fs28 bold">热门搜索</view>
  35 + <block wx:if="{{hotWords.length>0}}">
  36 + <view class="hot-row" wx:for="{{hotWords}}" wx:key="{{index}}">
  37 + <view bindtap="searchHotWord" class="hot-item" data-word="{{item}}" wx:for="{{item}}" wx:key="{{index}}">{{item}}</view>
  38 + </view>
  39 + </block>
  40 + </view>
  41 + </view>
  42 + </view>
  43 +
  44 +
  45 +
  46 + <block wx:if="{{!openSearchModal}}">
  47 +
  48 +
  49 + <view class="nav flex">
  50 + <navigator bindtap="changeTab" class="nav-item f1" data-href="sort" data-ad="{{adname}}">综合
  51 + <view class="ico-dg" wx:if="{{tabname=='sort'}}">
  52 + <image class="wh100" src="{{url}}/miniapp/images/dg.png" wx:if="{{adname=='desc'}}"></image>
  53 + <image class="wh100" src="{{url}}/miniapp/images/up_s.png" wx:if="{{adname=='asc'}}"></image>
  54 + </view>
  55 + </navigator>
  56 + <navigator bindtap="changeTab" class="nav-item f1" data-href="sales_sum" data-ad="{{adname}}">销量
  57 + <view class="ico-dg" wx:if="{{tabname=='sales_sum'}}">
  58 + <image class="wh100" src="{{url}}/miniapp/images/dg.png" wx:if="{{adname=='desc'}}"></image>
  59 + <image class="wh100" src="{{url}}/miniapp/images/up_s.png" wx:if="{{adname=='asc'}}"></image>
  60 + </view>
  61 + </navigator>
  62 + <navigator bindtap="changeTab" class="nav-item f1" data-href="final_price" data-ad="{{adname}}">价格
  63 + <view class="ico-dg" wx:if="{{tabname=='final_price'}}">
  64 + <image class="wh100" src="{{url}}/miniapp/images/dg.png" wx:if="{{adname=='desc'}}"></image>
  65 + <image class="wh100" src="{{url}}/miniapp/images/up_s.png" wx:if="{{adname=='asc'}}"></image>
  66 + </view>
  67 + </navigator>
  68 + <!-- <navigator bindtap="openFilterModal" class="nav-item">筛选<view class="ico-filter">
  69 + <image class="wh100" src="{{url}}/miniapp/images/xx.png"></image>
  70 + </view>
  71 + </navigator> -->
  72 + <!-- <navigator bindtap="openSearchModal" class="nav-item nav-search">
  73 + <image class="wh100 search-img" src="{{url}}/miniapp/images/search.png"></image>
  74 + </navigator> -->
  75 + </view>
  76 +
  77 +
  78 +
30 79 <view class="choice_list">
31 80 <navigator class="choice_item flex ai-center" url="{{g_filter.get_goods_url(item)}}" wx:for="{{requestData}}" wx:key="{{index}}">
32 81 <view class="img-wrap">
... ... @@ -38,10 +87,10 @@
38 87 <block wx:if="{{(item.prom_price>0 || item.prom_integral) && item.prom_id>0 && item.prom_type!=7}}">
39 88 <!-- 活动价 -->
40 89 <view class="price">
41   - <text wx:if="{{item.prom_integral}}">{{item.prom_integral}}积分</text>
42   - <text wx:if="{{item.prom_integral && item.prom_price}}">+</text>
43   - <text wx:if="{{item.prom_price}}">¥{{item.prom_price}}</text>
44   - </view>
  90 + <text wx:if="{{item.prom_integral}}">{{item.prom_integral}}积分</text>
  91 + <text wx:if="{{item.prom_integral && item.prom_price}}">+</text>
  92 + <text wx:if="{{item.prom_price}}">¥{{item.prom_price}}</text>
  93 + </view>
45 94 <view class="comment flex jc_sb">
46 95 <view class="word-line xc-ash">¥{{item.market_price}}</view>
47 96 <view>评论{{item.comment_count}} 已售{{item.sales_sum}}</view>
... ... @@ -49,7 +98,7 @@
49 98 </block>
50 99 <block wx:else>
51 100 <!-- 商品价格,先判断下是后又等级价-->
52   - <block wx:if="{{g_filter.is_has_rank(rank_switch,item) && is_no_plus}}">
  101 + <block wx:if="{{g_filter.is_has_rank(rank_switch,item)}}">
53 102 <!-- 当会员是等级卡的时候 -->
54 103 <block wx:if="{{card_field}}">
55 104 <!-- 等级价>0 -->
... ... @@ -57,9 +106,9 @@
57 106 <view class="flex ai_center">
58 107 <view class="price">¥{{item[card_field]}}</view>
59 108 <view class="card_bg flex ai-center">
60   - <image src="{{url}}/miniapp/images/plus/dj_icon.png"></image>
61   - <!-- <view class="card_name ellipsis-1">{{card_name}}</view> -->
62   - <text class="ellipsis-1">{{card_name}}</text>
  109 + <image src="{{url}}/miniapp/images/plus/dj_icon.png"></image>
  110 + <!-- <view class="card_name ellipsis-1">{{card_name}}</view> -->
  111 + <text class="ellipsis-1">{{card_name}}</text>
63 112 </view>
64 113 </view>
65 114 <view class="comment flex jc_sb">
... ... @@ -85,10 +134,10 @@
85 134 <view class="flex ai_center">
86 135 <view class="">¥{{g_filter.get_card_price(item,card_list,0)}}</view>
87 136 <view class="card_bg flex">
88   - <view class="flex ai-center">
89   - <image src="{{url}}/miniapp/images/plus/dj_icon.png" class=""></image>
90   - <text class="ellipsis-1">{{g_filter.get_card_price(item,card_list,1)}}</text>
91   - </view>
  137 + <view class="flex ai-center">
  138 + <image src="{{url}}/miniapp/images/plus/dj_icon.png" class=""></image>
  139 + <text class="ellipsis-1">{{g_filter.get_card_price(item,card_list,1)}}</text>
  140 + </view>
92 141 </view>
93 142 </view>
94 143 <view>评论{{item.comment_count}} 已售{{item.sales_sum}}</view>
... ... @@ -117,12 +166,22 @@
117 166 <!-- 有商品列表的时候,要有分享攻击 -->
118 167 <share_box id="share"></share_box>
119 168 </view>
120   - <view class="no-data" wx:if="{{!requestData||requestData.length==0}}">
121   - <image class="cart-image" src="{{url}}/miniapp/images/cart-null.png"></image>
122   - <view class="no-data-title">没有相关的数据</view>
123   - <navigator bindtap="go_url" class="lookat" data-url="/pages/index/index/index"> 去逛逛 </navigator>
124   - </view>
  169 +
  170 + <!-- 无数据提示 -->
  171 + <view class="no-data" wx:if="{{!requestData||requestData.length==0}}">
  172 + <image class="cart-image" src="{{url}}/miniapp/images/cart-null.png"></image>
  173 + <view class="no-data-title">没有相关的数据</view>
  174 + <navigator bindtap="go_url" class="lookat" data-url="/pages/index/index/index"> 去逛逛 </navigator>
  175 + </view>
  176 +
  177 + </block>
  178 +
  179 +
  180 +
125 181 </view>
  182 +
  183 +
  184 +
126 185 <view hidden="{{!openFilterModal}}">
127 186 <view bindtap="closeFilterModal" class="cover-layer"></view>
128 187 <view class="filter-modal">
... ... @@ -158,7 +217,10 @@
158 217 </view>
159 218 </view>
160 219 </view>
161   -<view wx:if="{{openSearchModal}}">
  220 +
  221 +
  222 +
  223 +<!-- <view wx:if="{{openSearchModal}}">
162 224 <view class="search-modal">
163 225 <view class="search-bar">
164 226 <form bindsubmit="submitSearch">
... ... @@ -176,17 +238,17 @@
176 238 </view>
177 239 </block>
178 240 </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>
  241 + <view class="search-hot">
  242 + <view class="hot-title flex jc_sb ai_c">
  243 + <text>历史搜索</text>
  244 + <text class="iconfont icon-shanchu xc-ash" bindtap="clearSearchRecord" wx:if="{{searchRecord.length != 0}}"></text>
  245 + </view>
  246 + <block wx:if="{{searchRecord.length>0}}">
  247 + <view class="hot-row flex flex-wrap" wx:key="{{index}}">
  248 + <view class="hot-item history ellipsis-1" bindtap="searchHotWord" data-word="{{item}}" wx:for="{{searchRecord}}" wx:key="{{index}}">{{item}}</view>
  249 + </view>
  250 + </block>
  251 + <view wx:else class="fs24">暂无历史搜索记录</view>
  252 + </view>
191 253 </view>
192   -</view>
193 254 \ No newline at end of file
  255 +</view> -->
194 256 \ No newline at end of file
... ...
pages/goods/search/search.wxss
1 1 .container {
2 2 color: #666;
  3 + overflow: visible;
3 4 }
4 5  
5 6 .nav-item {
6   - float: left;
  7 + /* float: left;
7 8 width: 30%;
8 9 height: 90rpx;
9   - line-height: 90rpx;
  10 + line-height: 90rpx; */
  11 + padding: 14rpx 10rpx;
10 12 display: flex;
11 13 align-items: center;
12 14 justify-content: center;
13   - font-size: 32rpx;
  15 + font-size: 28rpx;
14 16 border-bottom: 2rpx solid #E6E6E6;
15 17 background-color: #fff;
16 18 }
... ... @@ -160,7 +162,7 @@
160 162 }
161 163  
162 164 .search-modal {
163   - position: fixed;
  165 + /* position: fixed;
164 166 top: 0;
165 167 right: 0;
166 168 left: 0;
... ... @@ -170,12 +172,16 @@
170 172 overflow-x: hidden;
171 173 padding: 80rpx 30rpx;
172 174 font-size: 30rpx;
173   - color: #555;
  175 + color: #555; */
174 176 }
175 177  
176 178 .search-bar {
177   - width: 100%;
178   - box-sizing: border-box;
  179 + /* width: 100%;
  180 + box-sizing: border-box; */
  181 + background-color: white;
  182 + position: sticky;
  183 + top: 0;
  184 + z-index: 1;
179 185 }
180 186  
181 187 .search-input {
... ... @@ -212,21 +218,21 @@
212 218 .hot-title {
213 219 font-size: 35rpx;
214 220 color: black;
215   - margin-bottom: 30rpx;
  221 + /* margin-bottom: 30rpx; */
216 222 }
217 223  
218 224 .hot-row {
219 225 display: flex;
220 226 /*--justify-content: space-between---*/
221   - padding: 15rpx 10rpx;
  227 + padding: 10rpx 0;
222 228 }
223 229  
224 230 .hot-item {
225   - padding: 8rpx 8rpx;
226   - border: 1rpx solid #e0e0e0;
227   - border-radius: 10rpx;
  231 + padding: 6rpx 20rpx;
  232 + border: 2rpx solid #e0e0e0;
  233 + border-radius: 40rpx;
228 234 font-size: 28rpx;
229   - margin-left: 15rpx;
  235 + margin-right: 16rpx;
230 236 }
231 237  
232 238 /* .card_bg {
... ... @@ -303,9 +309,69 @@
303 309 background-color: #f0f0f0;
304 310 color: #7b7b7b;
305 311 border: none;
306   - margin-bottom: 8rpx;
  312 + margin-bottom: 16rpx;
307 313 }
308 314  
309 315 .history:first-of-type {
  316 + /* margin-left: 0; */
  317 +}
  318 +
  319 +.input-box {
  320 + position: relative;
  321 + flex: 1;
  322 + padding-left: 50rpx;
  323 + padding-right: 70rpx;
  324 + background-color: #f0f0f0;
  325 + border-radius: 60rpx;
  326 +}
  327 +
  328 +.input-box::before {
  329 + font-family: iconfont;
  330 + position: absolute;
  331 + left: 20rpx;
  332 + top: 50%;
  333 + transform: translateY(-50%);
  334 + content: '\e618';
  335 +}
  336 +
  337 +.input-search {
  338 + position: relative;
  339 + padding: 10rpx;
  340 + font-size: 28rpx;
  341 +}
  342 +
  343 +
  344 +.btn {
310 345 margin-left: 0;
  346 + margin-right: 0;
  347 + line-height: 1;
  348 + padding: 20rpx;
  349 + font-size: 30rpx;
  350 +}
  351 +
  352 +.btn::after {
  353 + border: none;
311 354 }
  355 +
  356 +.icon-guan {
  357 + font-size: 20rpx;
  358 + padding: 10rpx;
  359 + position: absolute;
  360 + right: 20rpx;
  361 + top: 50%;
  362 + transform: translateY(-50%);
  363 +}
  364 +
  365 +.lookat {
  366 + display: inline-block;
  367 + color: #FF6768;
  368 + border: 2rpx solid #FF6768;
  369 + border-radius: 80rpx;
  370 + font-size: 30rpx;
  371 +}
  372 +
  373 +.no-data .no-data-title {
  374 + font-size: 28rpx;
  375 + color: #999;
  376 +}
  377 +
... ...