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 | } |