Commit 7821045ec8cc34e382b837297f1bed1a9dc3dd66
1 parent
d670eb09
购物车限购的bug优化
Showing
1 changed file
with
71 additions
and
29 deletions
pages/cart/cart/cart.js
@@ -66,6 +66,8 @@ Page({ | @@ -66,6 +66,8 @@ Page({ | ||
66 | 66 | ||
67 | //优惠促销活动的集合 | 67 | //优惠促销活动的集合 |
68 | yhcx_act_map: {}, | 68 | yhcx_act_map: {}, |
69 | + //-- 活动的购买数量的map -- | ||
70 | + act_buy_map:{} | ||
69 | }, | 71 | }, |
70 | 72 | ||
71 | 73 | ||
@@ -1190,24 +1192,27 @@ Page({ | @@ -1190,24 +1192,27 @@ Page({ | ||
1190 | // if (this.data.btn_click) { | 1192 | // if (this.data.btn_click) { |
1191 | // return false; | 1193 | // return false; |
1192 | // } | 1194 | // } |
1193 | - this.data.btn_click = 1; | ||
1194 | 1195 | ||
1195 | - var a = t.currentTarget.dataset.item; | ||
1196 | - var b = t.currentTarget.dataset.pitems; | ||
1197 | - a = this.data.requestData[b].goods[a]; | ||
1198 | - var e = a; | ||
1199 | - var th = this; | 1196 | + setTimeout(() => { |
1197 | + if (this.data.up_dating == 1) return false; | ||
1198 | + this.data.btn_click = 1; | ||
1199 | + var a = t.currentTarget.dataset.item; | ||
1200 | + var b = t.currentTarget.dataset.pitems; | ||
1201 | + a = this.data.requestData[b].goods[a]; | ||
1202 | + var e = a; | ||
1203 | + var th = this; | ||
1200 | 1204 | ||
1201 | - if (a = isNaN(t.detail.value) || t.detail.value < 1 ? 1 : parseInt(t.detail.value)) { | ||
1202 | - //this.clear_req(); | ||
1203 | - var s = { | ||
1204 | - goods_num: a, | ||
1205 | - goods_id: e.goods_id, | ||
1206 | - id: e.id, | ||
1207 | - store_id: oo.stoid | ||
1208 | - }; | ||
1209 | - th.postCardList(s, t.currentTarget.dataset.item, t.currentTarget.dataset.pitems); | ||
1210 | - } | 1205 | + if (a = isNaN(t.detail.value) || t.detail.value < 1 ? 1 : parseInt(t.detail.value)) { |
1206 | + //this.clear_req(); | ||
1207 | + var s = { | ||
1208 | + goods_num: a, | ||
1209 | + goods_id: e.goods_id, | ||
1210 | + id: e.id, | ||
1211 | + store_id: oo.stoid | ||
1212 | + }; | ||
1213 | + th.postCardList(s, t.currentTarget.dataset.item, t.currentTarget.dataset.pitems); | ||
1214 | + } | ||
1215 | + },200) | ||
1211 | }, | 1216 | }, |
1212 | 1217 | ||
1213 | //-------------加减数量的时候,要把show_can_cx清理掉, | 1218 | //-------------加减数量的时候,要把show_can_cx清理掉, |
@@ -2632,11 +2637,13 @@ Page({ | @@ -2632,11 +2637,13 @@ Page({ | ||
2632 | //console.log("累计:"+tfeel); | 2637 | //console.log("累计:"+tfeel); |
2633 | 2638 | ||
2634 | //-- 如果价格有发生变动,要更新界面中的价格显示 -- | 2639 | //-- 如果价格有发生变动,要更新界面中的价格显示 -- |
2635 | - if(item[c].goods_price!=th.data.dp_car[a].goods[c].goods_price){ | ||
2636 | - let txt='requestData['+a+'].goods['+c+'].goods_price'; | ||
2637 | - th.setData({ | ||
2638 | - [txt]:item[c].goods_price | ||
2639 | - }) | 2640 | + if(th.data.dp_car[a].goods) { |
2641 | + if (item[c].goods_price != th.data.dp_car[a].goods[c].goods_price) { | ||
2642 | + let txt = 'requestData[' + a + '].goods[' + c + '].goods_price'; | ||
2643 | + th.setData({ | ||
2644 | + [txt]: item[c].goods_price | ||
2645 | + }) | ||
2646 | + } | ||
2640 | } | 2647 | } |
2641 | 2648 | ||
2642 | } | 2649 | } |
@@ -3572,7 +3579,8 @@ Page({ | @@ -3572,7 +3579,8 @@ Page({ | ||
3572 | //-- 如果是商品的结算 -- | 3579 | //-- 如果是商品的结算 -- |
3573 | if (check_is_goods_selected) { | 3580 | if (check_is_goods_selected) { |
3574 | var glist = []; //商品数组 | 3581 | var glist = []; //商品数组 |
3575 | - var map = new Map(); //使用map值键进行运算 | 3582 | + var map = new Map(); //使用map值键进行运算 |
3583 | + this.data.act_buy_map={}; //使用map值键进行运算活动商品的购买数量 | ||
3576 | 3584 | ||
3577 | var g_arr = new Array(); //已选的商品列表 | 3585 | var g_arr = new Array(); //已选的商品列表 |
3578 | var user_id = getApp().globalData.user_id; | 3586 | var user_id = getApp().globalData.user_id; |
@@ -3612,7 +3620,7 @@ Page({ | @@ -3612,7 +3620,7 @@ Page({ | ||
3612 | //-- 判断门店配送是不是匹配 -- | 3620 | //-- 判断门店配送是不是匹配 -- |
3613 | if(_pick && _pick.distr_type!=0 && i_arr[j].distr_type!=0 && _pick.distr_type!= i_arr[j].distr_type){ | 3621 | if(_pick && _pick.distr_type!=0 && i_arr[j].distr_type!=0 && _pick.distr_type!= i_arr[j].distr_type){ |
3614 | getApp().confirmBox(i_arr[j].goods_name + "配送方式和门店不一致"); | 3622 | getApp().confirmBox(i_arr[j].goods_name + "配送方式和门店不一致"); |
3615 | - wx.hideLoading(); | 3623 | + th.clear_checkouting(); |
3616 | return false; | 3624 | return false; |
3617 | } | 3625 | } |
3618 | 3626 | ||
@@ -3653,7 +3661,7 @@ Page({ | @@ -3653,7 +3661,7 @@ Page({ | ||
3653 | var p_can_by=fd1.act.goodslimit-fd1.act.goodslimited; | 3661 | var p_can_by=fd1.act.goodslimit-fd1.act.goodslimited; |
3654 | if(i_arr[j].goods_num+ky_n>p_can_by){ | 3662 | if(i_arr[j].goods_num+ky_n>p_can_by){ |
3655 | getApp().confirmBox(i_arr[j].goods_name + "超出活动限购数量"+fd1.act.goodslimit+"件"); | 3663 | getApp().confirmBox(i_arr[j].goods_name + "超出活动限购数量"+fd1.act.goodslimit+"件"); |
3656 | - wx.hideLoading(); | 3664 | + th.clear_checkouting(); |
3657 | return false; | 3665 | return false; |
3658 | } | 3666 | } |
3659 | } | 3667 | } |
@@ -3736,9 +3744,18 @@ Page({ | @@ -3736,9 +3744,18 @@ Page({ | ||
3736 | } else { | 3744 | } else { |
3737 | map.set(i_arr[j].goods_id + "", i_arr[j].goods_num); | 3745 | map.set(i_arr[j].goods_id + "", i_arr[j].goods_num); |
3738 | } | 3746 | } |
3747 | + | ||
3748 | + var ky_0=i_arr[j].prom_type + "-"+i_arr[j].prom_id; | ||
3749 | + if(th.data.act_buy_map[ky_0]){ | ||
3750 | + var n11 = th.data.act_buy_map[ky_0]; | ||
3751 | + var n22 = parseInt(i_arr[j].goods_num) + parseInt(num11); | ||
3752 | + th.data.act_buy_map[ky_0]=n22 | ||
3753 | + }else{ | ||
3754 | + th.data.act_buy_map[ky_0]=i_arr[j].goods_num | ||
3755 | + } | ||
3756 | + | ||
3739 | } | 3757 | } |
3740 | //glist += i_arr[j].goods_id + ","; | 3758 | //glist += i_arr[j].goods_id + ","; |
3741 | - | ||
3742 | if(!i_arr[j].is_gift){ | 3759 | if(!i_arr[j].is_gift){ |
3743 | var et= {"prom_type":i_arr[j].prom_type,"prom_id":i_arr[j].prom_id,"goods_id":i_arr[j].goods_id}; | 3760 | var et= {"prom_type":i_arr[j].prom_type,"prom_id":i_arr[j].prom_id,"goods_id":i_arr[j].goods_id}; |
3744 | glist.push(et); | 3761 | glist.push(et); |
@@ -3993,7 +4010,6 @@ Page({ | @@ -3993,7 +4010,6 @@ Page({ | ||
3993 | //进行到下一步 | 4010 | //进行到下一步 |
3994 | th.cart_buy_next(glist,map,g_arr,checkArr7) | 4011 | th.cart_buy_next(glist,map,g_arr,checkArr7) |
3995 | 4012 | ||
3996 | - | ||
3997 | } else if (res.cancel) { | 4013 | } else if (res.cancel) { |
3998 | th.clear_checkouting(); | 4014 | th.clear_checkouting(); |
3999 | console.log('用户点击取消') | 4015 | console.log('用户点击取消') |
@@ -4133,6 +4149,11 @@ Page({ | @@ -4133,6 +4149,11 @@ Page({ | ||
4133 | var num = map.get(val.goods_id + ""); | 4149 | var num = map.get(val.goods_id + ""); |
4134 | 4150 | ||
4135 | var ky=val.goods_id + "-"+val.prom_type + "-"+val.prom_id; | 4151 | var ky=val.goods_id + "-"+val.prom_type + "-"+val.prom_id; |
4152 | + var ky2=val.prom_type + "-"+val.prom_id; | ||
4153 | + | ||
4154 | + var num = map.get(val.goods_id + ""); | ||
4155 | + var num2 = th.data.act_buy_map[ky2]; | ||
4156 | + | ||
4136 | var buyed = map_limit.get(ky); | 4157 | var buyed = map_limit.get(ky); |
4137 | var cur_buyed=act_buyed_map[ky] | 4158 | var cur_buyed=act_buyed_map[ky] |
4138 | 4159 | ||
@@ -4184,7 +4205,7 @@ Page({ | @@ -4184,7 +4205,7 @@ Page({ | ||
4184 | break; | 4205 | break; |
4185 | } | 4206 | } |
4186 | 4207 | ||
4187 | - if (num + buyed.promgoodsbuynum > val.buy_limit && val.buy_limit > 0) { | 4208 | + if (num2 + buyed.promgoodsbuynum > val.buy_limit && val.buy_limit > 0) { |
4188 | isok = 0; | 4209 | isok = 0; |
4189 | gname = val.goods_name; | 4210 | gname = val.goods_name; |
4190 | err="超出活动限购"; | 4211 | err="超出活动限购"; |
@@ -4205,7 +4226,7 @@ Page({ | @@ -4205,7 +4226,7 @@ Page({ | ||
4205 | break; | 4226 | break; |
4206 | } | 4227 | } |
4207 | } else { | 4228 | } else { |
4208 | - if (g_arr[i].goods_price != val.shop_price && g_arr[i].goods_price != val.prom_price && val.prom_price > 0) { | 4229 | + if (g_arr[i].goods_price != val.shop_price && g_arr[i].goods_price != val.prom_price && val.prom_price > 0 && (g_arr[i].prom_type==1 && g_arr[i].prom_type==2) ) { |
4209 | isok = 0; | 4230 | isok = 0; |
4210 | gname = val.goods_name; | 4231 | gname = val.goods_name; |
4211 | err="商品价格已经变化"; | 4232 | err="商品价格已经变化"; |
@@ -4466,7 +4487,12 @@ Page({ | @@ -4466,7 +4487,12 @@ Page({ | ||
4466 | //用来存销赠品的--2024-2-1 | 4487 | //用来存销赠品的--2024-2-1 |
4467 | let cart_zp=this.data.cart_zp; | 4488 | let cart_zp=this.data.cart_zp; |
4468 | //要清空一下门店下的赠品 | 4489 | //要清空一下门店下的赠品 |
4469 | - if(cart_zp[list.pid]){ | 4490 | + if(cart_zp[list.pid] && cart_zp[list.pid].goods && cart_zp[list.pid].goods.length){ |
4491 | + let ids = cart_zp[list.pid].goods.map(obj => obj.id); | ||
4492 | + //-- 批量把赠品删掉 -- | ||
4493 | + var url = '/api/weshop/cart/delIds/' + oo.stoid + '/' +getApp().globalData.user_id + '/' + ids.join(','); | ||
4494 | + getApp().request.delete(url, {}); | ||
4495 | + | ||
4470 | cart_zp[list.pid]={}; | 4496 | cart_zp[list.pid]={}; |
4471 | } | 4497 | } |
4472 | //主要判断有没有促销活动 | 4498 | //主要判断有没有促销活动 |
@@ -4820,6 +4846,22 @@ Page({ | @@ -4820,6 +4846,22 @@ Page({ | ||
4820 | this.data.duo_zp_num_arr = {}; | 4846 | this.data.duo_zp_num_arr = {}; |
4821 | //用来存销赠品的--2024-2-1 | 4847 | //用来存销赠品的--2024-2-1 |
4822 | let cart_zp=this.data.cart_zp; | 4848 | let cart_zp=this.data.cart_zp; |
4849 | + | ||
4850 | + if(cart_zp){ | ||
4851 | + let ids=[]; | ||
4852 | + for (const Ky in cart_zp) { | ||
4853 | + if(cart_zp[Ky].goods && cart_zp[Ky].goods.length) { | ||
4854 | + let ids0 = cart_zp[Ky].goods.map(obj => obj.id); | ||
4855 | + ids = [...ids, ...ids0]; | ||
4856 | + } | ||
4857 | + } | ||
4858 | + //调用接口把赠品删除 | ||
4859 | + if(ids.length>0){ | ||
4860 | + //-- 批量把赠品删掉 -- | ||
4861 | + var url = '/api/weshop/cart/delIds/' + oo.stoid + '/' + getApp().globalData.user_id + '/' + ids.join(','); | ||
4862 | + getApp().request.delete(url, {}); | ||
4863 | + } | ||
4864 | + } | ||
4823 | //要清空一下赠品数组 | 4865 | //要清空一下赠品数组 |
4824 | cart_zp={}; | 4866 | cart_zp={}; |
4825 | 4867 |