Commit 37406bb518caf04b0369a3b943a08d0fd372b9ca
1 parent
4ebe2a58
立即购买的时候,秒杀和团购参与订单促销取价的优化
Showing
2 changed files
with
127 additions
and
17 deletions
packageE/pages/cart/cart2/cart2.js
| @@ -2133,6 +2133,8 @@ Page({ | @@ -2133,6 +2133,8 @@ Page({ | ||
| 2133 | success: async function (tt) { | 2133 | success: async function (tt) { |
| 2134 | if (tt.data.code == 0) { | 2134 | if (tt.data.code == 0) { |
| 2135 | //t.data.data.shop_price = tt.data.data.prom_price; | 2135 | //t.data.data.shop_price = tt.data.data.prom_price; |
| 2136 | + | ||
| 2137 | + gd.shop_price_y=gd.shop_price; | ||
| 2136 | gd.shop_price=t.data.data.shop_price = tt.data.data.prom_user_price; | 2138 | gd.shop_price=t.data.data.shop_price = tt.data.data.prom_user_price; |
| 2137 | th.data.ckeck_quan_price = 0; | 2139 | th.data.ckeck_quan_price = 0; |
| 2138 | 2140 | ||
| @@ -2181,6 +2183,9 @@ Page({ | @@ -2181,6 +2183,9 @@ Page({ | ||
| 2181 | } | 2183 | } |
| 2182 | 2184 | ||
| 2183 | 2185 | ||
| 2186 | + //用深拷贝把商品缓存起来,方便后面使用 | ||
| 2187 | + th.data.old_bn_goods=ut.deep_cp(gd); | ||
| 2188 | + | ||
| 2184 | th.setData({ | 2189 | th.setData({ |
| 2185 | bn_goods: gd, | 2190 | bn_goods: gd, |
| 2186 | bn_pickname: gg.pick_name, | 2191 | bn_pickname: gg.pick_name, |
| @@ -2209,6 +2214,7 @@ Page({ | @@ -2209,6 +2214,7 @@ Page({ | ||
| 2209 | ut.get_active_info(2,gd.prom_id,os.stoid,function(e){ | 2214 | ut.get_active_info(2,gd.prom_id,os.stoid,function(e){ |
| 2210 | 2215 | ||
| 2211 | //t.data.data.shop_price = tt.data.data.prom_price; | 2216 | //t.data.data.shop_price = tt.data.data.prom_price; |
| 2217 | + gd.shop_price_y=gd.shop_price; | ||
| 2212 | gd.shop_price=t.data.data.shop_price = tt.data.data.price; | 2218 | gd.shop_price=t.data.data.shop_price = tt.data.data.price; |
| 2213 | 2219 | ||
| 2214 | t.data.data.fir_rate = tt.data.data.fir_rate; | 2220 | t.data.data.fir_rate = tt.data.data.fir_rate; |
| @@ -2248,6 +2254,10 @@ Page({ | @@ -2248,6 +2254,10 @@ Page({ | ||
| 2248 | gd.is_xz_yh = 1; | 2254 | gd.is_xz_yh = 1; |
| 2249 | } | 2255 | } |
| 2250 | 2256 | ||
| 2257 | + | ||
| 2258 | + //用深拷贝把商品缓存起来,方便后面使用 | ||
| 2259 | + th.data.old_bn_goods=ut.deep_cp(gd); | ||
| 2260 | + | ||
| 2251 | th.setData({ | 2261 | th.setData({ |
| 2252 | bn_goods: gd, | 2262 | bn_goods: gd, |
| 2253 | bn_pickname: gg.pick_name, | 2263 | bn_pickname: gg.pick_name, |
| @@ -3147,22 +3157,17 @@ Page({ | @@ -3147,22 +3157,17 @@ Page({ | ||
| 3147 | 3157 | ||
| 3148 | 3158 | ||
| 3149 | var whsle_goods_price = 0; | 3159 | var whsle_goods_price = 0; |
| 3150 | - var whsle_shop_price = 0; | ||
| 3151 | - var whsle_market_price = 0; | ||
| 3152 | - | ||
| 3153 | var no_zh_all_quan_num=0; //不是组合购商品的使用的优惠券综合 | 3160 | var no_zh_all_quan_num=0; //不是组合购商品的使用的优惠券综合 |
| 3154 | 3161 | ||
| 3155 | //--------循环计算总价----------- | 3162 | //--------循环计算总价----------- |
| 3156 | for (var jc = 0; jc < item.length; jc++) { | 3163 | for (var jc = 0; jc < item.length; jc++) { |
| 3157 | 3164 | ||
| 3158 | if (item[jc].prom_type == 0) { //如果item的prom_type==0,没有如果活动的时候 | 3165 | if (item[jc].prom_type == 0) { //如果item的prom_type==0,没有如果活动的时候 |
| 3159 | - th.get_order_prom_map_ck(item,pickid); | 3166 | + th.get_order_prom_map_ck(item[jc],pickid); |
| 3160 | } | 3167 | } |
| 3161 | 3168 | ||
| 3162 | if (item[jc].whsle_id > 0) { | 3169 | if (item[jc].whsle_id > 0) { |
| 3163 | whsle_goods_price += item[jc].goods_price * item[jc].goods_num; | 3170 | whsle_goods_price += item[jc].goods_price * item[jc].goods_num; |
| 3164 | - whsle_shop_price += item[jc].shop_price * item[jc].goods_num; | ||
| 3165 | - whsle_market_price += item[jc].goods_market_price * item[jc].goods_num; | ||
| 3166 | } | 3171 | } |
| 3167 | 3172 | ||
| 3168 | var is_no_zh = 0; | 3173 | var is_no_zh = 0; |
| @@ -4047,15 +4052,22 @@ Page({ | @@ -4047,15 +4052,22 @@ Page({ | ||
| 4047 | var ord_prom = null; | 4052 | var ord_prom = null; |
| 4048 | var is_ord_prom_post = 0; | 4053 | var is_ord_prom_post = 0; |
| 4049 | 4054 | ||
| 4050 | - if (condition > 0 && th.data.bn_is_order_yh && !th.data.bn_goods.whsle_id) { | ||
| 4051 | - await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | ||
| 4052 | - data: { store_id: os.stoid, orderAmount: condition, user_id: getApp().globalData.user_id } | ||
| 4053 | - }).then(res => { | ||
| 4054 | - if (res.data.code == 0) { | ||
| 4055 | - var data = res.data.data; | ||
| 4056 | - ord_prom = data; | ||
| 4057 | - } | ||
| 4058 | - }) | 4055 | + //一件代发商品不参与订单优惠, 本身商品的活动也有要不要参与优惠促销的设置bn_is_order_yh |
| 4056 | + if (th.data.bn_is_order_yh && !th.data.bn_goods.whsle_id) { | ||
| 4057 | + | ||
| 4058 | + th.set_by_now_ord_prom(th.data.bn_goods); | ||
| 4059 | + th.data.order_prom_map_ck[bn_pick].goods_price_all=condition; | ||
| 4060 | + | ||
| 4061 | + // await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | ||
| 4062 | + // data: { store_id: os.stoid, orderAmount: condition, user_id: getApp().globalData.user_id } | ||
| 4063 | + // }).then(res => { | ||
| 4064 | + // if (res.data.code == 0) { | ||
| 4065 | + // var data = res.data.data; | ||
| 4066 | + // ord_prom = data; | ||
| 4067 | + // } | ||
| 4068 | + // }) | ||
| 4069 | + ord_prom=await th.get_cur_ord_prom(bn_pick); | ||
| 4070 | + | ||
| 4059 | if (ord_prom && ord_prom.is_post_temp) { | 4071 | if (ord_prom && ord_prom.is_post_temp) { |
| 4060 | is_ord_prom_post = 1; | 4072 | is_ord_prom_post = 1; |
| 4061 | } | 4073 | } |
| @@ -8492,10 +8504,13 @@ Page({ | @@ -8492,10 +8504,13 @@ Page({ | ||
| 8492 | 8504 | ||
| 8493 | var cx_prom_group=this.data.cartlist[idx].show_can_cx[gd_key].act_arr; | 8505 | var cx_prom_group=this.data.cartlist[idx].show_can_cx[gd_key].act_arr; |
| 8494 | 8506 | ||
| 8507 | + //-- 切换活动的时候,让订单促销参与不选中 -- | ||
| 8508 | + let tt_wd="can_use_ord_prom["+pk+"]"; | ||
| 8495 | th.setData({ | 8509 | th.setData({ |
| 8496 | send_lb:{}, | 8510 | send_lb:{}, |
| 8497 | month_lb:{}, | 8511 | month_lb:{}, |
| 8498 | - send_gf:{} | 8512 | + send_gf:{}, |
| 8513 | + [tt_wd]:0 | ||
| 8499 | }) | 8514 | }) |
| 8500 | 8515 | ||
| 8501 | th.data.prom_goods_map={}; | 8516 | th.data.prom_goods_map={}; |
| @@ -8704,6 +8719,9 @@ Page({ | @@ -8704,6 +8719,9 @@ Page({ | ||
| 8704 | 8719 | ||
| 8705 | //--- 不参与优惠促销的开关 --- | 8720 | //--- 不参与优惠促销的开关 --- |
| 8706 | no_cj_prom: function (e) { | 8721 | no_cj_prom: function (e) { |
| 8722 | + //避免重复点击 | ||
| 8723 | + if(this.data.submit) return false; | ||
| 8724 | + this.setData({ submit: 1,same_ok:1 }); | ||
| 8707 | 8725 | ||
| 8708 | this.setData({ | 8726 | this.setData({ |
| 8709 | send_lb:{}, | 8727 | send_lb:{}, |
| @@ -8798,6 +8816,9 @@ Page({ | @@ -8798,6 +8816,9 @@ Page({ | ||
| 8798 | //---订单促销累计的数据结构的构建,购物车计算流程的那一部分 | 8816 | //---订单促销累计的数据结构的构建,购物车计算流程的那一部分 |
| 8799 | get_order_prom_map_ck(item,pickid) { | 8817 | get_order_prom_map_ck(item,pickid) { |
| 8800 | 8818 | ||
| 8819 | + //赠品不计算 | ||
| 8820 | + if(item.is_gift) return false; | ||
| 8821 | + | ||
| 8801 | var order_prom_map_ck= this.data.order_prom_map_ck; | 8822 | var order_prom_map_ck= this.data.order_prom_map_ck; |
| 8802 | if(!order_prom_map_ck[pickid]){ | 8823 | if(!order_prom_map_ck[pickid]){ |
| 8803 | order_prom_map_ck[pickid]={ | 8824 | order_prom_map_ck[pickid]={ |
| @@ -8822,6 +8843,25 @@ Page({ | @@ -8822,6 +8843,25 @@ Page({ | ||
| 8822 | pk_ord_map.goodsList.push(ite); | 8843 | pk_ord_map.goodsList.push(ite); |
| 8823 | }, | 8844 | }, |
| 8824 | 8845 | ||
| 8846 | + | ||
| 8847 | + //-- 秒杀和团购使用 -- | ||
| 8848 | + set_by_now_ord_prom(item){ | ||
| 8849 | + let pickid=this.data.bn_pick; | ||
| 8850 | + let order_prom_map_ck= this.data.order_prom_map_ck; | ||
| 8851 | + order_prom_map_ck[pickid]={ | ||
| 8852 | + shop_price_all:0, //手店价的累计 | ||
| 8853 | + market_price_all:0, //市场价的累计 | ||
| 8854 | + goods_price_all:0, //实收价的累计 | ||
| 8855 | + no_ord_price:0, //要累计上不参与订单促销的金额 | ||
| 8856 | + goodsList:[], | ||
| 8857 | + } | ||
| 8858 | + | ||
| 8859 | + let pk_ord_map=order_prom_map_ck[pickid]; | ||
| 8860 | + pk_ord_map.shop_price_all += item.shop_price_y * item.buynum; | ||
| 8861 | + pk_ord_map.market_price_all += item.goods_market_price * item.buynum; | ||
| 8862 | + | ||
| 8863 | + }, | ||
| 8864 | + | ||
| 8825 | //重置订单促销判断累计 | 8865 | //重置订单促销判断累计 |
| 8826 | re_set_order_prom_map_ck() { | 8866 | re_set_order_prom_map_ck() { |
| 8827 | this.data.order_prom_map_ck = {} | 8867 | this.data.order_prom_map_ck = {} |
| @@ -8855,6 +8895,11 @@ Page({ | @@ -8855,6 +8895,11 @@ Page({ | ||
| 8855 | switch (ord_prom.discount_field) { | 8895 | switch (ord_prom.discount_field) { |
| 8856 | //实收价的时候 | 8896 | //实收价的时候 |
| 8857 | case 0: | 8897 | case 0: |
| 8898 | + //要先还原 | ||
| 8899 | + this.setData({ | ||
| 8900 | + [txt1]: 0 | ||
| 8901 | + }); | ||
| 8902 | + | ||
| 8858 | if (ord_prom.money > order_prom_map_ck.goods_price_all){ | 8903 | if (ord_prom.money > order_prom_map_ck.goods_price_all){ |
| 8859 | return null; | 8904 | return null; |
| 8860 | } | 8905 | } |
| @@ -8862,6 +8907,10 @@ Page({ | @@ -8862,6 +8907,10 @@ Page({ | ||
| 8862 | //手店价的时候 | 8907 | //手店价的时候 |
| 8863 | case 1: | 8908 | case 1: |
| 8864 | if (ord_prom.money > order_prom_map_ck.shop_price_all){ | 8909 | if (ord_prom.money > order_prom_map_ck.shop_price_all){ |
| 8910 | + //要先还原 | ||
| 8911 | + this.setData({ | ||
| 8912 | + [txt1]: 0 | ||
| 8913 | + }); | ||
| 8865 | return null; | 8914 | return null; |
| 8866 | } | 8915 | } |
| 8867 | //要显示订单促销使用的按钮 | 8916 | //要显示订单促销使用的按钮 |
| @@ -8872,6 +8921,10 @@ Page({ | @@ -8872,6 +8921,10 @@ Page({ | ||
| 8872 | //市场价的时候 | 8921 | //市场价的时候 |
| 8873 | case 2: | 8922 | case 2: |
| 8874 | if (ord_prom.money > order_prom_map_ck.market_price_all){ | 8923 | if (ord_prom.money > order_prom_map_ck.market_price_all){ |
| 8924 | + //要先还原 | ||
| 8925 | + this.setData({ | ||
| 8926 | + [txt1]: 0 | ||
| 8927 | + }); | ||
| 8875 | return null; | 8928 | return null; |
| 8876 | } | 8929 | } |
| 8877 | //要显示订单促销使用的按钮 | 8930 | //要显示订单促销使用的按钮 |
| @@ -8889,6 +8942,10 @@ Page({ | @@ -8889,6 +8942,10 @@ Page({ | ||
| 8889 | 8942 | ||
| 8890 | //设置能够参与订单促销 | 8943 | //设置能够参与订单促销 |
| 8891 | set_can_use_ord_prom: function (e) { | 8944 | set_can_use_ord_prom: function (e) { |
| 8945 | + | ||
| 8946 | + if(this.data.submit) return false; | ||
| 8947 | + this.setData({ submit: 1,same_ok:1 }); | ||
| 8948 | + | ||
| 8892 | let pickid = e.currentTarget.dataset.pd; | 8949 | let pickid = e.currentTarget.dataset.pd; |
| 8893 | let txt = 'can_use_ord_prom[' + pickid + ']'; | 8950 | let txt = 'can_use_ord_prom[' + pickid + ']'; |
| 8894 | let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; | 8951 | let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; |
| @@ -8897,7 +8954,6 @@ Page({ | @@ -8897,7 +8954,6 @@ Page({ | ||
| 8897 | }) | 8954 | }) |
| 8898 | 8955 | ||
| 8899 | //购物车进行还原,一下数据的清理的必须的 | 8956 | //购物车进行还原,一下数据的清理的必须的 |
| 8900 | - let carr = ut.deep_cp(this.data.cartlist_old); | ||
| 8901 | this.setData({ | 8957 | this.setData({ |
| 8902 | send_lb: {}, | 8958 | send_lb: {}, |
| 8903 | month_lb: {}, | 8959 | month_lb: {}, |
| @@ -8918,8 +8974,54 @@ Page({ | @@ -8918,8 +8974,54 @@ Page({ | ||
| 8918 | 8974 | ||
| 8919 | //原始数据要有深拷贝不能有地址的牵连 | 8975 | //原始数据要有深拷贝不能有地址的牵连 |
| 8920 | this.data.cartlist_y = JSON.parse(JSON.stringify(goods)) | 8976 | this.data.cartlist_y = JSON.parse(JSON.stringify(goods)) |
| 8977 | + //重新调用cart_next,进行下一步计算 | ||
| 8978 | + wx.showLoading({ | ||
| 8979 | + title: "处理中.", | ||
| 8980 | + mark:true | ||
| 8981 | + }) | ||
| 8921 | //-- 重新计算一下价格 -- | 8982 | //-- 重新计算一下价格 -- |
| 8922 | this.get_cart_next(null, 1, {prom_type: 0, prom_id: 0}); | 8983 | this.get_cart_next(null, 1, {prom_type: 0, prom_id: 0}); |
| 8984 | + }, | ||
| 8985 | + | ||
| 8986 | + //立即购买的时候,点击订单促销的参与 | ||
| 8987 | + set_can_use_ord_prom_now:function (e){ | ||
| 8988 | + | ||
| 8989 | + if(this.data.submit) return false; | ||
| 8990 | + this.setData({ submit: 1,same_ok:1 }); | ||
| 8991 | + | ||
| 8992 | + let pickid=this.data.bn_pick; | ||
| 8993 | + let txt = 'can_use_ord_prom[' + pickid + ']'; | ||
| 8994 | + let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; | ||
| 8995 | + this.setData({ | ||
| 8996 | + [txt]: !can_use | ||
| 8997 | + }) | ||
| 8998 | + | ||
| 8999 | + let th=this; | ||
| 9000 | + let good=th.data.bn_goods; | ||
| 9001 | + | ||
| 9002 | + //如果有要参与订单促销的按钮点击后,要修改商品的价格 | ||
| 9003 | + if(th.data.can_use_ord_prom[pickid]){ | ||
| 9004 | + let discount_field=th.data.show_ord_prom[pickid]; | ||
| 9005 | + switch (discount_field){ | ||
| 9006 | + case 1: | ||
| 9007 | + good.shop_price=good.shop_price_y; | ||
| 9008 | + break; | ||
| 9009 | + case 2: | ||
| 9010 | + good.shop_price=good.market_price; | ||
| 9011 | + break; | ||
| 9012 | + } | ||
| 9013 | + }else{ | ||
| 9014 | + good=ut.deep_cp(th.data.old_bn_goods); | ||
| 9015 | + } | ||
| 9016 | + | ||
| 9017 | + th.setData({ | ||
| 9018 | + bn_goods:good | ||
| 9019 | + }) | ||
| 9020 | + wx.showLoading({ | ||
| 9021 | + title: "处理中.", | ||
| 9022 | + mark:true | ||
| 9023 | + }) | ||
| 9024 | + th.calculatePrice2() | ||
| 8923 | } | 9025 | } |
| 8924 | 9026 | ||
| 8925 | 9027 |
packageE/pages/cart/cart2/cart2.wxml
| @@ -693,6 +693,14 @@ | @@ -693,6 +693,14 @@ | ||
| 693 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} | 693 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} |
| 694 | </view> | 694 | </view> |
| 695 | 695 | ||
| 696 | + <!-- 订单促销取价规则的优化 --> | ||
| 697 | + <view class="set-mes" wx:if="{{show_ord_prom[bn_pick]}}"> | ||
| 698 | + <view class="use-item" bindtap='set_can_use_ord_prom_now'> | ||
| 699 | + <icon color="{{can_use_ord_prom[bn_pick]?'red':'gray'}}" size="16" type="success"></icon> | ||
| 700 | + <view class="yu_er">参与订单促销</view> | ||
| 701 | + </view> | ||
| 702 | + </view> | ||
| 703 | + | ||
| 696 | <view class="xc-coupon-frame flex-center" data-bn="1" bindtap="open_coupon_list" data-pickid="{{bn_pick}}" hidden="{{(selected_quan_list?selected_quan_list.length:0)+ (get_by_quan_list && bn_exp_type==0?get_by_quan_list.length:0)<=0}}" wx:if="{{is_coupon > 0 && ((selected_quan_list && selected_quan_list.length>0) || get_by_quan_list!=null)}}"> | 704 | <view class="xc-coupon-frame flex-center" data-bn="1" bindtap="open_coupon_list" data-pickid="{{bn_pick}}" hidden="{{(selected_quan_list?selected_quan_list.length:0)+ (get_by_quan_list && bn_exp_type==0?get_by_quan_list.length:0)<=0}}" wx:if="{{is_coupon > 0 && ((selected_quan_list && selected_quan_list.length>0) || get_by_quan_list!=null)}}"> |
| 697 | <view class="work-frame flex-space-between"> | 705 | <view class="work-frame flex-space-between"> |
| 698 | <view class="work"> | 706 | <view class="work"> |