Commit 1d3825f1e78d0a68414e3c954fa23ae7aed7472f
1 parent
b03a4dc6
包邮模板, 超重运费计算的bug优化
Showing
1 changed file
with
106 additions
and
41 deletions
pages/cart/cart2/cart2.js
| ... | ... | @@ -1378,6 +1378,15 @@ Page({ |
| 1378 | 1378 | wx.showLoading({ |
| 1379 | 1379 | title: "处理中." |
| 1380 | 1380 | }) |
| 1381 | + | |
| 1382 | + //是不是区域包邮 | |
| 1383 | + th.data.is_area_by=0; | |
| 1384 | + //当不是区域不包邮的时候,没有不包邮商品的时候 | |
| 1385 | + th.data.free1=0; | |
| 1386 | + th.data.cut_o_shipping_price=0; | |
| 1387 | + th.data.cut_goods_piece=0; | |
| 1388 | + th.data.cut_goods_weight=0; | |
| 1389 | + | |
| 1381 | 1390 | var all_price = 0; //所有的商品总价 |
| 1382 | 1391 | var all_shipping_m = 0; //所有的物流总价 |
| 1383 | 1392 | var all_total_m = 0; //所有的订单应付总价 |
| ... | ... | @@ -1391,6 +1400,9 @@ Page({ |
| 1391 | 1400 | |
| 1392 | 1401 | var umoney = th.data.userinfo.user_money - th.data.txmon - (th.data.userinfo.frozen_money ? th.data.userinfo.frozen_money : 0); |
| 1393 | 1402 | var freight_free = ee.freight_free; //全场满多少包邮 |
| 1403 | + var free1=freight_free; | |
| 1404 | + | |
| 1405 | + | |
| 1394 | 1406 | var weight_free = ee.weight_free; //多少kg内包邮 |
| 1395 | 1407 | var no_ex_id = ee.no_ex_id; |
| 1396 | 1408 | var no_ex_good = null; |
| ... | ... | @@ -1503,16 +1515,6 @@ Page({ |
| 1503 | 1515 | } |
| 1504 | 1516 | o_price += item[j].goods_price * item[j].goods_num; |
| 1505 | 1517 | |
| 1506 | - //判断是否有设置限制重量包邮,先看商品有没有包邮 | |
| 1507 | - if (item[j]['is_past'] !== 1 && item[j]['exp_sum_type'] == 2) { | |
| 1508 | - if (goods_weight < 0) goods_weight = 0; | |
| 1509 | - //累积商品重量 每种商品的重量 * 数量 | |
| 1510 | - goods_weight += item[j]['weight'] * item[j]['goods_num']; | |
| 1511 | - if (weight_free > 0) { | |
| 1512 | - out_of_weight = (weight_free * 1000) - goods_weight; | |
| 1513 | - } | |
| 1514 | - } | |
| 1515 | - | |
| 1516 | 1518 | } |
| 1517 | 1519 | //判断是不是有组合购的金额 |
| 1518 | 1520 | var f_o_price = o_price; |
| ... | ... | @@ -1564,12 +1566,14 @@ Page({ |
| 1564 | 1566 | |
| 1565 | 1567 | th.data.is_no_past = 1; //不包邮标识符 |
| 1566 | 1568 | |
| 1569 | + var no_ex_good_arr = null; | |
| 1567 | 1570 | //--有不包邮区域,且不免运费,全场的计算,要减到优惠金额 和券的金额-- |
| 1568 | 1571 | if (no_ex_id && freight_free > 0 && (o_price - quan_price) >= freight_free && cart_item.exp_type == 0 && (by_qc.region_list || by_qc.goods_list)) { |
| 1569 | 1572 | //如果有设置不包邮区域的时候 |
| 1570 | 1573 | if (by_qc.region_list != "" && by_qc.region_list != null && by_qc.region_list != undefined) { |
| 1571 | 1574 | if (th.check_by_area(by_qc.region_list)) { |
| 1572 | 1575 | freight_free = 0; |
| 1576 | + th.data.is_area_by=1; | |
| 1573 | 1577 | //goods_weight = -1; |
| 1574 | 1578 | //out_of_weight = 0; |
| 1575 | 1579 | th.data.is_no_by[pickid] = 1; |
| ... | ... | @@ -1580,11 +1584,61 @@ Page({ |
| 1580 | 1584 | freight_free = 0; |
| 1581 | 1585 | //goods_weight = -1; |
| 1582 | 1586 | //out_of_weight = 0; |
| 1583 | - th.data.is_no_by[pickid] = 1; | |
| 1587 | + //th.data.is_no_by[pickid] = 1; | |
| 1584 | 1588 | no_ex_good = by_qc.goods_list; |
| 1589 | + if (no_ex_good) no_ex_good_arr = no_ex_good.split(','); | |
| 1585 | 1590 | } |
| 1586 | 1591 | } |
| 1587 | 1592 | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + var is_in_no_ex_goods_arr=0; | |
| 1597 | + var by_g_weight=0; | |
| 1598 | + //--------循环计算商品总物流----------- | |
| 1599 | + for (var jo = 0; jo < item.length; jo++) { | |
| 1600 | + //----------------如果是选择了物流--------------------- | |
| 1601 | + if (cart_item.exp_type == 0 && item[jo].is_free_shipping == 0 && th.data.user_addr != null){ | |
| 1602 | + | |
| 1603 | + //判断是否有设置限制重量包邮,先看商品有没有包邮 | |
| 1604 | + if(!no_ex_good_arr || no_ex_good_arr.indexOf(item[jo].goods_id + '')== -1){ | |
| 1605 | + if(!th.data.is_area_by) th.data.free1=free1; | |
| 1606 | + //此时是 模板里面没有不包邮商品列表或者是 该商品没有再不包邮商品列表礼包 | |
| 1607 | + if (item[jo]['is_past'] !== 1 && item[jo]['exp_sum_type'] == 2) { | |
| 1608 | + if (goods_weight < 0) goods_weight = 0; | |
| 1609 | + //累积商品重量 每种商品的重量 * 数量 | |
| 1610 | + goods_weight += item[jo]['weight'] * item[jo]['goods_num']; | |
| 1611 | + by_g_weight+=item[jo]['weight'] * item[jo]['goods_num']; | |
| 1612 | + if (weight_free > 0) { | |
| 1613 | + out_of_weight = (weight_free * 1000) - by_g_weight; | |
| 1614 | + }else{ | |
| 1615 | + out_of_weight= -by_g_weight; | |
| 1616 | + } | |
| 1617 | + } | |
| 1618 | + } | |
| 1619 | + //这个是在不包邮列表礼包 | |
| 1620 | + else if(no_ex_good_arr.indexOf(item[jo].goods_id + '') > -1){ | |
| 1621 | + is_in_no_ex_goods_arr=1; | |
| 1622 | + if (item[jo]['is_past'] !== 1 && item[jo]['exp_sum_type'] == 2) { | |
| 1623 | + if (goods_weight < 0) goods_weight = 0; | |
| 1624 | + //累积商品重量 每种商品的重量 * 数量 | |
| 1625 | + goods_weight += item[jo]['weight'] * item[jo]['goods_num']; | |
| 1626 | + } | |
| 1627 | + | |
| 1628 | + } | |
| 1629 | + } | |
| 1630 | + } | |
| 1631 | + | |
| 1632 | + //当商品没有超出的时候 | |
| 1633 | + if(out_of_weight>=0){ | |
| 1634 | + out_of_weight= -by_g_weight; | |
| 1635 | + }else{ | |
| 1636 | + out_of_weight= -weight_free * 1000; | |
| 1637 | + } | |
| 1638 | + | |
| 1639 | + //所有的商品都不在不包邮商品列表,freight_free为0的时候,以及不是区域包邮 | |
| 1640 | + if(!is_in_no_ex_goods_arr && !freight_free && !th.data.is_area_by) freight_free=free1; | |
| 1641 | + | |
| 1588 | 1642 | //--如果是物流,且选择了地址,就要开始显示包邮券,且包邮券也已经优惠了优惠活动的金额-- |
| 1589 | 1643 | if (cart_item.exp_type == 0 && th.data.user_addr != null && !cart_item.is_xz_yh) { |
| 1590 | 1644 | //看是不是有调用过包邮券 |
| ... | ... | @@ -1669,23 +1723,20 @@ Page({ |
| 1669 | 1723 | if (no_ex_good) { |
| 1670 | 1724 | is_good_no_by = th.check_by_goods(no_ex_good, item[j].goods_id); |
| 1671 | 1725 | } |
| 1672 | - | |
| 1673 | 1726 | //如果达到全场包邮的条件,同时,没有地区不包邮,或者商品不包邮 并且没有超出重量 |
| 1727 | + /*-- | |
| 1674 | 1728 | if (o_price - quan_price >= freight_free && freight_free > 0 && !is_good_no_by && th.data.is_no_by[pickid] != 1 && out_of_weight >=0 ) { |
| 1675 | 1729 | continue; |
| 1676 | - } | |
| 1677 | - | |
| 1730 | + }--*/ | |
| 1678 | 1731 | //--如果是包邮券使用的情况下,如果商品是包邮的,那么就不进行计算-- |
| 1679 | 1732 | if (th.data.using_quan[pickid] && th.data.using_quan[pickid].isby == 1 && !is_good_no_by) { |
| 1680 | 1733 | continue; |
| 1681 | 1734 | } |
| 1682 | 1735 | |
| 1683 | - var no_ex_good_arr = null; | |
| 1684 | - if (no_ex_good) no_ex_good_arr = no_ex_good.split(','); | |
| 1685 | - | |
| 1736 | + //var no_ex_good_arr = null; | |
| 1737 | + //if (no_ex_good) no_ex_good_arr = no_ex_good.split(','); | |
| 1686 | 1738 | //----------------如果是选择了物流--------------------- |
| 1687 | - if (cart_item.exp_type == 0 && item[j].is_free_shipping == 0 && (!no_ex_good_arr || no_ex_good_arr.indexOf(item[j].goods_id + '') > -1)) { | |
| 1688 | - | |
| 1739 | + if (cart_item.exp_type == 0 && item[j].is_free_shipping == 0) { | |
| 1689 | 1740 | //如果地址不为空 |
| 1690 | 1741 | if (th.data.user_addr != null) { |
| 1691 | 1742 | switch (item[j]['exp_sum_type']) { |
| ... | ... | @@ -1693,14 +1744,6 @@ Page({ |
| 1693 | 1744 | //统一运费 |
| 1694 | 1745 | o_shipping_price += item[j]['uniform_exp_sum']; |
| 1695 | 1746 | break; |
| 1696 | - // case 2: | |
| 1697 | - // if (goods_weight < 0) goods_weight = 0; | |
| 1698 | - // //累积商品重量 每种商品的重量 * 数量 | |
| 1699 | - // goods_weight += item[j]['weight'] * item[j]['goods_num']; | |
| 1700 | - // if (weight_free > 0) { | |
| 1701 | - // out_of_weight = (weight_free * 1000) - goods_weight; | |
| 1702 | - // } | |
| 1703 | - // break; | |
| 1704 | 1747 | case 3: |
| 1705 | 1748 | if (goods_piece < 0) goods_piece = 0; |
| 1706 | 1749 | //累积商品数量 |
| ... | ... | @@ -1708,12 +1751,28 @@ Page({ |
| 1708 | 1751 | break; |
| 1709 | 1752 | } |
| 1710 | 1753 | } |
| 1711 | - }else{ | |
| 1712 | 1754 | |
| 1755 | + | |
| 1756 | + if(!no_ex_good_arr || no_ex_good_arr.indexOf(item[j].goods_id + '')== -1){ | |
| 1757 | + switch (item[j]['exp_sum_type']) { | |
| 1758 | + case 1: | |
| 1759 | + //统一运费 | |
| 1760 | + th.data.cut_o_shipping_price += item[j]['uniform_exp_sum']; | |
| 1761 | + break; | |
| 1762 | + case 3: | |
| 1763 | + //累积商品数量 | |
| 1764 | + th.data.cut_goods_piece += item[j]['goods_num']; | |
| 1765 | + break; | |
| 1766 | + } | |
| 1767 | + } | |
| 1768 | + | |
| 1769 | + | |
| 1770 | + }else{ | |
| 1771 | + /*-- | |
| 1713 | 1772 | if(item[j]['exp_sum_type']==2 && out_of_weight!==0){ |
| 1714 | 1773 | goods_weight = -1; |
| 1715 | 1774 | out_of_weight = 0; |
| 1716 | - } | |
| 1775 | + }--*/ | |
| 1717 | 1776 | } |
| 1718 | 1777 | } |
| 1719 | 1778 | |
| ... | ... | @@ -1753,8 +1812,6 @@ Page({ |
| 1753 | 1812 | o_condition = o_price_no_zh - quan_price; |
| 1754 | 1813 | } |
| 1755 | 1814 | |
| 1756 | - | |
| 1757 | - | |
| 1758 | 1815 | var order_m = 0; |
| 1759 | 1816 | //---判断是不是有订单优惠--- |
| 1760 | 1817 | await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { |
| ... | ... | @@ -3124,6 +3181,14 @@ Page({ |
| 3124 | 3181 | var fw_price = 0, fp_price = 0; |
| 3125 | 3182 | item = item.config; |
| 3126 | 3183 | if (item == null) return o_shipping_price; |
| 3184 | + | |
| 3185 | + //------超出重量---------- | |
| 3186 | + if (out_of_weight < 0 && o_price >= freight_free && !th.data.is_no_by[pickid]) { | |
| 3187 | + goods_weight=goods_weight+ out_of_weight; | |
| 3188 | + if(goods_weight==0) goods_weight=-1; | |
| 3189 | + } | |
| 3190 | + | |
| 3191 | + | |
| 3127 | 3192 | //------按重量---------- |
| 3128 | 3193 | if (goods_weight >= 0 && item['money']) { |
| 3129 | 3194 | fw_price = parseFloat(item['money']); |
| ... | ... | @@ -3133,16 +3198,13 @@ Page({ |
| 3133 | 3198 | fw_price = fw_price + n * parseFloat(item['add_money']); |
| 3134 | 3199 | } |
| 3135 | 3200 | } |
| 3136 | - //------超出重量---------- | |
| 3137 | - if (out_of_weight < 0 && o_price >= freight_free && !th.data.is_no_by[pickid]) { | |
| 3138 | - fw_price = parseFloat(item['money']); | |
| 3139 | - var out_of_weight = Math.abs(out_of_weight); | |
| 3140 | - if (out_of_weight > item['first_weight']) { | |
| 3141 | - var fw = out_of_weight - item['first_weight']; | |
| 3142 | - var n = Math.ceil(fw / item['second_weight']) | |
| 3143 | - fw_price = fw_price + n * parseFloat(item['add_money']); | |
| 3144 | - } | |
| 3145 | - } | |
| 3201 | + | |
| 3202 | + if(th.data.free1 && freight_free<=0) freight_free=th.data.free1; | |
| 3203 | + | |
| 3204 | + | |
| 3205 | + //当有包邮和不包邮混合在一起的时候,件数要重新计算 | |
| 3206 | + if(freight_free>0 && o_price >= freight_free && goods_piece>0 && th.data.cut_goods_piece) | |
| 3207 | + goods_piece=goods_piece-th.data.cut_goods_piece; | |
| 3146 | 3208 | //------按件数---------- |
| 3147 | 3209 | if (goods_piece > 0 && item['piecemoney']) { |
| 3148 | 3210 | fp_price = parseFloat(item['piecemoney']); |
| ... | ... | @@ -3152,6 +3214,9 @@ Page({ |
| 3152 | 3214 | fp_price = fp_price + m * parseFloat(item['add_piecemoney']); |
| 3153 | 3215 | } |
| 3154 | 3216 | } |
| 3217 | + //当有包邮和不包邮混合在一起的时候,统一运费要重新计算 | |
| 3218 | + if(freight_free>0 && o_price >= freight_free && th.data.cut_o_shipping_price && price>0) price=price-th.data.cut_o_shipping_price; | |
| 3219 | + | |
| 3155 | 3220 | var rspice = parseFloat(price + fw_price + fp_price); |
| 3156 | 3221 | return rspice; |
| 3157 | 3222 | }, | ... | ... |