Commit 63c20f6408e28284b61ebc286ecaac5f4edabc6f
1 parent
8dd423ba
订单促销的bug优化
Showing
3 changed files
with
55 additions
and
144 deletions
packageE/pages/cart/cart2/cart2.js
| @@ -182,11 +182,10 @@ Page({ | @@ -182,11 +182,10 @@ Page({ | ||
| 182 | 182 | ||
| 183 | //-- 订单促销判断积累 ---2024-2-20 | 183 | //-- 订单促销判断积累 ---2024-2-20 |
| 184 | order_prom_map_ck: {}, | 184 | order_prom_map_ck: {}, |
| 185 | - | ||
| 186 | //能不能使用订单促销 | 185 | //能不能使用订单促销 |
| 187 | can_use_ord_prom:{}, | 186 | can_use_ord_prom:{}, |
| 187 | + //存储订单促销的取价,按照门店进行索引 | ||
| 188 | show_ord_prom:{}, | 188 | show_ord_prom:{}, |
| 189 | - join_ord_prom_goodslist:{} | ||
| 190 | 189 | ||
| 191 | }, | 190 | }, |
| 192 | 191 | ||
| @@ -954,7 +953,8 @@ Page({ | @@ -954,7 +953,8 @@ Page({ | ||
| 954 | // } | 953 | // } |
| 955 | // }) | 954 | // }) |
| 956 | 955 | ||
| 957 | - th.data.cartlist_y =JSON.parse(JSON.stringify(carr)); //存储原始购物车列表 | 956 | + th.data.cartlist_y =JSON.parse(JSON.stringify(carr)); //存储原始购物车列表,这个数据还会收到污染 |
| 957 | + th.data.cartlist_old =JSON.parse(JSON.stringify(carr)); //存储原始购物车列表 | ||
| 958 | wx.showLoading(); | 958 | wx.showLoading(); |
| 959 | 959 | ||
| 960 | th.get_cart_next(carr); | 960 | th.get_cart_next(carr); |
| @@ -1043,16 +1043,25 @@ Page({ | @@ -1043,16 +1043,25 @@ Page({ | ||
| 1043 | 1043 | ||
| 1044 | let item1 = carr[i]; | 1044 | let item1 = carr[i]; |
| 1045 | 1045 | ||
| 1046 | - //如果有户有点击参与订单促销的话,那么可以参与订单促销的商品的活动都要清理成0 | ||
| 1047 | - if(this.data.can_use_ord_prom[item.pick_id]){ | 1046 | + //如果有户有点击参与订单促销的话,那么可以参与订单促销的商品的活动都要清理成0,订单促销在使用过程中的重要方法 |
| 1047 | + if(this.data.can_use_ord_prom[item1.pick_id]){ | ||
| 1048 | //从订单促销的order_prom_map_ck数据结构中获取到可以参与的商品列表 | 1048 | //从订单促销的order_prom_map_ck数据结构中获取到可以参与的商品列表 |
| 1049 | - let gdlist=this.data.order_prom_map_ck[item.pick_id]?this.data.order_prom_map_ck[item.pick_id].goodsList:null; | 1049 | + let gdlist=this.data.order_prom_map_ck[item1.pick_id]?this.data.order_prom_map_ck[item1.pick_id].goodsList:null; |
| 1050 | if(gdlist && gdlist.length){ | 1050 | if(gdlist && gdlist.length){ |
| 1051 | //查找商品item1有没有在gdlist中,就要把商品的prom_type清理0 | 1051 | //查找商品item1有没有在gdlist中,就要把商品的prom_type清理0 |
| 1052 | let f_idx=gdlist.findIndex(function (ele) { | 1052 | let f_idx=gdlist.findIndex(function (ele) { |
| 1053 | return ele.id == item1.id | 1053 | return ele.id == item1.id |
| 1054 | }); | 1054 | }); |
| 1055 | if (f_idx!=-1){ | 1055 | if (f_idx!=-1){ |
| 1056 | + //开始变换商品的价格显示 | ||
| 1057 | + switch (th.data.show_ord_prom[item1.pick_id]){ | ||
| 1058 | + case 1: | ||
| 1059 | + carr[i].goods_price=item1.shop_price; | ||
| 1060 | + break; | ||
| 1061 | + case 2: | ||
| 1062 | + carr[i].goods_price=item1.goods_market_price; | ||
| 1063 | + break; | ||
| 1064 | + } | ||
| 1056 | carr[i].prom_type=0; | 1065 | carr[i].prom_type=0; |
| 1057 | continue; //要跳过 | 1066 | continue; //要跳过 |
| 1058 | } | 1067 | } |
| @@ -1313,11 +1322,8 @@ Page({ | @@ -1313,11 +1322,8 @@ Page({ | ||
| 1313 | if (ie.exp_type == 0 || ie.exp_type == 2) is_a_zt= 0; | 1322 | if (ie.exp_type == 0 || ie.exp_type == 2) is_a_zt= 0; |
| 1314 | } | 1323 | } |
| 1315 | th.setData({ is_all_zt: is_a_zt}); | 1324 | th.setData({ is_all_zt: is_a_zt}); |
| 1316 | - | ||
| 1317 | } | 1325 | } |
| 1318 | 1326 | ||
| 1319 | - | ||
| 1320 | - | ||
| 1321 | var cart_commission = 0; | 1327 | var cart_commission = 0; |
| 1322 | //-- 循环计算一下线下取价 -- | 1328 | //-- 循环计算一下线下取价 -- |
| 1323 | for (var k = 0; k < arr.length; k++) { | 1329 | for (var k = 0; k < arr.length; k++) { |
| @@ -3197,8 +3203,6 @@ Page({ | @@ -3197,8 +3203,6 @@ Page({ | ||
| 3197 | } | 3203 | } |
| 3198 | } | 3204 | } |
| 3199 | 3205 | ||
| 3200 | - //-- 商品是不是没有参与优惠促销的话 -- | ||
| 3201 | - th.ch_no_order_prom_map_ck(item[jc],pickid) | ||
| 3202 | } | 3206 | } |
| 3203 | 3207 | ||
| 3204 | 3208 | ||
| @@ -3575,11 +3579,7 @@ Page({ | @@ -3575,11 +3579,7 @@ Page({ | ||
| 3575 | var order_m = 0; | 3579 | var order_m = 0; |
| 3576 | //么有使用券,或者活动没有限制使用优惠券 | 3580 | //么有使用券,或者活动没有限制使用优惠券 |
| 3577 | if (ord_prom && (quan_price <= 0 || !ord_prom.is_xz_yh)) { | 3581 | if (ord_prom && (quan_price <= 0 || !ord_prom.is_xz_yh)) { |
| 3578 | - order_prom_id = ord_prom['id']; | ||
| 3579 | - | ||
| 3580 | - if(ord_prom.discount_field>0){ | ||
| 3581 | - | ||
| 3582 | - }else{ | 3582 | + order_prom_id = ord_prom['id']; |
| 3583 | //-- 订单促销是按照实收价格进行计算的时候 -- | 3583 | //-- 订单促销是按照实收价格进行计算的时候 -- |
| 3584 | switch (ord_prom['type']) { | 3584 | switch (ord_prom['type']) { |
| 3585 | case 0: | 3585 | case 0: |
| @@ -3595,7 +3595,7 @@ Page({ | @@ -3595,7 +3595,7 @@ Page({ | ||
| 3595 | order_prom_amount = ord_prom['expression']; | 3595 | order_prom_amount = ord_prom['expression']; |
| 3596 | break; | 3596 | break; |
| 3597 | } | 3597 | } |
| 3598 | - } | 3598 | + |
| 3599 | } | 3599 | } |
| 3600 | 3600 | ||
| 3601 | cart_item.order_prom_amount = 0; | 3601 | cart_item.order_prom_amount = 0; |
| @@ -6606,6 +6606,7 @@ Page({ | @@ -6606,6 +6606,7 @@ Page({ | ||
| 6606 | get_cart_quan: async function (order_prom_list_cart) { | 6606 | get_cart_quan: async function (order_prom_list_cart) { |
| 6607 | var th = this; | 6607 | var th = this; |
| 6608 | var user_id = getApp().globalData.user_id; | 6608 | var user_id = getApp().globalData.user_id; |
| 6609 | + | ||
| 6609 | //等待值的出现 | 6610 | //等待值的出现 |
| 6610 | //getApp().waitfor2(this,"g_cart_q_time","order_prom_list_cart",async function () { | 6611 | //getApp().waitfor2(this,"g_cart_q_time","order_prom_list_cart",async function () { |
| 6611 | //var arr=th.data.order_prom_list_cart; | 6612 | //var arr=th.data.order_prom_list_cart; |
| @@ -6617,6 +6618,12 @@ Page({ | @@ -6617,6 +6618,12 @@ Page({ | ||
| 6617 | //------------开始计算使用优惠券相关------------ | 6618 | //------------开始计算使用优惠券相关------------ |
| 6618 | for (var ind in arr) { | 6619 | for (var ind in arr) { |
| 6619 | var ep = arr[ind]; | 6620 | var ep = arr[ind]; |
| 6621 | + | ||
| 6622 | + //如果门店订单使用订单促销(此订单促销取价规则不是实收价的时候) | ||
| 6623 | + if(th.data.can_use_ord_prom[ep.pickup_id]){ | ||
| 6624 | + continue; | ||
| 6625 | + } | ||
| 6626 | + | ||
| 6620 | var goodlist = ep.goods; | 6627 | var goodlist = ep.goods; |
| 6621 | var pickup_id = ep.pickup_id; | 6628 | var pickup_id = ep.pickup_id; |
| 6622 | //--更优惠券抵用有关,立即购买的,如果是购物车,如果有等级价还有考虑等级价的东西 | 6629 | //--更优惠券抵用有关,立即购买的,如果是购物车,如果有等级价还有考虑等级价的东西 |
| @@ -8796,33 +8803,6 @@ Page({ | @@ -8796,33 +8803,6 @@ Page({ | ||
| 8796 | prom_type: item.prom_type | 8803 | prom_type: item.prom_type |
| 8797 | } | 8804 | } |
| 8798 | pk_ord_map.goodsList.push(ite); | 8805 | pk_ord_map.goodsList.push(ite); |
| 8799 | - | ||
| 8800 | - console.log('pk_ord_map'); | ||
| 8801 | - console.log(pk_ord_map); | ||
| 8802 | - | ||
| 8803 | - }, | ||
| 8804 | - | ||
| 8805 | - //寻找一下商品有没有参与订单促销 | ||
| 8806 | - ch_no_order_prom_map_ck(item,pickid){ | ||
| 8807 | - var order_prom_map_ck= this.data.order_prom_map_ck; | ||
| 8808 | - if(!order_prom_map_ck[pickid]){ | ||
| 8809 | - order_prom_map_ck[pickid]={ | ||
| 8810 | - shop_price_all:0, //手店价的累计 | ||
| 8811 | - market_price_all:0, //市场价的累计 | ||
| 8812 | - goods_price_all:0, //实收价的累计 | ||
| 8813 | - no_ord_price:0, //要累计上不参与订单促销的金额 | ||
| 8814 | - goodsList:[], | ||
| 8815 | - } | ||
| 8816 | - } | ||
| 8817 | - let pk_ord_map=order_prom_map_ck[pickid]; | ||
| 8818 | - | ||
| 8819 | - //快速查找item有没有在goodsList中 | ||
| 8820 | - var fg = pk_ord_map.goodsList.findIndex(function (ite){ | ||
| 8821 | - return ite.id==item.id | ||
| 8822 | - }) | ||
| 8823 | - if(fg==-1){ | ||
| 8824 | - pk_ord_map.no_ord_price= item.goods_price * item.goods_num; | ||
| 8825 | - } | ||
| 8826 | }, | 8806 | }, |
| 8827 | 8807 | ||
| 8828 | //重置订单促销判断累计 | 8808 | //重置订单促销判断累计 |
| @@ -8853,10 +8833,7 @@ Page({ | @@ -8853,10 +8833,7 @@ Page({ | ||
| 8853 | //用于计算订单促销的金额 | 8833 | //用于计算订单促销的金额 |
| 8854 | let calculate_price=0; | 8834 | let calculate_price=0; |
| 8855 | 8835 | ||
| 8856 | - | ||
| 8857 | let txt1='show_ord_prom['+pickid+']'; | 8836 | let txt1='show_ord_prom['+pickid+']'; |
| 8858 | - let txt2='join_ord_prom_goodslist['+pickid+']'; | ||
| 8859 | - | ||
| 8860 | //-- 此时判断活动的金额满足与否 -- | 8837 | //-- 此时判断活动的金额满足与否 -- |
| 8861 | switch (ord_prom.discount_field) { | 8838 | switch (ord_prom.discount_field) { |
| 8862 | //实收价的时候 | 8839 | //实收价的时候 |
| @@ -8872,79 +8849,54 @@ Page({ | @@ -8872,79 +8849,54 @@ Page({ | ||
| 8872 | } | 8849 | } |
| 8873 | //要显示订单促销使用的按钮 | 8850 | //要显示订单促销使用的按钮 |
| 8874 | this.setData({ | 8851 | this.setData({ |
| 8875 | - [txt1]: 1, | ||
| 8876 | - [txt2]:order_prom_map_ck.goodsList //用于筛选商品的价格选手 | 8852 | + [txt1]: 1 |
| 8877 | }); | 8853 | }); |
| 8878 | - //要用户点击了同意使用订单优惠的按钮后,才允许使用订单优惠 | ||
| 8879 | - if (!this.data.can_use_ord_prom) { | ||
| 8880 | - return null; | ||
| 8881 | - } | ||
| 8882 | - | ||
| 8883 | - //计算金额是参与订单促销的金额+不参与订单促销的金额 | ||
| 8884 | - calculate_price=order_prom_map_ck.shop_price_all+order_prom_map_ck.no_ord_price; | ||
| 8885 | - | ||
| 8886 | break; | 8854 | break; |
| 8887 | //市场价的时候 | 8855 | //市场价的时候 |
| 8888 | case 2: | 8856 | case 2: |
| 8889 | if (ord_prom.money > order_prom_map_ck.market_price_all){ | 8857 | if (ord_prom.money > order_prom_map_ck.market_price_all){ |
| 8890 | return null; | 8858 | return null; |
| 8891 | } | 8859 | } |
| 8892 | - | ||
| 8893 | - console.log('aaa'); | ||
| 8894 | - console.log(order_prom_map_ck.goodsList); | ||
| 8895 | - | ||
| 8896 | //要显示订单促销使用的按钮 | 8860 | //要显示订单促销使用的按钮 |
| 8897 | this.setData({ | 8861 | this.setData({ |
| 8898 | - [txt1]: 2, | ||
| 8899 | - [txt2]:order_prom_map_ck.goodsList //用于筛选商品的价格选手 | 8862 | + [txt1]: 2 |
| 8900 | }); | 8863 | }); |
| 8901 | - //要用户点击了同意使用订单优惠的按钮后,才允许使用订单优惠 | ||
| 8902 | - if (!this.data.can_use_ord_prom) { | ||
| 8903 | - return null; | ||
| 8904 | - } | ||
| 8905 | - //计算金额是参与订单促销的金额+不参与订单促销的金额 | ||
| 8906 | - calculate_price = order_prom_map_ck.market_price_all+order_prom_map_ck.no_ord_price; | ||
| 8907 | break; | 8864 | break; |
| 8908 | } | 8865 | } |
| 8909 | - | ||
| 8910 | - let order_prom_amount=0; | ||
| 8911 | - //如果用户有点击按钮要参与订单促销的时候 | ||
| 8912 | - if (calculate_price > 0 && this.data.can_use_ord_prom[pickid]) { | ||
| 8913 | - //-- 订单促销是按照实收价格进行计算的时候 -- | ||
| 8914 | - switch (ord_prom['type']) { | ||
| 8915 | - case 0: | ||
| 8916 | - let order_m = Math.round(calculate_price * ord_prom['expression']) / 100;//满额打折 | ||
| 8917 | - order_prom_amount = (calculate_price - order_m).toFixed(2); | ||
| 8918 | - break; | ||
| 8919 | - case 1: | ||
| 8920 | - //order_m = o_condition - ord_prom['expression'];//满额优惠金额 | ||
| 8921 | - var bs = 1; | ||
| 8922 | - if (ord_prom.is_bz) { | ||
| 8923 | - bs = Math.floor(calculate_price / ord_prom.money); | ||
| 8924 | - } | ||
| 8925 | - order_prom_amount = ord_prom['expression']; | ||
| 8926 | - break; | ||
| 8927 | - } | ||
| 8928 | - //保存到订单促销中,订单促销的金额 | ||
| 8929 | - ord_prom.real_order_prom_amount = order_prom_amount; | ||
| 8930 | - ord_prom.real_condition_price = calculate_price; | 8866 | + //如果订单促销是不参与订单促销的,那么就直接返回null(订单促销不是实收价的时候) |
| 8867 | + if(ord_prom.discount_field>0 && !this.data.can_use_ord_prom[pickid]){ | ||
| 8868 | + return null; | ||
| 8931 | } | 8869 | } |
| 8932 | return ord_prom; | 8870 | return ord_prom; |
| 8933 | - | ||
| 8934 | }, | 8871 | }, |
| 8935 | 8872 | ||
| 8936 | //设置能够参与订单促销 | 8873 | //设置能够参与订单促销 |
| 8937 | - set_can_use_ord_prom:function (e){ | ||
| 8938 | - let pickid=e.currentTarget.dataset.pd; | ||
| 8939 | - let txt='can_use_ord_prom['+pickid+']'; | ||
| 8940 | - let can_use=this.data.can_use_ord_prom[pickid]?this.data.can_use_ord_prom[pickid]:0; | ||
| 8941 | - this.setData({ | ||
| 8942 | - [txt]:!can_use | ||
| 8943 | - }) | 8874 | + set_can_use_ord_prom: function (e) { |
| 8875 | + let pickid = e.currentTarget.dataset.pd; | ||
| 8876 | + let txt = 'can_use_ord_prom[' + pickid + ']'; | ||
| 8877 | + let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; | ||
| 8878 | + this.setData({ | ||
| 8879 | + [txt]: !can_use | ||
| 8880 | + }) | ||
| 8944 | 8881 | ||
| 8945 | - let carr=ut.deep_cp(th.data.cartlist_y); | ||
| 8946 | - //-- 重新计算一下价格 -- | ||
| 8947 | - this.get_cart_next(carr); | 8882 | + //购物车进行还原,一下数据的清理的必须的 |
| 8883 | + let carr = ut.deep_cp(this.data.cartlist_old); | ||
| 8884 | + this.setData({ | ||
| 8885 | + send_lb: {}, | ||
| 8886 | + month_lb: {}, | ||
| 8887 | + send_gf: {} | ||
| 8888 | + }) | ||
| 8889 | + //清空优惠促销的内容 | ||
| 8890 | + this.data.prom_goods_map = {}; | ||
| 8891 | + //-- 过滤掉赠品 -- | ||
| 8892 | + let n_carr=[]; | ||
| 8893 | + for (var i = 0; i < carr.length; i++) { | ||
| 8894 | + if (!carr[i].is_gift) { | ||
| 8895 | + n_carr.push(carr[i]); | ||
| 8896 | + } | ||
| 8897 | + } | ||
| 8898 | + //-- 重新计算一下价格 -- | ||
| 8899 | + this.get_cart_next(n_carr); | ||
| 8948 | } | 8900 | } |
| 8949 | 8901 | ||
| 8950 | 8902 |
packageE/pages/cart/cart2/cart2.wxml
| @@ -104,12 +104,10 @@ | @@ -104,12 +104,10 @@ | ||
| 104 | <block><text>{{filters.show_gui_ge(items.goods_spec,items.goods_color)}}</text></block> | 104 | <block><text>{{filters.show_gui_ge(items.goods_spec,items.goods_color)}}</text></block> |
| 105 | </view> | 105 | </view> |
| 106 | </view> | 106 | </view> |
| 107 | - | ||
| 108 | <!-----商品名称规格------> | 107 | <!-----商品名称规格------> |
| 109 | <view class="order-num flex-space-between"> | 108 | <view class="order-num flex-space-between"> |
| 110 | <!-- 动态显示商品的价格 --> | 109 | <!-- 动态显示商品的价格 --> |
| 111 | - <view wx:if="{{can_use_ord_prom[item.pickup_id]}}" class="co-red">¥<text class="fs36">{{util.fm_join_ord_prom_price(items,join_ord_prom_goodslist[item.pickup_id],show_ord_prom[item.pickup_id],2)}}</text></view> | ||
| 112 | - <view wx:elif="{{items.prom_type==10}}" class="co-red">¥<text class="fs36">{{filters.toFix(items.goods_price,2)}}</text><text>({{items.discount}}折)</text></view> | 110 | + <view wx:if="{{items.prom_type==10}}" class="co-red">¥<text class="fs36">{{filters.toFix(items.goods_price,2)}}</text><text>({{items.discount}}折)</text></view> |
| 113 | <view wx:else class="co-red">¥<text class="fs36">{{filters.toFix(items.goods_price,2)}}</text></view> | 111 | <view wx:else class="co-red">¥<text class="fs36">{{filters.toFix(items.goods_price,2)}}</text></view> |
| 114 | <view style="color: red;" wx:if="{{items.use_commission && items.use_commission*1>0}}">佣金:{{filters.toFix(items.use_commission/items.goods_num,2)}}*{{items.goods_num}}</view> | 112 | <view style="color: red;" wx:if="{{items.use_commission && items.use_commission*1>0}}">佣金:{{filters.toFix(items.use_commission/items.goods_num,2)}}*{{items.goods_num}}</view> |
| 115 | <view class="goods-num">x{{items.goods_num}}</view> | 113 | <view class="goods-num">x{{items.goods_num}}</view> |
packageE/pages/cart/cart2/filter.wxs
| @@ -51,48 +51,9 @@ function check_is_last(index,goods_id){ | @@ -51,48 +51,9 @@ function check_is_last(index,goods_id){ | ||
| 51 | return false; | 51 | return false; |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | -//-- 用于筛选商品的价格显示 -- | ||
| 55 | -function fm_join_ord_prom_price(gd,join_gd_list,show_ord_prom,count){ | ||
| 56 | - var price=gd.goods_price; | ||
| 57 | - | ||
| 58 | - console.log('1111'); | ||
| 59 | - console.log(gd.id); | ||
| 60 | - | ||
| 61 | - //在join_gd_list中查找是否已经存在gd商品,靠购物车的id来判断 | ||
| 62 | - for(var i=0;i<join_gd_list.length;i++){ | ||
| 63 | - var jgd=join_gd_list[i]; | ||
| 64 | - | ||
| 65 | - console.log(jgd.id); | ||
| 66 | - | ||
| 67 | - | ||
| 68 | - if(jgd.id==gd.id){ | ||
| 69 | - | ||
| 70 | - console.log('yyy'); | ||
| 71 | - | ||
| 72 | - | ||
| 73 | - switch (show_ord_prom){ | ||
| 74 | - case 1: | ||
| 75 | - price=gd.shop_price; | ||
| 76 | - break; | ||
| 77 | - case 2: | ||
| 78 | - price=gd.goods_market_price; | ||
| 79 | - break; | ||
| 80 | - } | ||
| 81 | - break; | ||
| 82 | - } | ||
| 83 | - } | ||
| 84 | - if (!price) { | ||
| 85 | - return parseFloat(0).toFixed(count); | ||
| 86 | - } | ||
| 87 | - price = parseFloat(price); | ||
| 88 | - return price.toFixed(count); | ||
| 89 | -} | ||
| 90 | - | ||
| 91 | - | ||
| 92 | module.exports = { | 54 | module.exports = { |
| 93 | format: format, | 55 | format: format, |
| 94 | is_more_act:is_more_act, | 56 | is_more_act:is_more_act, |
| 95 | check_show:check_show, | 57 | check_show:check_show, |
| 96 | check_is_last:check_is_last, | 58 | check_is_last:check_is_last, |
| 97 | - fm_join_ord_prom_price:fm_join_ord_prom_price, | ||
| 98 | } | 59 | } |