Commit 7365c10e2c4aef305b99a0fa82df53ef6de34d3c
1 parent
434be1c8
oa单权益门店选择组件
Showing
7 changed files
with
1135 additions
and
3 deletions
components/store_popup/store_popup.js
0 → 100644
1 | +// components/store_popup.js | |
2 | +var e = getApp(), | |
3 | + a = e.globalData.setting, | |
4 | + os = a | |
5 | +Component({ | |
6 | + /** | |
7 | + * 组件的属性列表 | |
8 | + */ | |
9 | + properties: { | |
10 | + store: { | |
11 | + type: Number, | |
12 | + value: 0 | |
13 | + } | |
14 | + }, | |
15 | + lifetimes: { | |
16 | + attached: function () { | |
17 | + // 在组件实例进入页面节点树时执行 | |
18 | + this.init() | |
19 | + }, | |
20 | + detached: function () { | |
21 | + // 在组件实例被从页面节点树移除时执行 | |
22 | + }, | |
23 | + }, | |
24 | + /** | |
25 | + * 组件的初始数据 | |
26 | + */ | |
27 | + data: { | |
28 | + //门店相关 | |
29 | + ismend: 0, | |
30 | + is_sec_mend: 0, | |
31 | + sto_sele_name: "", //选中的门店名称 | |
32 | + sto_sele_id: "", //选中的门店id | |
33 | + sto_sele_distr: "", //选择的门店的配送方式 | |
34 | + is_show_sto_cat: 1, //是否显示门店分类 | |
35 | + only_pk: null, | |
36 | + all_sto: null, | |
37 | + sec_sto: null, //选择了的门店分类 | |
38 | + pickpu_list: null, //读出的所有门店list | |
39 | + def_pickpu_list: null, //一开始5个门店list | |
40 | + sec_pick_index: 0, //第二级门店选择ID | |
41 | + fir_pick_index: 0, //第一级门店选择ID | |
42 | + all_pick_list: null,//所有的门店先记录起来 | |
43 | + | |
44 | + select_store: 0, //选择更多 | |
45 | + index: 1, | |
46 | + more_store: 0, //选择门店 | |
47 | + sort_store: 0, //门店分类 | |
48 | + choice_sort_store: 0, //选择分类门店 | |
49 | + new_user: 0, //新用户 | |
50 | + | |
51 | + def_pick_store: null, // 默认的门店 | |
52 | + fir_def_store: null, //客户默认的门店的 | |
53 | + lat: null, //维度 | |
54 | + lon: null, //经度 | |
55 | + | |
56 | + is_get_local_ok: 0, //获取坐标是否完成 | |
57 | + region_name: "门店分类", //区域的名字 | |
58 | + is_gps: 1, | |
59 | + open_ind_store: 0, //哪里打开的门店列表的控制属性 | |
60 | + default_store: {}, //创建添加默认门店地址的对象 | |
61 | + | |
62 | + | |
63 | + openSpecModal: 0, | |
64 | + | |
65 | + is_get_guide: 0, | |
66 | + keyword: '', //门店搜索 | |
67 | + sec_i: -1,//选中分类门店 下标 | |
68 | + }, | |
69 | + | |
70 | + /** | |
71 | + * 组件的方法列表 | |
72 | + */ | |
73 | + methods: { | |
74 | + init() { | |
75 | + getApp().getConfig2((e) => { | |
76 | + this.setData({ | |
77 | + bconfig: e, | |
78 | + }); | |
79 | + }) | |
80 | + this.wait_for_store_config() | |
81 | + this.set_user_mo_store(() => { | |
82 | + this.get_sto() | |
83 | + }) | |
84 | + }, | |
85 | + //开启定位 | |
86 | + wait_for_store_config: function () { | |
87 | + let th = this | |
88 | + var t_time = setInterval(function () { | |
89 | + if (th.data.bconfig == null) false; | |
90 | + var e = th.data.bconfig; | |
91 | + if (e && e.is_sort_storage) { | |
92 | + wx.getLocation({ | |
93 | + type: 'gcj02', | |
94 | + success: function (res) { | |
95 | + th.data.lat = res.latitude; | |
96 | + th.data.lon = res.longitude; | |
97 | + th.data.is_get_local_ok = 1; | |
98 | + }, | |
99 | + fail: function (res) { | |
100 | + if (res.errCode == 2) { | |
101 | + th.setData({ | |
102 | + is_gps: 0 | |
103 | + }); | |
104 | + if (th.data.is_gps == 0) { | |
105 | + getApp().confirmBox("请开启GPS定位", null, 10000, !1); | |
106 | + } | |
107 | + | |
108 | + } else { | |
109 | + th.setData({ | |
110 | + is_gps: "3" | |
111 | + }); | |
112 | + } | |
113 | + | |
114 | + th.data.is_get_local_ok = 1; | |
115 | + } | |
116 | + }) | |
117 | + } else { | |
118 | + th.data.is_get_local_ok = 1; | |
119 | + } | |
120 | + clearInterval(t_time); | |
121 | + }, 500) | |
122 | + }, | |
123 | + set_user_mo_store(func) { | |
124 | + let th = this; | |
125 | + let that = th; | |
126 | + | |
127 | + //获取用户的默认门店 | |
128 | + getApp().get_user_store(function (e) { | |
129 | + if (!e) { | |
130 | + th.data.fir_def_store = {}; //赋值空对象 | |
131 | + return false; | |
132 | + } | |
133 | + | |
134 | + if (getApp().globalData.is_dj_pk) th.setData({ has_def: 1 }) | |
135 | + | |
136 | + var ee = JSON.parse(JSON.stringify(e)); | |
137 | + //--定时器推迟一下-- | |
138 | + setTimeout(function () { | |
139 | + if (th.data.fir_goods) var g_distr_type = th.data.fir_goods.distr_type; | |
140 | + //--如果默认门店的配送方式不对,就不能被选择,这里不控制,如果不一样,就说明配送方式不对-- | |
141 | + if (ee.distr_type != 0 && g_distr_type != 0 && ee.distr_type != g_distr_type) { | |
142 | + ee.is_no_dis = 1; | |
143 | + } | |
144 | + | |
145 | + var appd = getApp().globalData; | |
146 | + var w_time = setInterval(function () { | |
147 | + if (that.data.is_get_local_ok == 0) return false; | |
148 | + clearInterval(w_time); | |
149 | + var distance = null; | |
150 | + var e = JSON.parse(JSON.stringify(ee)); | |
151 | + | |
152 | + //如果有开启近距离的话,同时距离优不一样了 | |
153 | + if (that.data.lat != null) { | |
154 | + //如果经纬度有变化的话 | |
155 | + if (e && appd.lat == that.data.lat && appd.lon == that.data.lon && e.distance > 0) { | |
156 | + that.set_def_storage(e); | |
157 | + if (func) func(); | |
158 | + } else { | |
159 | + //要用接口是获取距离,js的计算不准 | |
160 | + getApp().request.promiseGet("/api/weshop/pickup/list", { | |
161 | + data: { | |
162 | + store_id: os.stoid, | |
163 | + pickup_id: e.pickup_id, | |
164 | + lat: th.data.lat, | |
165 | + lon: th.data.lon, | |
166 | + isstop: 0, | |
167 | + is_pos: 1 | |
168 | + }, | |
169 | + }).then(res => { | |
170 | + if (res.data.code == 0) { | |
171 | + e = res.data.data.pageData[0]; | |
172 | + if (e) { | |
173 | + e.is_no_dis = ee.is_no_dis; | |
174 | + appd.pk_store = e; | |
175 | + that.set_def_storage(e); | |
176 | + } | |
177 | + | |
178 | + } | |
179 | + if (func) func(); | |
180 | + }) | |
181 | + } | |
182 | + //e.distance = distance; | |
183 | + appd.lat = that.data.lat; | |
184 | + appd.lon = that.data.lon; | |
185 | + | |
186 | + } else { | |
187 | + if (e) { | |
188 | + e.distance = null; | |
189 | + that.set_def_storage(e); | |
190 | + } | |
191 | + if (func) func(); | |
192 | + } | |
193 | + }, 500) | |
194 | + }, 700) | |
195 | + }) | |
196 | + | |
197 | + }, | |
198 | + //--- 设置一下默认库存的数量 ---- | |
199 | + set_def_storage(ee) { | |
200 | + var that = this, th = this; | |
201 | + that.data.fir_def_store = ee; | |
202 | + that.setData({ | |
203 | + def_pick_store: ee, | |
204 | + sto_sele_name: ee.pickup_name, | |
205 | + sto_sele_id: ee.pickup_id, | |
206 | + sto_sele_distr: ee.distr_type | |
207 | + }) | |
208 | + }, | |
209 | + //---------拿出门店分类和门店------------ | |
210 | + get_sto() { | |
211 | + let th = this | |
212 | + var that = th; | |
213 | + var self = this; | |
214 | + var timer_get = setInterval(function () { | |
215 | + if (th.data.is_get_local_ok == 0) return false; | |
216 | + var dd = null; | |
217 | + | |
218 | + dd = { | |
219 | + store_id: os.stoid, | |
220 | + isstop: 0, | |
221 | + is_pos: 1, | |
222 | + pageSize: 2000, | |
223 | + } | |
224 | + | |
225 | + //如果有距离的话 | |
226 | + if (th.data.lat != null) { | |
227 | + dd.lat = th.data.lat; | |
228 | + dd.lon = th.data.lon; | |
229 | + } | |
230 | + | |
231 | + if (th.data.sele_g && th.data.sele_g.pickup_list) { | |
232 | + dd.ids = th.data.sele_g.pickup_list | |
233 | + } | |
234 | + | |
235 | + clearInterval(timer_get); | |
236 | + | |
237 | + //如果会员是有默认的门店话 | |
238 | + if (!th.data.def_pick_store && th.data.fir_def_store) { | |
239 | + th.setData({ def_pick_store: th.data.fir_def_store }); | |
240 | + } | |
241 | + wx.showLoading({ | |
242 | + title: '加载中.' | |
243 | + }); | |
244 | + //----------获取门店---------------- | |
245 | + getApp().request.promiseGet("/api/weshop/pickup/list", { | |
246 | + data: dd, | |
247 | + }).then(res => { | |
248 | + var e = res; | |
249 | + wx.hideLoading() | |
250 | + if (e.data.code == 0 && e.data.data && e.data.data.pageData && e.data.data.pageData.length > 0) { | |
251 | + | |
252 | + var his_cate_num = 0; | |
253 | + for (let i in e.data.data.pageData) { | |
254 | + let item = e.data.data.pageData[i]; | |
255 | + if (item.category_id > 0) { | |
256 | + his_cate_num = 1; | |
257 | + break; | |
258 | + } | |
259 | + } | |
260 | + e.his_cate_num = his_cate_num; | |
261 | + | |
262 | + //如果有开启距离的功能,没有设置默认门店,要用最近的门店作为默认门店 | |
263 | + if (dd.lat && (!th.data.def_pick_store || JSON.stringify(th.data.def_pick_store) == '{}') && th.data.bconfig && th.data.bconfig.is_sort_storage) { | |
264 | + th.setData({ | |
265 | + def_pick_store: e.data.data.pageData[0], | |
266 | + sto_sele_name: e.data.data.pageData[0].pickup_name, | |
267 | + sto_sele_id: e.data.data.pageData[0].pickup_id, | |
268 | + sto_sele_distr: e.data.data.pageData[0].distr_type | |
269 | + }); | |
270 | + th.data.fir_def_store = e.data.data.pageData[0]; | |
271 | + } | |
272 | + | |
273 | + //-- 如果有默认选择门店的时候,要把默认门店放在第一位,修改不要配送方式的判断 -- | |
274 | + if (th.data.def_pick_store && JSON.stringify(th.data.def_pick_store) != '{}') { | |
275 | + for (var k = 0; k < e.data.data.pageData.length; k++) { | |
276 | + if (e.data.data.pageData[k].pickup_id == th.data.def_pick_store.pickup_id) { | |
277 | + e.data.data.pageData.splice(k, 1); //删除 | |
278 | + break; | |
279 | + } | |
280 | + } | |
281 | + e.data.data.pageData.splice(0, 0, th.data.def_pick_store); //添加 | |
282 | + } | |
283 | + | |
284 | + th.setData({ all_pick_list: e.data.data.pageData }); | |
285 | + | |
286 | + setTimeout(function () { | |
287 | + | |
288 | + self.deal_pickup(e, th, os); //--普通门店排版-- | |
289 | + }, 800) | |
290 | + | |
291 | + } | |
292 | + }) | |
293 | + }, 200) | |
294 | + | |
295 | + }, | |
296 | + //---点击二级之后的选择--- | |
297 | + choose_for_store: function (e) { | |
298 | + var index_c = e.currentTarget.dataset.ind; | |
299 | + var th = this; | |
300 | + th.setData({ | |
301 | + sec_pick_index: index_c, | |
302 | + fir_pick_index: index_c | |
303 | + }) | |
304 | + | |
305 | + }, | |
306 | + choose_for_store_fir: function (e) { | |
307 | + console.log(e); | |
308 | + var index_c = e.currentTarget.dataset.ind; | |
309 | + var th = this; | |
310 | + th.setData({ | |
311 | + fir_pick_index: index_c | |
312 | + }) | |
313 | + | |
314 | + }, | |
315 | + close_popup() { | |
316 | + this.setData({ | |
317 | + store: 0 | |
318 | + }) | |
319 | + }, | |
320 | + //选择更多门店 | |
321 | + more_store: function () { | |
322 | + this.setData({ | |
323 | + sort_store: 1 | |
324 | + }); | |
325 | + }, | |
326 | + // 返回按钮 | |
327 | + returns: function () { | |
328 | + this.setData({ | |
329 | + sort_store: 0, | |
330 | + choice_sort_store: 0 | |
331 | + }); | |
332 | + }, | |
333 | + //---选择分类门店--- | |
334 | + choice_sort_store: function (e) { | |
335 | + var index = e.currentTarget.dataset.index; | |
336 | + var region_name = e.currentTarget.dataset.region; | |
337 | + var item = this.data.all_sto[index]; | |
338 | + this.setData({ | |
339 | + region_name: region_name, | |
340 | + sort_store: 0, | |
341 | + choice_sort_store: 1, | |
342 | + sec_i: index, | |
343 | + sec_sto: item, | |
344 | + sec_pick_index: 0 | |
345 | + }); | |
346 | + }, | |
347 | + //------------处理门店--------------- | |
348 | + deal_pickup(e, th, os) { | |
349 | + // if (!th.data.sele_g) return false | |
350 | + wx.hideLoading(); | |
351 | + //单总量超出10个的时候,同时门店有分类 | |
352 | + if (e.data.data.total > 10 && e.his_cate_num) { | |
353 | + getApp().request.get("/api/weshop/storagecategory/page", { | |
354 | + data: { | |
355 | + store_id: os.stoid, | |
356 | + pageSize: 1000, | |
357 | + orderField: "sort", | |
358 | + orderType: 'asc', | |
359 | + }, | |
360 | + success: function (ee) { | |
361 | + if (ee.data.code == 0) { | |
362 | + var check_all_cate = 0; | |
363 | + if (ee.data.data && ee.data.data.pageData && ee.data.data.pageData.length > 0) { | |
364 | + for (let i in ee.data.data.pageData) { | |
365 | + let item = ee.data.data.pageData[i]; | |
366 | + if (item.is_show == 1) { | |
367 | + check_all_cate = 1; | |
368 | + break | |
369 | + } | |
370 | + } | |
371 | + } | |
372 | + if (check_all_cate) { | |
373 | + var sto_cate = ee.data.data.pageData; | |
374 | + var sto_arr = e.data.data.pageData; | |
375 | + var newarr = new Array(); | |
376 | + var qita = new Array(); | |
377 | + | |
378 | + | |
379 | + var is_del_pk = 0; | |
380 | + //----要进行门店分组-------- | |
381 | + for (var i = 0; i < sto_arr.length; i++) { | |
382 | + //找一下这个门店有没有在分类数组内 | |
383 | + var find2 = 0, find2name = "", sort = 0; | |
384 | + is_del_pk = 0; | |
385 | + for (var m = 0; m < sto_cate.length; m++) { | |
386 | + if (sto_arr[i].category_id == sto_cate[m].cat_id) { | |
387 | + if (sto_cate[m].is_show != 1) { | |
388 | + is_del_pk = 1; | |
389 | + sto_arr.splice(i, 1); | |
390 | + i--; | |
391 | + } else { | |
392 | + find2 = sto_cate[m].cat_id; | |
393 | + find2name = sto_cate[m].cat_name; | |
394 | + sort = sto_cate[m].sort; | |
395 | + is_del_pk = 0; | |
396 | + } | |
397 | + break; | |
398 | + } | |
399 | + } | |
400 | + if (is_del_pk) continue; | |
401 | + | |
402 | + if (newarr.length > 0) { | |
403 | + var find = 0; | |
404 | + //如果有找到,那门店就在这个分组内,否则,分类就要排在其他 | |
405 | + if (find2 != 0) { | |
406 | + for (var ii = 0; ii < newarr.length; ii++) { | |
407 | + if (sto_arr[i].category_id == newarr[ii].cat_id) { | |
408 | + newarr[ii].s_arr.push(sto_arr[i]); | |
409 | + find = 1; | |
410 | + break; | |
411 | + } | |
412 | + } | |
413 | + if (find == 0) { | |
414 | + var arr0 = new Array(); | |
415 | + arr0.push(sto_arr[i]); | |
416 | + var item = { | |
417 | + cat_id: find2, | |
418 | + name: find2name, | |
419 | + sort: sort, | |
420 | + s_arr: arr0 | |
421 | + }; | |
422 | + newarr.push(item); | |
423 | + } | |
424 | + } else { | |
425 | + qita.push(sto_arr[i]); | |
426 | + } | |
427 | + } else { | |
428 | + //如果有找到,那门店就在这个分组内,否则,分类就要排在其他 | |
429 | + if (find2 != 0) { | |
430 | + var arr0 = new Array(); | |
431 | + arr0.push(sto_arr[i]); | |
432 | + var item = { | |
433 | + cat_id: find2, | |
434 | + name: find2name, | |
435 | + sort: sort, | |
436 | + s_arr: arr0 | |
437 | + }; | |
438 | + newarr.push(item); | |
439 | + } else { | |
440 | + qita.push(sto_arr[i]); | |
441 | + } | |
442 | + } | |
443 | + } | |
444 | + | |
445 | + var def_arr = new Array(); | |
446 | + //-- 开始就看10个门店 -- | |
447 | + for (var k = 0; k < 10; k++) { | |
448 | + if (k == sto_arr.length) break; | |
449 | + def_arr.push(sto_arr[k]); | |
450 | + } | |
451 | + | |
452 | + th.setData({ | |
453 | + def_pickpu_list: def_arr, | |
454 | + pickpu_list: ee.data.data.pageData | |
455 | + }); | |
456 | + | |
457 | + | |
458 | + //门店分类要排序下 | |
459 | + function compare(property) { | |
460 | + return function (a, b) { | |
461 | + var value1 = a[property]; | |
462 | + var value2 = b[property]; | |
463 | + return value1 - value2; | |
464 | + } | |
465 | + } | |
466 | + | |
467 | + if (newarr.length > 0) | |
468 | + newarr.sort(compare("sort")); | |
469 | + | |
470 | + | |
471 | + //----安排其他的分类----- | |
472 | + if (qita.length > 0) { | |
473 | + var item = { | |
474 | + cat_id: -1, | |
475 | + name: "其他", | |
476 | + s_arr: qita | |
477 | + }; | |
478 | + newarr.push(item); | |
479 | + } | |
480 | + | |
481 | + var sd = { | |
482 | + all_sto: newarr, | |
483 | + is_show_sto_cat: 1 | |
484 | + } | |
485 | + if (!sto_arr || sto_arr.length <= 10) { | |
486 | + sd.is_show_sto_cat = -1; | |
487 | + sd.only_pk = sto_arr; | |
488 | + } | |
489 | + th.setData(sd); | |
490 | + | |
491 | + } else { | |
492 | + th.setData({ | |
493 | + is_show_sto_cat: -1, | |
494 | + only_pk: e.data.data.pageData | |
495 | + }); | |
496 | + //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------ | |
497 | + if (!th.data.def_pick_store) { | |
498 | + th.setData({ | |
499 | + def_pick_store: e.data.data.pageData[0], | |
500 | + sto_sele_name: e.data.data.pageData[0].pickup_name, | |
501 | + sto_sele_id: e.data.data.pageData[0].pickup_id, | |
502 | + sto_sele_distr: e.data.data.pageData[0].distr_type | |
503 | + }) | |
504 | + } | |
505 | + } | |
506 | + } else { | |
507 | + th.setData({ | |
508 | + is_show_sto_cat: -1, | |
509 | + only_pk: e.data.data.pageData | |
510 | + }); | |
511 | + //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------ | |
512 | + if (!th.data.def_pick_store) { | |
513 | + th.setData({ | |
514 | + def_pick_store: e.data.data.pageData[0], | |
515 | + sto_sele_name: e.data.data.pageData[0].pickup_name, | |
516 | + sto_sele_id: e.data.data.pageData[0].pickup_id, | |
517 | + sto_sele_distr: e.data.data.pageData[0].distr_type | |
518 | + }) | |
519 | + } | |
520 | + | |
521 | + } | |
522 | + } | |
523 | + }); | |
524 | + } else { | |
525 | + th.setData({ | |
526 | + is_show_sto_cat: 0, | |
527 | + only_pk: e.data.data.pageData | |
528 | + }); | |
529 | + //-----如果没有默认门店,要取第一个门店作为默认店------ | |
530 | + if (!th.data.def_pick_store && th.data.bconfig && th.data.bconfig.is_sort_storage) { | |
531 | + th.setData({ | |
532 | + def_pick_store: e.data.data.pageData[0], | |
533 | + sto_sele_name: e.data.data.pageData[0].pickup_name, | |
534 | + sto_sele_id: e.data.data.pageData[0].pickup_id, | |
535 | + sto_sele_distr: e.data.data.pageData[0].distr_type | |
536 | + }) | |
537 | + } | |
538 | + } | |
539 | + }, | |
540 | + | |
541 | + check_def_pk: function () { | |
542 | + let th = this | |
543 | + th.data.def_pick_store.is_no_dis = 0; | |
544 | + var def_pick_store = th.data.def_pick_store | |
545 | + var sele_g = th.data.sele_g; | |
546 | + var arr = sele_g.pickup_list.split(','); | |
547 | + | |
548 | + var idx = arr.findIndex(function (e) { | |
549 | + return e == def_pick_store.pickup_id; | |
550 | + }) | |
551 | + | |
552 | + if (idx == -1) { | |
553 | + def_pick_store.is_no_dis = 1; | |
554 | + } | |
555 | + th.setData({ def_pick_store }) | |
556 | + | |
557 | + }, | |
558 | + //获取搜索门店输入的值 | |
559 | + input_store: function (e) { | |
560 | + this.setData({ | |
561 | + keyword: e.detail.value | |
562 | + }) | |
563 | + }, | |
564 | + //搜索门店 | |
565 | + searchfn() { | |
566 | + let choice_sort_store = this.data.choice_sort_store | |
567 | + if (choice_sort_store == 0) { //全局搜索 | |
568 | + let all_pick_list = this.data.all_pick_list | |
569 | + let def_pickpu_list = this.data.def_pickpu_list | |
570 | + let keyword = this.data.keyword | |
571 | + if (keyword) { | |
572 | + let arr = all_pick_list.filter(item => { | |
573 | + let i = item.pickup_name.indexOf(keyword) | |
574 | + if (i > -1) { | |
575 | + return true | |
576 | + } else { | |
577 | + return false | |
578 | + } | |
579 | + }) | |
580 | + if (arr && arr.length > 0) { | |
581 | + if (this.data.is_show_sto_cat == 1) { | |
582 | + this.setData({ | |
583 | + def_pickpu_list: arr | |
584 | + }) | |
585 | + } else { | |
586 | + this.setData({ | |
587 | + only_pk: arr | |
588 | + }) | |
589 | + } | |
590 | + } else { | |
591 | + wx.showToast({ | |
592 | + title: '没有搜索到门店', | |
593 | + icon: 'none', | |
594 | + duration: 2000 | |
595 | + }) | |
596 | + } | |
597 | + } else { | |
598 | + if (this.data.is_show_sto_cat == 1) { | |
599 | + this.setData({ | |
600 | + def_pickpu_list: all_pick_list.slice(0, 10) | |
601 | + }) | |
602 | + } else { | |
603 | + this.setData({ | |
604 | + only_pk: all_pick_list | |
605 | + }) | |
606 | + } | |
607 | + | |
608 | + } | |
609 | + } else { //分类下搜索 | |
610 | + let sec_i = this.data.sec_i | |
611 | + let all_sto = this.data.all_sto | |
612 | + let sec_sto = this.data.sec_sto | |
613 | + let sec_arr = sec_sto.s_arr | |
614 | + let keyword = this.data.keyword | |
615 | + let text = 'sec_sto.s_arr' | |
616 | + if (keyword) { | |
617 | + let arr = sec_arr.filter(item => { | |
618 | + let i = item.pickup_name.indexOf(keyword) | |
619 | + if (i > -1) { | |
620 | + return true | |
621 | + } else { | |
622 | + return false | |
623 | + } | |
624 | + }) | |
625 | + if (arr && arr.length > 0) { | |
626 | + this.setData({ | |
627 | + [text]: arr | |
628 | + }) | |
629 | + } else { | |
630 | + wx.showToast({ | |
631 | + title: '没有搜索到门店', | |
632 | + icon: 'none', | |
633 | + duration: 2000 | |
634 | + }) | |
635 | + } | |
636 | + } else { | |
637 | + console.error(sec_i); | |
638 | + console.log(all_sto); | |
639 | + console.error(all_sto[sec_i].s_arr); | |
640 | + this.setData({ | |
641 | + [text]: all_sto[sec_i].s_arr | |
642 | + }) | |
643 | + } | |
644 | + | |
645 | + | |
646 | + } | |
647 | + }, | |
648 | + //确定def_pick为选择的门店 | |
649 | + sure_pick: function (e) { | |
650 | + | |
651 | + var th = this; | |
652 | + var item = null; | |
653 | + var openindstore = th.data.open_ind_store; | |
654 | + if (th.data.choice_sort_store == 0) { | |
655 | + var index = th.data.fir_pick_index; | |
656 | + if (th.data.is_show_sto_cat == 1) { | |
657 | + item = th.data.def_pickpu_list[index]; | |
658 | + } else { | |
659 | + item = th.data.only_pk ? th.data.only_pk[index] : null; //当没有门店分类的时候 | |
660 | + } | |
661 | + } else { | |
662 | + var index = th.data.sec_pick_index; | |
663 | + item = th.data.sec_sto.s_arr[index]; | |
664 | + } | |
665 | + | |
666 | + if (!item) return false; | |
667 | + | |
668 | + // if (!th.data.sele_g) return false; | |
669 | + | |
670 | + console.error('选中的门店'); | |
671 | + console.error(item); | |
672 | + | |
673 | + th.setData({ | |
674 | + def_pick_store: item, | |
675 | + sto_sele_name: item.pickup_name, | |
676 | + sto_sele_id: item.pickup_id, | |
677 | + sto_sele_distr: item.distr_type, | |
678 | + store: 0, | |
679 | + choice_sort_store: 0, | |
680 | + fir_pick_index: 0, | |
681 | + openSpecModal: !0, | |
682 | + }); | |
683 | + | |
684 | + | |
685 | + }, | |
686 | + } | |
687 | +}) | ... | ... |
components/store_popup/store_popup.json
0 → 100644
components/store_popup/store_popup.wxml
0 → 100644
1 | +<!--components/store_popup.wxml--> | |
2 | +<wxs module="filter" src="/utils/filter.wxs"></wxs> | |
3 | +<block wx:if="{{store}}"> | |
4 | + <view class="mongolia-layer" bindtap="close_popup"></view> | |
5 | + <view class="popup-frame"> | |
6 | + <block wx:if="{{sort_store==0}}"> | |
7 | + <!-- 头部 标题 --> | |
8 | + <view class="popup-top flex-space-between"> | |
9 | + <text class="fs32 nearby_store">{{choice_sort_store==0?'附近的门店':region_name}}</text> | |
10 | + <view> | |
11 | + <view> | |
12 | + <icon bindtap="close_popup" class="modal-closes" color="black" size="22" type="cancel"></icon> | |
13 | + </view> | |
14 | + <view class="felx choose_more" bindtap="more_store" wx:if="{{is_show_sto_cat>0}}"> | |
15 | + <text class="fs26 red-co" >{{choice_sort_store==0?'更多门店':'返回'}}</text> <view class="bg_rights" ></view> | |
16 | + </view> | |
17 | + </view> | |
18 | + </view> | |
19 | + <view class="searchbar flex-vertical-between storeListpadd"> | |
20 | + <input class="inputstore fs28" placeholder="输入要搜索的门店" value="{{keyword}}" placeholder-class="fs28" maxlength="16" bindinput="input_store" bindconfirm="searchfn" /> | |
21 | + <view class="search flex-center" bindtap="searchfn"> | |
22 | + <view class="fs28">搜索</view> | |
23 | + </view> | |
24 | + </view> | |
25 | + <!-- 门店列表,最外层的门店列表,一开始 --> | |
26 | + <view class="store-list"> | |
27 | + <!-- 如果还没有点击更多门店的时候 --> | |
28 | + <block wx:if="{{choice_sort_store==0}}"> | |
29 | + <!-- 需要for循环 --> | |
30 | + <block wx:if="{{is_show_sto_cat==1}}"> | |
31 | + <view class="store_choose flex" wx:for="{{def_pickpu_list}}" bindtap="choose_for_store_fir" data-ind="{{index}}"> | |
32 | + <view class="store flex-vertical"> | |
33 | + <!-- 需要点击事件 --> | |
34 | + <block wx:if="{{index==fir_pick_index}}"> | |
35 | + <view class="circle white xc-hook fs20 red-b">Г</view> | |
36 | + </block> | |
37 | + <block wx:else> | |
38 | + <view class="circle xc-hooks"></view> | |
39 | + </block> | |
40 | + <view class="address-frame xc-ash"> | |
41 | + <view class="flex-vertical-between butttem5"> | |
42 | + <view class="flex xc-ash"> | |
43 | + <view class="fs30 xc-black3 address_name">{{item.pickup_name}}</view> | |
44 | + </view> | |
45 | + <view> | |
46 | + <view class="distance fs24 address-val" wx:if="{{item.distance}}"> | |
47 | + 距离:{{ item.distance>1000 ? filter.toFix(item.distance/1000,2)+'km' : filter.toFix(item.distance,0)+"m"}} | |
48 | + </view> | |
49 | + </view> | |
50 | + </view> | |
51 | + <view class="fs24 xc-ash-9f">地址:{{item.fulladdress}}</view> | |
52 | + </view> | |
53 | + </view> | |
54 | + </view> | |
55 | + </block> | |
56 | + <block wx:else> | |
57 | + <view class="store_choose flex" wx:for="{{only_pk}}" bindtap="choose_for_store_fir" data-ind="{{index}}"> | |
58 | + <view class="store flex-vertical"> | |
59 | + <!-- 需要点击事件 --> | |
60 | + <block wx:if="{{index==fir_pick_index}}"> | |
61 | + <view class="circle white xc-hook fs20 red-b">Г</view> | |
62 | + </block> | |
63 | + <block wx:else> | |
64 | + <view class="circle xc-hooks"></view> | |
65 | + </block> | |
66 | + <view class="address-frame xc-ash"> | |
67 | + <view class="flex-vertical-between "> | |
68 | + <view class="flex xc-ash"> | |
69 | + <view class="fs30 xc-black3 address_name">{{item.pickup_name}}</view> | |
70 | + </view> | |
71 | + <view> | |
72 | + <view class="distance fs24 address-val" wx:if="{{item.distance}}"> | |
73 | + 距离:{{ item.distance>1000 ? filter.toFix(item.distance/1000,2)+"km" : filter.toFix(item.distance,0)+"m"}} | |
74 | + </view> | |
75 | + </view> | |
76 | + </view> | |
77 | + <view class="fs24 xc-ash-9f">地址:{{item.fulladdress}}</view> | |
78 | + </view> | |
79 | + </view> | |
80 | + </view> | |
81 | + </block> | |
82 | + </block> | |
83 | + <block wx:else> | |
84 | + <!-- 如果是点击选择门店分类后显示分类下的门店 --> | |
85 | + <view class="store_choose flex" wx:for="{{sec_sto.s_arr}}" data-ind="{{index}}" bindtap="choose_for_store"> | |
86 | + <view class="store flex-vertical"> | |
87 | + <!-- 需要点击事件 --> | |
88 | + <block wx:if="{{index==sec_pick_index}}"> | |
89 | + <view class="circle white xc-hook fs20 red-b">Г</view> | |
90 | + </block> | |
91 | + <block wx:else> | |
92 | + <view class="circle xc-hooks"></view> | |
93 | + </block> | |
94 | + <view class="address-frame xc-ash"> | |
95 | + <view class="flex-vertical-between "> | |
96 | + <view class="flex xc-ash"> | |
97 | + <view class="fs28 xc-black3 address_name">{{item.pickup_name}}</view> | |
98 | + </view> | |
99 | + <view> | |
100 | + <view class="distance fs24 address-val" wx:if="{{item.distance!=null}}"> | |
101 | + 距离:{{item.distance>1000?filter.toFix(item.distance/1000,2)+"km":filter.toFix(item.distance,0)+"m"}} | |
102 | + </view> | |
103 | + </view> | |
104 | + </view> | |
105 | + <view class="fs24 xc-ash-9f">地址:{{item.fulladdress}}</view> | |
106 | + </view> | |
107 | + </view> | |
108 | + </view> | |
109 | + </block> | |
110 | + </view> | |
111 | + <!-- 门店列表底部 --> | |
112 | + <view class="store-bottom-frame"> | |
113 | + <view class="store-bottom flex-center"> | |
114 | + <view class="determine red-b fs28 white t-c" bindtap="sure_pick" data-openindstore="{{open_ind_store}}"> | |
115 | + 确定 | |
116 | + </view> | |
117 | + <!-- <view class="default t-c fs28" bindtap="set_def_pick" data-openindstore="{{open_ind_store}}"> | |
118 | + 设为默认 | |
119 | + </view> --> | |
120 | + </view> | |
121 | + </view> | |
122 | + </block> | |
123 | + <block wx:else> | |
124 | + <view class="popup-top flex-space-between"> | |
125 | + <text class="fs32 nearby_store">门店分类选择</text> | |
126 | + <view> | |
127 | + <view> | |
128 | + <icon bindtap="close_popup" class="modal-closes" color="black" size="22" type="cancel"></icon> | |
129 | + </view> | |
130 | + <view class="felx choose_mores" bindtap="returns"> | |
131 | + <text class="fs26 red-co">返回</text> | |
132 | + </view> | |
133 | + </view> | |
134 | + </view> | |
135 | + <view class="sort_store_list"> | |
136 | + <view class="sort-store-frame" wx:for="{{all_sto}}" data-index="{{index}}" bindtap="choice_sort_store" data-region="{{item.name}}"> | |
137 | + <view class="sort-store flex-vertical-between"> | |
138 | + <view class="fs30" di>{{item.name}}</view> | |
139 | + <view class="black_rights-frame"> | |
140 | + <view class="black_rights"></view> | |
141 | + </view> | |
142 | + </view> | |
143 | + </view> | |
144 | + </view> | |
145 | + </block> | |
146 | + </view> | |
147 | +</block> | ... | ... |
components/store_popup/store_popup.wxss
0 → 100644
1 | +/* 中间等距两边贴边 */ | |
2 | +.flex-space-between{ | |
3 | + display: flex; | |
4 | + justify-content:space-between; | |
5 | +} | |
6 | +.flex{display: flex} | |
7 | +/* 垂直居中 */ | |
8 | +.flex-vertical{ | |
9 | + display:flex; | |
10 | + align-items:center; | |
11 | + } | |
12 | + /* 圆 */ | |
13 | +.circle{ | |
14 | + border-radius: 50%; | |
15 | + -moz-border-radius: 50%; | |
16 | + -webkit-border-radius: 50%; | |
17 | +} | |
18 | +/* 7.26 */ | |
19 | +.white{ | |
20 | + color: #fff; | |
21 | +} | |
22 | +.red-b{ | |
23 | + background: #d60021; | |
24 | +} | |
25 | +.fs20{ | |
26 | + font-size: 20rpx; | |
27 | +} | |
28 | +.xc-ash{ | |
29 | + color: #b9b9b9; | |
30 | + } | |
31 | +/* 水平垂直 */ | |
32 | +.flex-center{ | |
33 | + display:flex; | |
34 | + justify-content:center; | |
35 | + align-items:center; | |
36 | + } | |
37 | +/* 垂直居中 中间等距两边贴边 7.13*/ | |
38 | +.flex-vertical-between{ | |
39 | + display:flex; | |
40 | + align-items:center; | |
41 | + justify-content:space-between; | |
42 | + } | |
43 | + .xc-ash{ | |
44 | + color: #b9b9b9; | |
45 | + } | |
46 | + .fs30{ | |
47 | + font-size:30rpx; | |
48 | +} | |
49 | +.xc-black3{ | |
50 | + color: #333; | |
51 | +} | |
52 | + .fs28{ | |
53 | + font-size: 28rpx; | |
54 | +} | |
55 | + .fs32{ | |
56 | + font-size:32rpx; | |
57 | +} | |
58 | +.fs26{ | |
59 | + font-size: 26rpx; | |
60 | +} | |
61 | +.red-co{ | |
62 | + color: #d60021; | |
63 | + | |
64 | +} | |
65 | +/* 门店分类列表 */ | |
66 | +.sort_store_list { | |
67 | + max-height: 700rpx; | |
68 | + overflow: hidden; | |
69 | + overflow-y: scroll; | |
70 | + width: 95%; | |
71 | + margin: auto; | |
72 | +} | |
73 | + | |
74 | +.sort_store_list .sort-store-frame { | |
75 | + width: 100%; | |
76 | + height: 100rpx; | |
77 | + line-height: 100rpx; | |
78 | + border-bottom: 1rpx solid #eee; | |
79 | + | |
80 | +} | |
81 | + | |
82 | +.sort_store_list .sort-store-frame .sort-store { | |
83 | + width: 94.5%; | |
84 | + margin: auto; | |
85 | +} | |
86 | +.black_rights-frame { | |
87 | + width: 50%; | |
88 | +} | |
89 | +.black_rights-frame .black_rights { | |
90 | + border-top: 3rpx solid; | |
91 | + border-right: 3rpx solid; | |
92 | + transform: rotate(45deg); | |
93 | + display: inline-block; | |
94 | + width: 20rpx; | |
95 | + height: 20rpx; | |
96 | +} | |
97 | +/* 选择门店的弹窗 */ | |
98 | +.mongolia-layer { | |
99 | + position: fixed; | |
100 | + left: 0; | |
101 | + top: 0; | |
102 | + right: 0; | |
103 | + bottom: 0; | |
104 | + z-index: 11; | |
105 | + background: rgba(0, 0, 0, 0.4); | |
106 | + width: 100%; | |
107 | + height: 91.9%; | |
108 | + | |
109 | +} | |
110 | + | |
111 | +.popup-frame { | |
112 | + position: fixed; | |
113 | + z-index: 20; | |
114 | + background: white; | |
115 | + width: 100%; | |
116 | + border-radius: 20rpx 20rpx 0 0; | |
117 | + height: auto; | |
118 | + bottom: 0; | |
119 | +} | |
120 | + | |
121 | +.popup-top { | |
122 | + border-bottom: 1rpx solid #eee; | |
123 | + height: 155rpx; | |
124 | + width: 95%; | |
125 | + margin: auto; | |
126 | + line-height: 155rpx; | |
127 | + | |
128 | +} | |
129 | +.fs32{ | |
130 | + font-size: 32rpx; | |
131 | +} | |
132 | +.nearby_store { | |
133 | + margin-left: 17rpx; | |
134 | +} | |
135 | +.modal-closes { | |
136 | + position: absolute; | |
137 | + right: 30rpx; | |
138 | + top: -15rpx; | |
139 | + height: 25rpx; | |
140 | + | |
141 | +} | |
142 | +.choose_mores { | |
143 | + margin-top: 30rpx; | |
144 | + margin-right: 15rpx; | |
145 | + | |
146 | +} | |
147 | +.choose_more { | |
148 | + margin-top: 40rpx; | |
149 | + margin-right: 20rpx; | |
150 | + | |
151 | +} | |
152 | +.bg_rights { | |
153 | + border-top: 2rpx solid; | |
154 | + border-right: 2rpx solid; | |
155 | + transform: rotate(45deg); | |
156 | + display: inline-block; | |
157 | + width: 15rpx; | |
158 | + height: 15rpx; | |
159 | + border-color: #da0b31; | |
160 | +} | |
161 | +.searchbar { | |
162 | + height: 95rpx; | |
163 | + border-bottom: 2rpx solid rgb(238, 238, 238); | |
164 | +} | |
165 | +.storeListpadd { | |
166 | + padding: 0rpx 31rpx; | |
167 | +} | |
168 | +.search { | |
169 | + width: 125rpx; | |
170 | + height: 45rpx; | |
171 | + line-height: 45rpx; | |
172 | + background-color: rgb(219, 27, 52); | |
173 | + border-radius: 30rpx; | |
174 | + color: rgb(255, 255, 255); | |
175 | +} | |
176 | +.inputstore { | |
177 | + width: 510rpx; | |
178 | + height: 43rpx; | |
179 | + line-height: 43rpx; | |
180 | + border-radius: 30rpx; | |
181 | + border: 2rpx solid rgb(238, 238, 238); | |
182 | + padding-left: 30rpx; | |
183 | +} | |
184 | + | |
185 | +.store-list { | |
186 | + width: 95%; | |
187 | + min-height: 300rpx; | |
188 | + overflow-y: scroll; | |
189 | + margin: auto; | |
190 | + max-height: 610rpx; | |
191 | +} | |
192 | +.store-list .store_choose { | |
193 | + width: 100%; | |
194 | + height: 120rpx; | |
195 | + line-height: 125rpx; | |
196 | + border-bottom: 1rpx solid #eee; | |
197 | + padding: 10rpx 0; | |
198 | +} | |
199 | + | |
200 | +.store-list .store_choose .store { | |
201 | + width: 100%; | |
202 | + margin: auto; | |
203 | + line-height: 37rpx; | |
204 | + padding-left: 20rpx; | |
205 | + | |
206 | +} | |
207 | +.xc-hook { | |
208 | + width: 35rpx; | |
209 | + height: 35rpx; | |
210 | + transform: rotate(-145deg); | |
211 | + line-height: 37rpx; | |
212 | + text-align: center; | |
213 | +} | |
214 | +.address-frame { | |
215 | + width: 93%; | |
216 | + margin-left: 7rpx; | |
217 | + | |
218 | +} | |
219 | +.address_name { | |
220 | + margin-right: 10rpx; | |
221 | + width: 360rpx; | |
222 | + | |
223 | +} | |
224 | +.fs24{ | |
225 | + font-size: 24rpx !important; | |
226 | +} | |
227 | +.xc-ash-9f{ | |
228 | + color: #9fa1a0; | |
229 | + | |
230 | +} | |
231 | +.t-c { | |
232 | + text-align: center; | |
233 | +} | |
234 | +.distance { | |
235 | + padding-left: 20rpx; | |
236 | + padding-right: 20rpx; | |
237 | + background: #eee; | |
238 | + border-radius: 20rpx; | |
239 | + /* margin-right: 5rpx; */ | |
240 | + color: #999; | |
241 | + height: 38rpx; | |
242 | + line-height: 38rpx; | |
243 | + position: relative; | |
244 | + top: 5rpx; | |
245 | + | |
246 | +} | |
247 | +.address-val { | |
248 | + height: 38rpx; | |
249 | + line-height: 38rpx; | |
250 | + | |
251 | +} | |
252 | +.butttem5 { | |
253 | + margin-bottom: 5rpx; | |
254 | +} | |
255 | +.store-bottom-frame { | |
256 | + width: 95%; | |
257 | + margin: auto; | |
258 | + | |
259 | +} | |
260 | +.store-bottom { | |
261 | + width: 85%; | |
262 | + margin: auto; | |
263 | + height: 90rpx; | |
264 | +} | |
265 | +.determine { | |
266 | + width: 260rpx; | |
267 | + height: 55rpx; | |
268 | + border-radius: 50rpx; | |
269 | + line-height: 55rpx; | |
270 | +} | |
271 | + | |
272 | +.default { | |
273 | + width: 260rpx; | |
274 | + height: 55rpx; | |
275 | + border: 3rpx solid #c8c8c8; | |
276 | + border-radius: 50rpx; | |
277 | + line-height: 55rpx; | |
278 | +} | |
279 | +.xc-hooks { | |
280 | + width: 30rpx; | |
281 | + height: 30rpx; | |
282 | + border: 1rpx solid #999; | |
283 | +} | |
0 | 284 | \ No newline at end of file | ... | ... |
pages/user/user_spsy/user_spsy.js
pages/user/user_spsy/user_spsy.json
pages/user/user_spsy/user_spsy.wxml
... | ... | @@ -13,10 +13,14 @@ |
13 | 13 | 已使用{{list[0].freebh}} |
14 | 14 | </view> --> |
15 | 15 | <view wx:if="{{is_use}}" class="btn1">已使用</view> |
16 | - <view wx:else bindtap="show_hxm" data-type="1" class="btn">立即使用</view> | |
16 | + <!-- <view wx:else bindtap="show_hxm" data-type="1" class="btn">立即使用</view> --> | |
17 | + <view wx:else bindtap="select_product" data-type="1" class="btn">选门店</view> | |
17 | 18 | <!-- <view bindtap="right_use" class="btn">立即使用</view></view> --> |
18 | 19 | </view> |
19 | 20 | </view> |
20 | 21 | |
21 | 22 | <!-- 弹出框扫描 --> |
22 | -<qr_code id="qc_com" bindclose="close"></qr_code> | |
23 | 23 | \ No newline at end of file |
24 | +<qr_code id="qc_com" bindclose="close"></qr_code> | |
25 | + | |
26 | +<!-- 门店选择弹窗 --> | |
27 | +<store_popup store="{{store}}" ></store_popup> | |
24 | 28 | \ No newline at end of file | ... | ... |