From f8d339ccdba0cfbc2fd9c5435e61890ef635ac42 Mon Sep 17 00:00:00 2001 From: yvan.ni Date: Fri, 7 Apr 2023 16:46:17 +0800 Subject: [PATCH] 组合购的bug优化 --- packageB/pages/zuhegou/index/index.js | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------- pages/cart/cart/cart.js | 5 ++++- 2 files changed, 93 insertions(+), 82 deletions(-) diff --git a/packageB/pages/zuhegou/index/index.js b/packageB/pages/zuhegou/index/index.js index 81a4317..5febaef 100644 --- a/packageB/pages/zuhegou/index/index.js +++ b/packageB/pages/zuhegou/index/index.js @@ -2221,105 +2221,113 @@ Page({ var delete_num = 0; var zhqty_len = 0; //几个超量倍增 var be = parseInt(no_in_arr.length / this.data.act.zhbuyqty); //看一下是几倍 - if (this.data.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) { - 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) + //如果有总数控制的时候 + if(this.data.act.zh_num){ + var be1=this.data.act.zh_num-this.data.act.zh_buy_num-1; + if(be1 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) { + 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['num']; - })); - let new_arr = zhqty_bz_arr.filter(ii => { - return ii['num'] == 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; + zhqty_len = 1; + let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) { + return o['num']; + })); + let new_arr = zhqty_bz_arr.filter(ii => { + return ii['num'] == 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 = Math.floor(num / vv.zhqty) + //超量倍增不满足,倍数要减去多出得 + // 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; } - bz_num_ok = be * vv.zhqty; - } - for (let i = 0; i < zhqty_bz.length; i++) { - let item1 = zhqty_bz[i]; - for (let j = 0; j < be * item1['zhqty']; j++) { + 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) { + // delete_num++ + no_in_arr.splice(index, 1) + } + } + } + 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 item1.goods_id === i.goods_id + return vv.goods_id === i.goods_id }) if (index > -1) { - // delete_num++ + delete_num++ no_in_arr.splice(index, 1) } } - } - 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) - } + zhqty_len = 1; } - } else { - zhqty_len = 1; } } - } - if (!zhqty_len) { - //多个超量就不用pop了 - aprice += be * aprice; - let pop_num = be * this.data.act.zhbuyqty - delete_num; - for (var m = 0; m < pop_num; m++) { - no_in_arr.pop(); + if (!zhqty_len) { + //多个超量就不用pop了 + aprice += be * aprice; + let pop_num = be * this.data.act.zhbuyqty - delete_num; + for (var m = 0; m < pop_num; m++) { + no_in_arr.pop(); + } } } + } //算一下剩余的钱 diff --git a/pages/cart/cart/cart.js b/pages/cart/cart/cart.js index 74f0497..728432e 100644 --- a/pages/cart/cart/cart.js +++ b/pages/cart/cart/cart.js @@ -550,7 +550,7 @@ Page({ } //-- 如果有优惠促销,和阶梯促销,要看下有没有组合购,搭配购,看一下优惠促销和阶梯促销谁是指定商品参与的 -- - if(item.prom_type==3 || item.prom_type==10){ + if(item.prom_type==0 || item.prom_type==3 || item.prom_type==10){ var c_prom_type=0; var c_prom_id=0; @@ -569,6 +569,7 @@ Page({ if(zh_fd && zh_fd.length){ c_prom_type=zh_fd[0].prom_type; c_prom_id=zh_fd[0].act_id; + return; } //-- 先看一下有没有搭配购 -- @@ -578,6 +579,7 @@ Page({ if(dp_fd && dp_fd.length){ c_prom_type=dp_fd[0].prom_type; c_prom_id=dp_fd[0].act_id; + return; } //-- 先看一下有没有指定优惠促销 -- @@ -587,6 +589,7 @@ Page({ if(yh_fd && yh_fd.length){ c_prom_type=yh_fd[0].prom_type; c_prom_id=yh_fd[0].act_id; + return; } //-- 先看一下有没有指定阶梯促销 -- -- libgit2 0.21.4