diff --git a/pages/cart/cart2/cart2.js b/pages/cart/cart2/cart2.js index beeae0f..1033be3 100644 --- a/pages/cart/cart2/cart2.js +++ b/pages/cart/cart2/cart2.js @@ -105,6 +105,8 @@ Page({ //-- order_prom_list -- order_prom_list_cart:null, + ispt_goods:0, //是否平摊至单品,0要平摊 1不平摊 + }, onLoad: function(t) { @@ -122,7 +124,8 @@ Page({ //先获取是否有关闭使用优惠券 getApp().getConfig2(function (ee) { var json_d = JSON.parse(ee.switch_list); - th.setData({ is_close_quan: json_d.is_close_quan,sales_rules:ee.sales_rules }); + th.data.ispt_goods=json_d.ispt_goods; //是不是平摊到单品的控制参数赋值 + th.setData({ is_close_quan: json_d.is_close_quan,sales_rules:ee.sales_rules}); //-----先获取物流,再获取用户信息,再展示页面----- th.get_wuliu(th.get_info(th.show_page)); }) @@ -638,19 +641,17 @@ Page({ if(th.data.cartlist) c_arr[i].check_quan_ware_list= th.data.cartlist[i].check_quan_ware_list; //优惠券优惠什么商品 } - var cart_item=c_arr[i]; + var cart_item=c_arr[i]; //就是每一单的意思 var pickid=cart_item.pickup_id; var o_price=0; var o_shipping_price=0,goods_weight=-1, goods_piece=-1; - var item=c_arr[i].goods; - //--获取物流code-- + var item=c_arr[i].goods; //就是每一单的从表的意思 //--------循环计算总价----------- for(var j=0;j b["goods_price"]) { + return -1; + } else { + return 0; + } + } else { + if (a["goods_num"] > b["goods_num"]) { + return 1; + } else { + return -1; + } + } + } + + //进行排序 + item_map.goods.sort(sort_fun); + //这个位置就要开始平摊优惠到优惠活动的单品 + var account_all = 0; + var per = (item_map.price - item_map.prom_price) / item_map.price; //优惠单价 + + //比例太小的时候,就不进行平摊 + if (per < 0.001) { + item_map.goods[0].account_yu = item_map.price - item_map.prom_price; + } else { + per = Math.floor(1000 * per) / 1000; //保留3位小数 + for (var i in item_map.goods) { + var m_item = item_map.goods[i]; + var m_all_amount = m_item.goods_price * m_item.goods_num - m_item.goods_price * m_item.goods_num * per; + var account = Math.floor(100 * m_all_amount /m_item.goods_num) / 100; + if (account) { + item_map.goods[i].account = account; + account_all += account * m_item.goods_num; //累加总实收 + } + } + //算出余数 + var yu = account_all - item_map.prom_price; + if (yu != 0) { + item_map.goods[0].account_yu = parseFloat(yu.toFixed(2)); + } + } + } + o_price-=(item_map.price-item_map.prom_price); //如果有限制使用优惠券,就要减掉参与的活动商品的钱 if(!item_map.is_xz_yh) q_conditin=o_price; } + + //--------循环计算商品是不是包邮,是不是使用优惠券,此时循环是商品从表----------- + for(var j=0;j0 && !th.data.ispt_goods){ + var per=th.data.formData.cut_price/(goods.goods_price*goods.goods_num) //优惠单价 + //比例太小不平摊 + if(per<0.001){ + goods.account_yu=th.data.formData.cut_price; + }else{ + per=Math.floor(per*1000)/1000; + var all_amount=goods.goods_price*goods.goods_num-goods.goods_price*goods.goods_num*per; //商品总实收 + var account=Math.floor(all_amount/goods.goods_num*100)/100; //实收单价保留俩位小数 + var account_yu=account*goods.goods_num-(goods.goods_price*goods.goods_num-th.data.formData.cut_price); //算出余数 + goods.account=account; + goods.account_yu=parseFloat(account_yu.toFixed(2)); + } + } item.order_goods.push(goods); //--如果有赠品的时候,赠品也要提交--- @@ -1598,6 +1671,12 @@ Page({ 'store_id': oo.stoid, }; + //把优惠的平摊结果写进去 + if(g_item.account){ + goods.account=g_item.account; + goods.account_yu=g_item.account_yu; + } + //--把券的钱,写入从表--- if(t_item.quan_youhui_list && t_item.coupon_price ){ for(var kk in t_item.quan_youhui_list ){ @@ -2657,7 +2736,7 @@ Page({ }) }, - //--- 加入优惠活动的映射中 --- + //--- 加入优惠活动的映射中,同时要有一个good列表 --- add_prom_goods_map:async function (item) { var th=this; var pickid=item.pick_id; @@ -2669,6 +2748,8 @@ Page({ var ob=map[pickid][item.prom_id]; ob.price+=item.goods_price*item.goods_num; ob.goods_num+=item.goods_num; + ob.goods.push({goods_id:item.goods_id,goods_price:item.goods_price,goods_num:item.goods_num}); + }else{ var prom=null; await getApp().request.promiseGet("/api/weshop/promgoods/get/"+os.stoid+"/"+item.prom_id,{}).then(res=>{ @@ -2680,6 +2761,8 @@ Page({ ob.goods_num=item.goods_num; ob.is_bz=prom.is_bz; ob.is_xz_yh=prom.is_xz_yh; + ob.goods=new Array(); + ob.goods.push({goods_id:item.goods_id,goods_price:item.goods_price,goods_num:item.goods_num}); map[pickid][item.prom_id]=ob; } }else{ @@ -2693,6 +2776,9 @@ Page({ ob.goods_num=item.goods_num; ob.is_bz=prom.is_bz; ob.is_xz_yh=prom.is_xz_yh; + ob.goods=new Array(); + ob.goods.push({goods_id:item.goods_id,goods_price:item.goods_price,goods_num:item.goods_num}); + var obj={}; obj[item.prom_id]=ob; map[pickid]=obj; @@ -2700,8 +2786,8 @@ Page({ } }, - //计算立即购买赠品的物流费用 - get_now_gift_goods_wuliu:function (code, o_shipping_price, user_addr, gift_freight_free,allpice, rs,shipping_price,no_by_data) { + //计算立即购买赠品的物流费用 + get_now_gift_goods_wuliu:function (code, o_shipping_price, user_addr, gift_freight_free,allpice, rs,shipping_price,no_by_data) { var good=this.data.buy_now_gift_goods; var goods_weight=-1, goods_piece=-1; var gift_shipping_price=0; @@ -2739,8 +2825,14 @@ Page({ goods_piece, user_addr, gift_freight_free, allpice, rs); return t_shipping_price+shipping_price; - } + }, + //从优惠的映射中拿出商品从表的item + item_map_get_goods:function(goods_id,map){ + for(var i in map.goods){ + if(map.goods[i].goods_id==goods_id) return map.goods[i]; + } + } });