diff --git a/packageE/pages/cart/cart2/cart2.js b/packageE/pages/cart/cart2/cart2.js index b862bc7..89ba542 100644 --- a/packageE/pages/cart/cart2/cart2.js +++ b/packageE/pages/cart/cart2/cart2.js @@ -126,7 +126,14 @@ Page({ tabs: ['门店自提', '快递邮寄'], currentTabIndex: 1, - in_zhact_gdmap: {}, //不同门店参与同一活动的限购 + in_zhact_gdmap: {}, //不同门店参与同一活动的限购,这些都是map表,很 + in_zhact:{}, //组合购活动在列表中的显示 + in_yhact:{}, //优惠活动在列表中的显示 + + in_zhact_gdmap_new: {}, //不同门店参与同一活动的限购,这些都是map表,是多促销互动专用,不能和in_zhact_gdmap重叠 + in_zhact_new:{}, //组合购活动在列表中的显示 是多促销互动专用,不能和in_zhact重叠 + in_yhact_new:{}, //组合购活动在列表中的显示 是多促销互动专用,不能和in_yhact重叠 + hid_inp: 1, user_note: "", zhhe_act_map: {}, //组合活动的map表 @@ -7197,6 +7204,9 @@ Page({ fd.goods.push(c_item); }else{ var p_item={key:key,prom_type:n_item.prom_type,prom_id:n_item.prom_id,goods:[],act:n_item}; + if(n_item.prom_type==7){ + p_item.zh_act=n_item.zh_pro; + } p_item.goods.push(c_item); cx_act_map.push(p_item); } diff --git a/packageE/pages/cart/cart2/zh_calculate.js b/packageE/pages/cart/cart2/zh_calculate.js index b5298b0..e709d4f 100644 --- a/packageE/pages/cart/cart2/zh_calculate.js +++ b/packageE/pages/cart/cart2/zh_calculate.js @@ -58,13 +58,12 @@ module.exports = { var zh_b_num = item_j.promgoodsbuynum; if (item.buyqty > 0) { - var key = item.goods_id + "" + act.id; + var key = item.goods_id + "." + act.id; var cbuy = item.buyqty - zh_b_num; if (th.data.in_zhact_gdmap[key]) { var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap[key]; } - //当可买的数量为0 if (cbuy <= 0) { item.num = 0; @@ -129,7 +128,7 @@ module.exports = { for (var u in act_goos) { var ite = act_goos[u]; if (ite.buyqty > 0 && ite.num > 0) { - var key = ite.goods_id + "" + act.id; + var key = ite.goods_id + "." + act.id; if (th.data.in_zhact_gdmap[key]) { th.data.in_zhact_gdmap[key] += ite.num; } else { @@ -156,7 +155,7 @@ module.exports = { var delete_num=0; //看一下是几倍 - let be = parseInt(no_in_arr.length / act.zhbuyqty); + let be1 = parseInt(no_in_arr.length / act.zhbuyqty); //如果有总数控制的时候 if(act.zh_num){ var be1=act.zh_num-act.zh_buy_num-1; @@ -165,7 +164,7 @@ module.exports = { if(be) { if (act.is_bzyh && zhqty_bz.length > 0) { - if (zhqty_bz.length > 1) { + let zhqty_bz_arr = []; let zhqty_bz_flag = this.zhqty_bz_fun(zhqty_bz, be, zhqty_bz_arr); if (zhqty_bz_flag) { @@ -184,28 +183,12 @@ module.exports = { } else { zhqty_len = 1; let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) { - return o['num']; + return o['be']; })); let new_arr = zhqty_bz_arr.filter(ii => { - return ii['num'] == min_bz_num; + return ii['be'] == min_bz_num; }) - var vv = new_arr[0]; - var bz_num = be * new_arr[0].zhqty; //超量倍增 - var num = min_bz_num - new_arr[0].zhqty; //购买数量减去超量 - bz_num_ok = bz_num - num; - if (bz_num_ok <= 0) { - //超量倍增满足,超量倍增就等于倍数 - bz_num_ok = bz_num; - } else { - //超量倍增不满足,倍数要减去多出得 - // be=be-bz_num_ok; - if (num % vv.zhqty == 0) { - be = num / vv.zhqty; - } else { - be = Math.floor(num / vv.zhqty) - } - bz_num_ok = be * vv.zhqty; - } + var be = new_arr[0].be; for (let i = 0; i < zhqty_bz.length; i++) { let item1 = zhqty_bz[i]; @@ -221,42 +204,11 @@ module.exports = { } aprice += be * aprice; } - } else { - var vv = zhqty_bz[0]; - var bz_num = be * vv.zhqty; //超量倍增 - var num = vv['num'] - vv.zhqty; //购买数量减去超量 - if (num > 0) { - bz_num_ok = bz_num - num; - if (bz_num_ok <= 0) { - //超量倍增满足,超量倍增就等于倍数 - bz_num_ok = bz_num; - } else { - //超量倍增不满足,倍数要减去多出得 - // be=be-bz_num_ok; - if (num % vv.zhqty == 0) { - be = num / vv.zhqty; - } else { - be = Math.floor(num / vv.zhqty) - } - bz_num_ok = be * vv.zhqty; - } - for (let j = 0; j < bz_num_ok; j++) { - let index = no_in_arr.findIndex(i => { - return vv.goods_id === i.goods_id - }) - if (index > -1) { - delete_num++ - no_in_arr.splice(index, 1) - } - } - } else { - zhqty_len = 1; - } - } + } if (!zhqty_len) { - aprice += be * act.zhprice; - let pop_num = be * act.zhbuyqty - delete_num; + aprice += be1 * act.zhprice; + let pop_num = be1 * act.zhbuyqty - delete_num; for (var m = 0; m < pop_num; m++) { no_in_arr.pop(); } @@ -538,6 +490,15 @@ module.exports = { let num = item['num'] - item['zhqty']; //购买数量减去超量 if (bz_num > num) { zhqty_bz_flag=false; + + var be=0; + if (num % vv.zhqty == 0) { + be = num / vv.zhqty; + } else { + be = Math.floor(num / vv.zhqty) + } + item.be=item; + zhqty_bz_arr.push(item); // zhqty_bz.splice(i,1) } @@ -560,6 +521,27 @@ module.exports = { var goods =gdlist; var all_num=0; var need_to_buy=0; + var all_zhqty=0; + //-- 是综合考虑到组合购的总数量和限购数量 -- + var min_can_buy=-1; + var aid=act.id; + + let no_in_arr = []; //剩余的未加入组合购 + let out_arr = []; //超出活动限购的商品放入 + + //-- 判断组合购的数量是不是到了 -- + if(act.zh_num>0){ + if(th.data.in_zhact_new[aid] && th.data.in_zhact_new[aid]+act.zh_buy_num>=act.zh_num ){ + return false; + }else{ + min_can_buy= act.zh_num-act.zh_buy_num-th.data.in_zhact_new[aid]; + } + } + if(act.buy_limit>0){ + + } + + for (var i in goods) { var item = goods[i]; var cart_num = get_num(item).goods_num; @@ -575,17 +557,25 @@ module.exports = { //-- 当商品有购买的时候,以及有限购的时候 -- if (item.buyqty > 0) { var cbuy = item.buyqty - zh_b_num; - var key = item.goods_id + "" + act.id; - if (th.data.in_zhact_gdmap_gp[key]) { - var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap_gp[key]; + var key = item.goods_id + "." + act.id; + if (th.data.in_zhact_gdmap[key]) { + var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap_new[key]; } //当可买的数量为0 if (cbuy <= 0) { item.num = 0; + out_arr.push({ + goods_id: item.goods_id, + num: cart_num + }) } else { if (cbuy >= cart_num) item.num = cart_num; else { item.num = cbuy; + out_arr.push({ + goods_id: item.goods_id, + num: cart_num - cbuy + }) } } } else { @@ -596,9 +586,24 @@ module.exports = { all_num += item.num; //当有起购数的控制的时候 if (item.zhqty) { + all_zhqty += item.zhqty; if (item.num < item.zhqty) { need_to_buy += item.zhqty - item.num; } + if (item.num > item.zhqty) { + for (let i = 0; i < item.num - item.zhqty; i++) { + no_in_arr.push({ + goods_id: item.goods_id, + }) + } + } + } + else { + for (let j = 0; j < item.num; j++) { + no_in_arr.push({ + goods_id: item.goods_id, + }) + } } } else { if (item.zhqty) { @@ -609,16 +614,126 @@ module.exports = { //当满足组合的要求:总数要满足,起购数要满足 if (all_num >= act.zhbuyqty && !need_to_buy) { + function sortData(a, b) { + return a.price - b.price + } + if (no_in_arr.length > 0) no_in_arr.sort(sortData); + if (act.zhbuyqty > all_zhqty) { + for (let n = 0; n < act.zhbuyqty - all_zhqty; n++) { + no_in_arr.pop(); + } + } + + //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增 + if (act.is_bz && no_in_arr.length >= act.zhbuyqty) { + var act_num=1; + var bz_num_ok = 0; //超量倍增是否满足 + var zhqty_len = 0; //几个超量倍增 + var delete_num = 0; + //看一下是几倍 + let be = parseInt(no_in_arr.length / act.zhbuyqty); + //如果有总数控制的时候 + if (act.zh_num) { + var be1 = act.zh_num - act.zh_buy_num - 1; + if (be1 < be) be = be1; + } + if(be) { + if (act.is_bzyh && zhqty_bz.length > 0) { + + let zhqty_bz_arr = []; + let zhqty_bz_flag = this.zhqty_bz_fun(zhqty_bz, be, zhqty_bz_arr); + if (zhqty_bz_flag) { + for (let i = 0; i < zhqty_bz.length; i++) { + var vv = zhqty_bz[i]; + for (let j = 0; j < be * vv['zhqty']; j++) { + let index = no_in_arr.findIndex(i => { + return vv.goods_id === i.goods_id + }) + if (index > -1) { + delete_num++ + no_in_arr.splice(index, 1) + } + } + } + } else { + zhqty_len = 1; + let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) { + return o['be']; + })); + let new_arr = zhqty_bz_arr.filter(ii => { + return ii['be'] == min_bz_num; + }) + + //-- 要看一下倍数还有没有 --- + be = new_arr[0].be; + if(be){ + for (let i = 0; i < zhqty_bz.length; i++) { + let item1 = zhqty_bz[i]; + for (let j = 0; j < be * item1['zhqty']; j++) { + let index = no_in_arr.findIndex(i => { + return item1.goods_id === i.goods_id + }) + if (index > -1) { + no_in_arr.splice(index, 1) + } + } + } + act_num+=be; + } + } + } + if (!zhqty_len) { + let pop_num = be * act.zhbuyqty - delete_num; + for (var m = 0; m < pop_num; m++) { + no_in_arr.pop(); + } + act_num+=be; + } + } + } + + let goods_map = {}; + //算一下剩余的商品 + if (no_in_arr.length) { + for (let ii in no_in_arr) { + let item = no_in_arr[ii]; + if (goods_map[item.goods_id]) { + var num = goods_map[item.goods_id]; + goods_map[item.goods_id] = ++num; + } else { + goods_map[item.goods_id] = 1; + } + } + } + //超量的部分也要计算一下 + if (out_arr.length) { + for (var m in out_arr) { + if (goods_map[item.goods_id]) { + var num = goods_map[item.goods_id]; + num += item.num + goods_map[item.goods_id] = num; + } else { + goods_map[item.goods_id] = item.num; + } + } + } + + //商品的列表 for (var u in goods) { var ite = goods[u]; - if (ite.buyqty > 0 && ite.num > 0) { - console.log(222, th.data.in_zhact_gdmap_gp); - var key = ite.goods_id + "" + act.id; - if (th.data.in_zhact_gdmap_gp[key]) { - th.data.in_zhact_gdmap_gp[key] += ite.num; + var cart_num = get_num(ite).goods_num; + + if (ite.buyqty > 0 && ite.cart_num > 0) { + var key = ite.goods_id + "." + act.id; + + if(goods_map[ite.goods_id]){} + + + if (th.data.in_zhact_gdmap_new[key]) { + th.data.in_zhact_gdmap_new[key] += ite.num; } else { - th.data.in_zhact_gdmap_gp[key] = ite.num; + th.data.in_zhact_gdmap_new[key] = ite.num; } } } diff --git a/pages/cart/cart/cart.js b/pages/cart/cart/cart.js index 4214ae9..76cea98 100644 --- a/pages/cart/cart/cart.js +++ b/pages/cart/cart/cart.js @@ -41,14 +41,18 @@ Page({ zhhe_prom: [], //组合活动需要显示差多少件 zuhe_map: {}, zuhe_map_good: {}, + in_zhact_gdmap: {}, //不同门店参与同一活动的限购 - in_zhact_gdmap_gp: {}, //不同门店参与同一活动的限购,新版判断的时候 + in_zhact:{}, //组合购活动在列表中的显示 + in_yhact:{}, //优惠活动在列表中的显示 ladder_map: {}, //阶梯促销需要的map promgoods_map: {}, promgoods_list: {} + + }, //-- 立即购买的时候,获取商品优惠活动,is_state判断是不是单个商品购买, @@ -4239,6 +4243,9 @@ Page({ fd.goods.push(c_item); }else{ var p_item={key:key,prom_type:n_item.prom_type,prom_id:n_item.prom_id,goods:[],act:n_item}; + if(n_item.prom_type==7){ + p_item.zh_act=n_item.zh_pro; + } p_item.goods.push(c_item); cx_act_map.push(p_item); } diff --git a/pages/cart/cart/cart.wxml b/pages/cart/cart/cart.wxml index a4d708a..703eb28 100644 --- a/pages/cart/cart/cart.wxml +++ b/pages/cart/cart/cart.wxml @@ -132,7 +132,7 @@ - + -1) return false; if(!show_can_cx) return false; return true; - }, - check_show:function(items,sele_prom_type){ - if([7,10].indexOf(sele_prom_type)>-1){ - if(!items.is_act_last) return false; - } - return true; } + } module.exports = { has_char: g_filters.has_char, diff --git a/pages/cart/cart/zh_calculate.js b/pages/cart/cart/zh_calculate.js index 54813a8..c4c07bb 100644 --- a/pages/cart/cart/zh_calculate.js +++ b/pages/cart/cart/zh_calculate.js @@ -134,7 +134,7 @@ module.exports = { if (item.buyqty > 0) { console.log(111, th.data.in_zhact_gdmap); var cbuy = item.buyqty - zh_b_num; - var key = item.goods_id + "" + act.id; + var key = item.goods_id + "." + act.id; if (th.data.in_zhact_gdmap[key]) { var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap[key]; } @@ -213,7 +213,7 @@ module.exports = { console.log(222, th.data.in_zhact_gdmap); - var key = ite.goods_id + "" + act.id; + var key = ite.goods_id + "." + act.id; if (th.data.in_zhact_gdmap[key]) { th.data.in_zhact_gdmap[key] += ite.num; } else { @@ -521,7 +521,7 @@ module.exports = { return zhqty_bz_flag; }, - //-- 判断组合购有没有满足 --- + //-- 判断组合购有没有满足,只有在检查的时候,要用新的 --- ch_zh_ok(act,gdlist,c_goods,th){ //-- 寻找一下 -- function get_num(ite) { @@ -551,9 +551,9 @@ module.exports = { //-- 当商品有购买的时候,以及有限购的时候 -- if (item.buyqty > 0) { var cbuy = item.buyqty - zh_b_num; - var key = item.goods_id + "" + act.id; - if (th.data.in_zhact_gdmap_gp[key]) { - var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap_gp[key]; + var key = item.goods_id + "." + act.id; + if (th.data.in_zhact_gdmap[key]) { + var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap[key]; } //当可买的数量为0 if (cbuy <= 0) { @@ -590,11 +590,11 @@ module.exports = { var ite = goods[u]; if (ite.buyqty > 0 && ite.num > 0) { console.log(222, th.data.in_zhact_gdmap_gp); - var key = ite.goods_id + "" + act.id; - if (th.data.in_zhact_gdmap_gp[key]) { - th.data.in_zhact_gdmap_gp[key] += ite.num; + var key = ite.goods_id + "." + act.id; + if (th.data.in_zhact_gdmap[key]) { + th.data.in_zhact_gdmap[key] += ite.num; } else { - th.data.in_zhact_gdmap_gp[key] = ite.num; + th.data.in_zhact_gdmap[key] = ite.num; } } }