Commit 1d3825f1e78d0a68414e3c954fa23ae7aed7472f

Authored by yvan.ni
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 },
... ...