Commit e2015e88c3fb95c9d11dbb0e15ad21b7c843f413
1 parent
fc8fd8a5
优惠促销多活动的后台优化
Showing
8 changed files
with
621 additions
and
55 deletions
packageE/pages/cart/cart2/cart2.js
@@ -678,10 +678,9 @@ Page({ | @@ -678,10 +678,9 @@ Page({ | ||
678 | }, | 678 | }, |
679 | 679 | ||
680 | 680 | ||
681 | - //获取促销活动的组合 | ||
682 | - cx_prom_group(prom_list){ | 681 | + //-- 获取促销活动的组合 -- |
682 | + cx_prom_group(prom_list,item1){ | ||
683 | var th=this; | 683 | var th=this; |
684 | - | ||
685 | //需要读者系统顺序 | 684 | //需要读者系统顺序 |
686 | var json_d =this.data.json_d; | 685 | var json_d =this.data.json_d; |
687 | var auto_promote_sale=json_d.auto_promote_sale; | 686 | var auto_promote_sale=json_d.auto_promote_sale; |
@@ -691,10 +690,13 @@ Page({ | @@ -691,10 +690,13 @@ Page({ | ||
691 | sort_type='prom_type'; | 690 | sort_type='prom_type'; |
692 | }else{ | 691 | }else{ |
693 | var auto_promote_sale=auto_promote_sale.split(','); | 692 | var auto_promote_sale=auto_promote_sale.split(','); |
694 | - //-- 循环处理 -- | 693 | + //--- 循环处理 --- |
695 | prom_list.map(function (e){ | 694 | prom_list.map(function (e){ |
696 | var fd=auto_promote_sale.indexOf(e.prom_type+''); | 695 | var fd=auto_promote_sale.indexOf(e.prom_type+''); |
697 | e.sort=fd; | 696 | e.sort=fd; |
697 | + if(e.prom_type==item1.prom_type){ | ||
698 | + e.sele=1; | ||
699 | + } | ||
698 | }) | 700 | }) |
699 | sort_type='sort'; | 701 | sort_type='sort'; |
700 | } | 702 | } |
@@ -703,7 +705,6 @@ Page({ | @@ -703,7 +705,6 @@ Page({ | ||
703 | function comp(a, b) { | 705 | function comp(a, b) { |
704 | return a[sort_type]-b[sort_type]; //升序 | 706 | return a[sort_type]-b[sort_type]; //升序 |
705 | } | 707 | } |
706 | - | ||
707 | //使用sort排序 | 708 | //使用sort排序 |
708 | prom_list.sort(comp); | 709 | prom_list.sort(comp); |
709 | }, | 710 | }, |
@@ -750,25 +751,10 @@ Page({ | @@ -750,25 +751,10 @@ Page({ | ||
750 | //-- 判断组合购是总数量是不是存在 -- | 751 | //-- 判断组合购是总数量是不是存在 -- |
751 | var no_zh_num={}; | 752 | var no_zh_num={}; |
752 | 753 | ||
753 | - //-------- 如果是立即购买过来的时候 或者购买的商品只有一种的时候 --- | ||
754 | - if(carr.length==1){ | ||
755 | - var item1=carr[0]; | ||
756 | - await th.buy_pro_group(item1,1); | ||
757 | - | ||
758 | - if(item1.more_cx){ | ||
759 | - //-- 对活动进行排序 -- | ||
760 | - th.cx_prom_group(item1.more_cx); | ||
761 | - } | ||
762 | - | ||
763 | - if(item1.prom_type==0){ | ||
764 | - item1.prom_type=item1.more_cx[0].prom_type; | ||
765 | - item1.prom_type=item1.more_cx[0].prom_id; | ||
766 | - } | ||
767 | - } | ||
768 | - | ||
769 | - | ||
770 | for (var i = 0; i < carr.length; i++) { | 754 | for (var i = 0; i < carr.length; i++) { |
771 | var item1 = carr[i]; | 755 | var item1 = carr[i]; |
756 | + //-- 获取一下商品的所有活动 -- | ||
757 | + await th.buy_pro_group(item1); | ||
772 | //把已经购买了多少见的内容填入 | 758 | //把已经购买了多少见的内容填入 |
773 | var goodsbuynum = 0, promgoodsbuynum = 0; | 759 | var goodsbuynum = 0, promgoodsbuynum = 0; |
774 | //--要获得商品,该用户买了多少件,同步应用-- | 760 | //--要获得商品,该用户买了多少件,同步应用-- |
@@ -1153,6 +1139,13 @@ Page({ | @@ -1153,6 +1139,13 @@ Page({ | ||
1153 | //-- 循环计算一下线下取价 -- | 1139 | //-- 循环计算一下线下取价 -- |
1154 | for (var k = 0; k < arr.length; k++) { | 1140 | for (var k = 0; k < arr.length; k++) { |
1155 | var c_item = arr[k]; | 1141 | var c_item = arr[k]; |
1142 | + | ||
1143 | + //-- 要进行归类一下活动 -- | ||
1144 | + await th.cart_cx_group(arr[k].goods,c_item,(show_can_cx)=>{ | ||
1145 | + arr[k].show_can_cx=show_can_cx; | ||
1146 | + }) | ||
1147 | + | ||
1148 | + | ||
1156 | var item = arr[k].goods; | 1149 | var item = arr[k].goods; |
1157 | var offline_price = 0; | 1150 | var offline_price = 0; |
1158 | var offline_num = 0; | 1151 | var offline_num = 0; |
@@ -1201,8 +1194,7 @@ Page({ | @@ -1201,8 +1194,7 @@ Page({ | ||
1201 | await getApp().request.promisePost("/api/weshop/order/getrebateSum", { | 1194 | await getApp().request.promisePost("/api/weshop/order/getrebateSum", { |
1202 | is_json: 1, data: req_d | 1195 | is_json: 1, data: req_d |
1203 | }).then(rs => { | 1196 | }).then(rs => { |
1204 | - | ||
1205 | - if (rs.data.code == 0) back_data = rs.data.data; | 1197 | + if (rs.data.code == 0) back_data = rs.data.data; |
1206 | }); | 1198 | }); |
1207 | 1199 | ||
1208 | if (back_data && parseFloat(back_data)) { | 1200 | if (back_data && parseFloat(back_data)) { |
@@ -1876,7 +1868,7 @@ Page({ | @@ -1876,7 +1868,7 @@ Page({ | ||
1876 | if (is_zh_ok) { | 1868 | if (is_zh_ok) { |
1877 | 1869 | ||
1878 | //-- 组合的数组填充一下 -- | 1870 | //-- 组合的数组填充一下 -- |
1879 | - th.data.zuhe_map[zh_pro0.id] = zh_pro0; | 1871 | + th.data.zhhe_act_map[zh_pro0.id] = zh_pro0; |
1880 | 1872 | ||
1881 | var url1 = "/api/weshop/prom/zhbuyGoods/page"; | 1873 | var url1 = "/api/weshop/prom/zhbuyGoods/page"; |
1882 | var req_data = { | 1874 | var req_data = { |
@@ -2071,13 +2063,13 @@ Page({ | @@ -2071,13 +2063,13 @@ Page({ | ||
2071 | if (is_state == 1) { | 2063 | if (is_state == 1) { |
2072 | //-- 按件进行计算 -- | 2064 | //-- 按件进行计算 -- |
2073 | if (fir_act.prom_type == 1) { | 2065 | if (fir_act.prom_type == 1) { |
2074 | - if (fir_act.condition > item1.goods_num) { | 2066 | + if (fir_act.condition <= item1.goods_num) { |
2075 | item1.more_cx.push(push_item); | 2067 | item1.more_cx.push(push_item); |
2076 | } | 2068 | } |
2077 | }else{ | 2069 | }else{ |
2078 | //-- 按数量进行计算 -- | 2070 | //-- 按数量进行计算 -- |
2079 | var all_price = item1.goods_price * item1.goods_num; | 2071 | var all_price = item1.goods_price * item1.goods_num; |
2080 | - if (parseFloat(fir_act.condition) > parseFloat(parseFloat(all_price).toFixed(2))) { | 2072 | + if (parseFloat(fir_act.condition) <= parseFloat(parseFloat(all_price).toFixed(2))) { |
2081 | item1.more_cx.push(push_item); | 2073 | item1.more_cx.push(push_item); |
2082 | } | 2074 | } |
2083 | } | 2075 | } |
@@ -7349,6 +7341,355 @@ Page({ | @@ -7349,6 +7341,355 @@ Page({ | ||
7349 | } | 7341 | } |
7350 | } | 7342 | } |
7351 | return false; | 7343 | return false; |
7344 | + }, | ||
7345 | + | ||
7346 | + | ||
7347 | + //-- 判读一下促销分组的问题 -- | ||
7348 | + async cart_cx_group(goods,car_item,func){ | ||
7349 | + | ||
7350 | + //更改活动的时候,就不能再重新计算活动,只有再加减数量和选择商品的时候,就要重新计算活动 | ||
7351 | + if(this.data.change_act){ | ||
7352 | + var show_can_cx=car_item.show_can_cx; | ||
7353 | + for(var k in show_can_cx){ | ||
7354 | + var k_item=show_can_cx[k]; | ||
7355 | + var ck_prom_type=null; | ||
7356 | + //-- 如果是多活动,先把活动按照后台的顺序排序一下, | ||
7357 | + //-- 同时确定一下商品最终要用什么活动来购买计算。 --就是要进行切换 -- | ||
7358 | + if(k_item.act_arr.length>1){ | ||
7359 | + var json_d =this.data.json_d; | ||
7360 | + var auto_promote_sale=json_d.auto_promote_sale; | ||
7361 | + var sort_type=''; | ||
7362 | + | ||
7363 | + if(!auto_promote_sale){ | ||
7364 | + sort_type='prom_type'; | ||
7365 | + }else{ | ||
7366 | + var auto_promote_sale=auto_promote_sale.split(','); | ||
7367 | + //-- 循环处理 -- | ||
7368 | + k_item.act_arr.map(function (e){ | ||
7369 | + var fd=auto_promote_sale.indexOf(e.prom_type+''); | ||
7370 | + e.sort=fd; | ||
7371 | + }) | ||
7372 | + sort_type='sort'; | ||
7373 | + } | ||
7374 | + //-- 排序一下,进行升序 -- | ||
7375 | + function comp(a, b) { | ||
7376 | + return a[sort_type]-b[sort_type]; //升序 | ||
7377 | + } | ||
7378 | + //活动要排序一下 | ||
7379 | + k_item.act_arr.sort(comp); | ||
7380 | + | ||
7381 | + //确定一下活动,先看一下有没有选择的活动 | ||
7382 | + ck_prom_type=k_item.act_arr.find(function (el){ | ||
7383 | + return el.sele; | ||
7384 | + }) | ||
7385 | + | ||
7386 | + } | ||
7387 | + //-- 此时已经确定了商品的活动是什么类型的,可以确定购物车中商品的具体活动进行金额的计算 -- | ||
7388 | + if(!ck_prom_type) ck_prom_type=k_item.act_arr[0]; | ||
7389 | + | ||
7390 | + //-- 此时要把购物车中的商品确定活动 -- | ||
7391 | + for (var b=0; b<ck_prom_type.goods.length;b++){ | ||
7392 | + //-- 开始查找 -- | ||
7393 | + var fg=goods.findIndex(function (g_item){ | ||
7394 | + return g_item.goods_id==ck_prom_type.goods[b].goods_id && [0,3,5,7,10].indexOf(g_item.prom_type)>-1; | ||
7395 | + }) | ||
7396 | + if(fg>-1){ | ||
7397 | + goods[fg].prom_type=ck_prom_type.prom_type; | ||
7398 | + goods[fg].prom_id=ck_prom_type.prom_id; | ||
7399 | + } | ||
7400 | + } | ||
7401 | + | ||
7402 | + } | ||
7403 | + func(show_can_cx); | ||
7404 | + return false; | ||
7405 | + } | ||
7406 | + | ||
7407 | + var th=this; | ||
7408 | + //-- 促销活动对象表,最初的map表,包含活动类型,活动id,goods商品 --- | ||
7409 | + var cx_act_map=[]; | ||
7410 | + for(var i=0; i<goods.length;i++){ | ||
7411 | + var c_item=goods[i]; | ||
7412 | + //没有选中 | ||
7413 | + if(!c_item.selected) continue; | ||
7414 | + //如果是秒杀之类是商品 | ||
7415 | + if([1,2,4,6,8,9].indexOf(c_item.prom_type)>-1) continue; | ||
7416 | + | ||
7417 | + //-- 把活动进行规整 -- | ||
7418 | + var more_cx=c_item.more_cx; | ||
7419 | + for (var j=0;j<more_cx.length;j++){ | ||
7420 | + var n_item=more_cx[j]; | ||
7421 | + var key=n_item.prom_type+'-'+n_item.prom_id; | ||
7422 | + var fd=cx_act_map.find(function (e){ | ||
7423 | + return e.key==key; | ||
7424 | + }) | ||
7425 | + if(fd){ | ||
7426 | + fd.goods.push(c_item); | ||
7427 | + }else{ | ||
7428 | + var p_item={key:key,prom_type:n_item.prom_type,prom_id:n_item.prom_id,goods:[],act:n_item}; | ||
7429 | + p_item.goods.push(c_item); | ||
7430 | + cx_act_map.push(p_item); | ||
7431 | + } | ||
7432 | + } | ||
7433 | + goods[i].prom_type=0; | ||
7434 | + goods[i].prom_id=0; | ||
7435 | + } | ||
7436 | + //-- 如果活动数量大于1个,那么活动就要排序一下,有商品种类数最多排再前面,降序进行排列 -- | ||
7437 | + if(cx_act_map.length>1){ | ||
7438 | + //门店分类要排序下 | ||
7439 | + function compare(a, b) { | ||
7440 | + var value1 = a.goods.length; | ||
7441 | + var value2 = b.goods.length; | ||
7442 | + return value2 - value1; | ||
7443 | + } | ||
7444 | + cx_act_map.sort(compare); | ||
7445 | + } | ||
7446 | + //-- 能够进行最后计算的活动(包含切换) -- | ||
7447 | + var can_calc_cx=[]; | ||
7448 | + //-- 此时对数组的活动进行判断,看能不能达到购买数量的条件 -- | ||
7449 | + for(var ii=0;ii<cx_act_map.length;ii++){ | ||
7450 | + | ||
7451 | + var item_act_map=cx_act_map[ii]; | ||
7452 | + //如果活动有交集的时候,商品数量一样多(不是完全相同时,就是参与的商品有交集),就按照后台确定的活动顺序 | ||
7453 | + //如果活动商品数量少的和 活动数量多的 有交集,那么数量少的不显示,也不计算 | ||
7454 | + //如果活动的商品一样(那就是多活动切换),优先计算的活动按照后台确定的活动顺序 | ||
7455 | + if(!th.check_ok_cx_pro(item_act_map,can_calc_cx)){ | ||
7456 | + continue; | ||
7457 | + } | ||
7458 | + switch(item_act_map.prom_type){ | ||
7459 | + case 3: | ||
7460 | + var fir_act=item_act_map.act.fir_act; | ||
7461 | + var t_goods=item_act_map.goods; | ||
7462 | + var all_num=0; | ||
7463 | + var all_pri=0; | ||
7464 | + for(var f=0;f<t_goods.length;f++){ | ||
7465 | + all_num+=t_goods[f].goods_num; | ||
7466 | + all_pri+=t_goods[f].goods_num*t_goods[f].goods_price; | ||
7467 | + } | ||
7468 | + | ||
7469 | + var yh_ok=1; | ||
7470 | + switch (fir_act.prom_type){ | ||
7471 | + case 0: | ||
7472 | + if(all_pri<fir_act.condition) { | ||
7473 | + yh_ok=0; | ||
7474 | + } | ||
7475 | + break; | ||
7476 | + case 1: | ||
7477 | + if(all_num<fir_act.condition) { | ||
7478 | + yh_ok=0; | ||
7479 | + } | ||
7480 | + break; | ||
7481 | + } | ||
7482 | + | ||
7483 | + //-- 如果有满足优惠条件的时候 -- | ||
7484 | + if(yh_ok){ | ||
7485 | + can_calc_cx.push(item_act_map) | ||
7486 | + } | ||
7487 | + break | ||
7488 | + | ||
7489 | + case 7: | ||
7490 | + //-- 活动列表 -- | ||
7491 | + var zhact_gdlist=item_act_map.act.gdlist; | ||
7492 | + var zh_goods=item_act_map.goods; | ||
7493 | + | ||
7494 | + //--- 要循环计算一下商品的已购数量 --- | ||
7495 | + for(var h=0;h<zh_goods.length;h++){ | ||
7496 | + //-- 商品的限购 -- | ||
7497 | + var promgoodsbuynum = 0; | ||
7498 | + var res=await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { | ||
7499 | + data: { | ||
7500 | + store_id: os.stoid, | ||
7501 | + user_id: getApp().globalData.user_id, | ||
7502 | + goods_id: zh_goods[h].goods_id, | ||
7503 | + prom_type: 7, | ||
7504 | + prom_id: item_act_map.prom_id | ||
7505 | + }, | ||
7506 | + }) | ||
7507 | + if(res.data.code==0 && res.data.data && res.data.data.promgoodsbuynum){ | ||
7508 | + promgoodsbuynum = res.data.data.promgoodsbuynum; | ||
7509 | + } | ||
7510 | + zh_goods[h].zh_b_num=promgoodsbuynum; | ||
7511 | + } | ||
7512 | + //-- 放到map中 -- | ||
7513 | + th.data.zuhe_map_good[item_act_map.prom_id] = zhact_gdlist; | ||
7514 | + if(!car_item.zh_prom_goods) car_item.zh_prom_goods={}; | ||
7515 | + car_item.zh_prom_goods[item_act_map.prom_id] = zhact_gdlist; | ||
7516 | + | ||
7517 | + var zh_pro0 = null; | ||
7518 | + //-- 获取活动信息 -- | ||
7519 | + var url = "/api/weshop/prom/zhbuy/get/" + os.stoid + "/" + item_act_map.prom_id + "/" + getApp().globalData.user_id; | ||
7520 | + await getApp().request.promiseGet(url, {}).then(rh => { | ||
7521 | + zh_pro0 = rh.data.data; | ||
7522 | + }) | ||
7523 | + if(!zh_pro0) break; | ||
7524 | + //当满足组合的要求:总数要满足,起购数要满足 | ||
7525 | + if(zh_calc.ch_zh_ok(zh_pro0,zhact_gdlist,zh_goods,th)){ | ||
7526 | + can_calc_cx.push(item_act_map) | ||
7527 | + } | ||
7528 | + break; | ||
7529 | + default: | ||
7530 | + can_calc_cx.push(item_act_map); | ||
7531 | + } | ||
7532 | + | ||
7533 | + } | ||
7534 | + | ||
7535 | + //-- 此时来给满足条件的活动进行分组~~相同参与商品和数量的归纳再一起, -- | ||
7536 | + //-- 同时相同商品数量的活动,还要看取那一个来进行计算金额。 默认的时候是按照后台的顺序。-- | ||
7537 | + //-- 有选择的时候,就按照切换选择了什么就按照什么来计算 -- | ||
7538 | + var show_can_cx={}; | ||
7539 | + | ||
7540 | + if(can_calc_cx.length){ | ||
7541 | + for(var p=0;p<can_calc_cx.length;p++){ | ||
7542 | + var ch_map=[]; | ||
7543 | + can_calc_cx[p].goods.map(function (gd){ | ||
7544 | + ch_map.push(gd.goods_id); | ||
7545 | + }) | ||
7546 | + ch_map.sort(); | ||
7547 | + //-- 先找一下,有没有参与的商品一模一样的 -- | ||
7548 | + var fd=show_can_cx[ch_map.join()]; | ||
7549 | + if(fd){ | ||
7550 | + //-- 把数组添加进去 --ch_map | ||
7551 | + fd.act_arr.push(can_calc_cx[p]) | ||
7552 | + }else{ | ||
7553 | + var e={ch_map:ch_map,act_arr:[]}; | ||
7554 | + if(ch_map.length>1){ | ||
7555 | + e.is_duo_gd=1; | ||
7556 | + } | ||
7557 | + e.act_arr.push(can_calc_cx[p]); | ||
7558 | + show_can_cx[ch_map.join()]=e; | ||
7559 | + } | ||
7560 | + } | ||
7561 | + } | ||
7562 | + | ||
7563 | + for(var k in show_can_cx){ | ||
7564 | + var k_item=show_can_cx[k]; | ||
7565 | + var ck_prom_type=null; | ||
7566 | + //-- 如果是多活动,先把活动按照后台的顺序排序一下, | ||
7567 | + //-- 同时确定一下商品最终要用什么活动来购买计算。 --就是要进行切换 -- | ||
7568 | + if(k_item.act_arr.length>1){ | ||
7569 | + var json_d =this.data.json_d; | ||
7570 | + var auto_promote_sale=json_d.auto_promote_sale; | ||
7571 | + var sort_type=''; | ||
7572 | + | ||
7573 | + if(!auto_promote_sale){ | ||
7574 | + sort_type='prom_type'; | ||
7575 | + }else{ | ||
7576 | + var auto_promote_sale=auto_promote_sale.split(','); | ||
7577 | + //-- 循环处理 -- | ||
7578 | + k_item.act_arr.map(function (e){ | ||
7579 | + var fd=auto_promote_sale.indexOf(e.prom_type+''); | ||
7580 | + e.sort=fd; | ||
7581 | + }) | ||
7582 | + sort_type='sort'; | ||
7583 | + } | ||
7584 | + //-- 排序一下,进行升序 -- | ||
7585 | + function comp(a, b) { | ||
7586 | + return a[sort_type]-b[sort_type]; //升序 | ||
7587 | + } | ||
7588 | + //活动要排序一下 | ||
7589 | + k_item.act_arr.sort(comp); | ||
7590 | + | ||
7591 | + //确定一下活动,先看一下有没有选择的活动 | ||
7592 | + ck_prom_type=k_item.act_arr.find(function (el){ | ||
7593 | + return el.sele; | ||
7594 | + }) | ||
7595 | + | ||
7596 | + } | ||
7597 | + //-- 此时已经确定了商品的活动是什么类型的,可以确定购物车中商品的具体活动进行金额的计算 -- | ||
7598 | + if(!ck_prom_type) ck_prom_type=k_item.act_arr[0]; | ||
7599 | + //-- 此时要把购物车中的商品确定活动 -- | ||
7600 | + for (var b=0; b<ck_prom_type.goods.length;b++){ | ||
7601 | + //-- 开始查找 -- | ||
7602 | + var fg=goods.findIndex(function (g_item){ | ||
7603 | + return g_item.goods_id==ck_prom_type.goods[b].goods_id && [0,3,5,7,10].indexOf(g_item.prom_type)>-1; | ||
7604 | + }) | ||
7605 | + if(fg>-1){ | ||
7606 | + goods[fg].prom_type=ck_prom_type.prom_type; | ||
7607 | + goods[fg].prom_id=ck_prom_type.prom_id; | ||
7608 | + } | ||
7609 | + } | ||
7610 | + } | ||
7611 | + | ||
7612 | + //-- 显示到前端,并切换 -- | ||
7613 | + //th.setData({show_can_cx}) | ||
7614 | + //--- 调用回调函数 --- | ||
7615 | + func(show_can_cx); | ||
7616 | + }, | ||
7617 | + //-- 查看活动参与的商品是不是有重复交集的地方,是不是一样的商品数量,can_calc_cx这个数组也是按照商品的数量降序排列的-- | ||
7618 | + check_ok_cx_pro(item_act_map,can_calc_cx){ | ||
7619 | + //-- 加入第一个,返回真 -- | ||
7620 | + if(!can_calc_cx.length) return true; | ||
7621 | + var th_goods=item_act_map.goods; | ||
7622 | + for(var i=0;i<can_calc_cx.length;i++){ | ||
7623 | + var can_goods=can_calc_cx[i].goods; | ||
7624 | + //计算一下有交集的数量,没有交集,OK | ||
7625 | + var num=this.hasJiao(can_goods,th_goods); | ||
7626 | + if(!num) continue; | ||
7627 | + //计算一下俩个shu | ||
7628 | + if(can_goods.length==th_goods.length && can_goods.length==num){ | ||
7629 | + return true; | ||
7630 | + } | ||
7631 | + if(can_goods.length>th_goods.length){ | ||
7632 | + return false; | ||
7633 | + } | ||
7634 | + } | ||
7635 | + return true; | ||
7636 | + }, | ||
7637 | + //-- 判断是不是有交集,返回交集的数量 -- | ||
7638 | + hasJiao(arr1, arr2){ | ||
7639 | + var num=0; | ||
7640 | + arr1.map(function (e){ | ||
7641 | + var idx=arr2.findIndex(function (g){ | ||
7642 | + return g.goods_id==e.goods_id; | ||
7643 | + }) | ||
7644 | + if(idx>-1) num++; | ||
7645 | + }) | ||
7646 | + return num; | ||
7647 | + }, | ||
7648 | + | ||
7649 | + //-- 开始显示活动的弹出 -- | ||
7650 | + switch_cx_group:function (e){ | ||
7651 | + var idx=e.currentTarget.dataset.index; | ||
7652 | + var gd_key=e.currentTarget.dataset.gd_key; | ||
7653 | + this.data.sele_cx_group_cidx=idx; | ||
7654 | + this.data.cx_group_gd_key=gd_key; | ||
7655 | + //-- 获取到-- | ||
7656 | + var cx_prom_group=this.data.requestData[idx].show_can_cx[gd_key].act_arr; | ||
7657 | + | ||
7658 | + var cx_arr=[]; | ||
7659 | + var find_sele=0; | ||
7660 | + for (var h=0;h<cx_prom_group.length;h++){ | ||
7661 | + //-- 看有没有选中的活动 -- | ||
7662 | + if(cx_prom_group[h].sele){ | ||
7663 | + find_sele=1; | ||
7664 | + } | ||
7665 | + cx_arr.push(cx_prom_group[h].act); | ||
7666 | + } | ||
7667 | + //-- 如果没有,就默认第一个为选中 -- | ||
7668 | + //-- if(!find_sele) cx_arr[0].sele=1; -- | ||
7669 | + var cp_arr=JSON.parse(JSON.stringify(cx_arr)); | ||
7670 | + var pro_pop = this.selectComponent("#pro_pop"); //组件的id | ||
7671 | + pro_pop.set_init(1,cx_arr,1); | ||
7672 | + }, | ||
7673 | + | ||
7674 | + //--- 选择回来时候的选择 --- | ||
7675 | + sure_cx_group:function(e){ | ||
7676 | + var sele_idx=e.detail.sele_idx; | ||
7677 | + var idx=this.data.sele_cx_group_cidx; | ||
7678 | + var gd_key= this.data.cx_group_gd_key; | ||
7679 | + //-- 获取到-- | ||
7680 | + var cx_prom_group=this.data.requestData[idx].show_can_cx[gd_key].act_arr; | ||
7681 | + | ||
7682 | + for(var dx=0;dx<cx_prom_group.length;dx++){ | ||
7683 | + if(dx!=sele_idx) cx_prom_group[dx].sele=0; | ||
7684 | + else cx_prom_group[dx].sele=1; | ||
7685 | + } | ||
7686 | + | ||
7687 | + //选择后就要把活动确定下来 | ||
7688 | + | ||
7689 | + //重新计算价格 | ||
7690 | + this.calculatePrice(); | ||
7691 | + | ||
7352 | } | 7692 | } |
7353 | 7693 | ||
7694 | + | ||
7354 | }); | 7695 | }); |
packageE/pages/cart/cart2/cart2.wxml
1 | <!-- 促销弹出框 --> | 1 | <!-- 促销弹出框 --> |
2 | -<pro_pop id="pro_pop"></pro_pop> | 2 | +<pro_pop id="pro_pop" bind:sure_cx_group="sure_cx_group"></pro_pop> |
3 | 3 | ||
4 | <wxs module="filter" src="c_filter.wxs"></wxs> | 4 | <wxs module="filter" src="c_filter.wxs"></wxs> |
5 | <wxs src="filter.wxs" module="util"></wxs> | 5 | <wxs src="filter.wxs" module="util"></wxs> |
@@ -85,32 +85,85 @@ | @@ -85,32 +85,85 @@ | ||
85 | <!-- <view>门店:{{item.pname}}</view> --> | 85 | <!-- <view>门店:{{item.pname}}</view> --> |
86 | <view>{{item.pname}}</view> | 86 | <view>{{item.pname}}</view> |
87 | </view> | 87 | </view> |
88 | - <view class="order-detail" wx:for="{{item.goods}}" wx:for-index="idx" wx:for-item="items"> | ||
89 | - <!----商品图片-----> | ||
90 | - <view class="goods-img" style="position: relative; overflow: hidden" bindtap="go_url" data-url="/pages/goods/goodsInfo/goodsInfo?goods_id={{items.goods_id}}&prom_type={{items.prom_type}}&prom_id={{items.prom_id}}"> | ||
91 | - <image wx:if="{{items.is_gift}}" src="{{imgUrl}}/miniapp/images/giveaway.png" class="gift_image"></image> | ||
92 | - <text class="zuhe" wx:if="{{items.prom_type==7}}">组合购</text> | ||
93 | - <image class="wh100 bdr14" src="{{items.original_img}}" binderror='cart_set_err' data-err='cartlist[{{pidx}}].goods[{{idx}}].original_img'></image> | ||
94 | - </view> | ||
95 | - <!----商品名称规格----> | ||
96 | - <navigator class="order-cont" url="/pages/goods/goodsInfo/goodsInfo?goods_id={{items.goods_id}}&prom_type={{items.prom_type}}&prom_id={{items.prom_id}}"> | ||
97 | - <view class="goods-name ellipsis-2">{{items.goods_name}}</view> | ||
98 | - <!-- 商品属性 --> | ||
99 | - <view class="flex-vertical fs28 color-gray n_guige"> | ||
100 | - <view class="goods-color"> | ||
101 | - <block><text>{{filters.show_gui_ge(items.goods_spec,items.goods_color)}}</text></block> | 88 | + |
89 | + <!-- for循环使用 --> | ||
90 | + <block wx:for="{{item.goods}}" wx:for-index="idx" wx:for-item="items"> | ||
91 | + <view class="order-detail" > | ||
92 | + <!----商品图片-----> | ||
93 | + <view class="goods-img" style="position: relative; overflow: hidden" bindtap="go_url" data-url="/pages/goods/goodsInfo/goodsInfo?goods_id={{items.goods_id}}&prom_type={{items.prom_type}}&prom_id={{items.prom_id}}"> | ||
94 | + <image wx:if="{{items.is_gift}}" src="{{imgUrl}}/miniapp/images/giveaway.png" class="gift_image"></image> | ||
95 | + <text class="zuhe" wx:if="{{items.prom_type==7}}">组合购</text> | ||
96 | + <image class="wh100 bdr14" src="{{items.original_img}}" binderror='cart_set_err' data-err='cartlist[{{pidx}}].goods[{{idx}}].original_img'></image> | ||
102 | </view> | 97 | </view> |
98 | + <!----商品名称规格----> | ||
99 | + <navigator class="order-cont" url="/pages/goods/goodsInfo/goodsInfo?goods_id={{items.goods_id}}&prom_type={{items.prom_type}}&prom_id={{items.prom_id}}"> | ||
100 | + <view class="goods-name ellipsis-2">{{items.goods_name}}</view> | ||
101 | + <!-- 商品属性 --> | ||
102 | + <view class="flex-vertical fs28 color-gray n_guige"> | ||
103 | + <view class="goods-color"> | ||
104 | + <block><text>{{filters.show_gui_ge(items.goods_spec,items.goods_color)}}</text></block> | ||
105 | + </view> | ||
106 | + </view> | ||
107 | + | ||
108 | + <!-----商品名称规格------> | ||
109 | + <view class="order-num flex-space-between"> | ||
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> | ||
111 | + <view wx:else class="co-red">¥<text class="fs36">{{filters.toFix(items.goods_price,2)}}</text></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> | ||
113 | + <view class="goods-num">x{{items.goods_num}}</view> | ||
114 | + </view> | ||
115 | + </navigator> | ||
103 | </view> | 116 | </view> |
117 | + <!-- 验证活动是不是多个,要不要显示切换 --> | ||
118 | + <!-- 新增促销多活动的排版 --> | ||
119 | + <view class="bdb16" | ||
120 | + wx:if="{{util.is_more_act(items,item.show_can_cx) && item.show_can_cx[items.goods_id] && item.show_can_cx[items.goods_id].act_arr.length>1}}"> | ||
121 | + <view bindtap="switch_cx_group" | ||
122 | + data-index="{{pidx}}" | ||
123 | + data-gd_key="{{items.goods_id}}" | ||
124 | + class="cx-frame flex" style="position: relative"> | ||
125 | + <view class="cx-sizs fs30">促销</view> | ||
126 | + <view class="flex ai_c f1 pdh20"> | ||
127 | + <view class="xc-coupon-fram" wx:for="{{item.show_can_cx[items.goods_id].act_arr}}" > | ||
128 | + <view wx:if="{{item.prom_type==3}}" class="xc-coupon t-c four-level-word">优惠促销</view> | ||
129 | + <view wx:if="{{item.prom_type==5}}" class="xc-coupon t-c four-level-word">搭配促销</view> | ||
130 | + <view wx:if="{{item.prom_type==7}}" class="xc-coupon t-c four-level-word">组合购</view> | ||
131 | + <view wx:if="{{item.prom_type==10}}" class="xc-coupon t-c four-level-word">阶梯促销</view> | ||
132 | + </view> | ||
133 | + </view> | ||
134 | + <view class="cx-obtain-coupon wsize"> | ||
135 | + <text class="bg_jj"></text> | ||
136 | + </view> | ||
137 | + </view> | ||
138 | + </view> | ||
139 | + </block> | ||
104 | 140 | ||
105 | - <!-----商品名称规格------> | ||
106 | - <view class="order-num flex-space-between"> | ||
107 | - <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> | ||
108 | - <view wx:else class="co-red">¥<text class="fs36">{{filters.toFix(items.goods_price,2)}}</text></view> | ||
109 | - <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> | ||
110 | - <view class="goods-num">x{{items.goods_num}}</view> | 141 | + <!--此时是多个商品参与活动的切换 验证活动是不是多个,要不要显示切换 --> |
142 | + <!-- 新增促销多活动的排版 --> | ||
143 | + <block wx:if="{{item.show_can_cx}}"> | ||
144 | + <block wx:for="{{item.show_can_cx}}" wx:for-item="pitem"> | ||
145 | + <view class="bdb16" wx:if="{{pitem.is_duo_gd && pitem.act_arr.length>1}}" > | ||
146 | + <view bindtap="switch_cx_group" | ||
147 | + data-index="{{pidx}}" | ||
148 | + data-gd_key="{{index}}" | ||
149 | + class="cx-frame flex" style="position: relative"> | ||
150 | + <view class="cx-sizs fs30">促销</view> | ||
151 | + <view class="flex ai_c f1 pdh20"> | ||
152 | + <view class="xc-coupon-fram" wx:for="{{pitem.act_arr}}" > | ||
153 | + <view wx:if="{{item.prom_type==3}}" class="xc-coupon t-c four-level-word">优惠促销</view> | ||
154 | + <view wx:if="{{item.prom_type==5}}" class="xc-coupon t-c four-level-word">搭配促销</view> | ||
155 | + <view wx:if="{{item.prom_type==7}}" class="xc-coupon t-c four-level-word">组合购</view> | ||
156 | + <view wx:if="{{item.prom_type==10}}" class="xc-coupon t-c four-level-word">阶梯促销</view> | ||
157 | + </view> | ||
158 | + </view> | ||
159 | + <view class="cx-obtain-coupon wsize"> | ||
160 | + <text class="bg_jj"></text> | ||
161 | + </view> | ||
162 | + </view> | ||
111 | </view> | 163 | </view> |
112 | - </navigator> | ||
113 | - </view> | 164 | + </block> |
165 | + </block> | ||
166 | + | ||
114 | 167 | ||
115 | <!-- 使用搭配 --> | 168 | <!-- 使用搭配 --> |
116 | <cart_collect_temp id="col{{pidx}}" | 169 | <cart_collect_temp id="col{{pidx}}" |
packageE/pages/cart/cart2/cart2.wxss
@@ -1143,3 +1143,81 @@ margin-left: 20rpx; | @@ -1143,3 +1143,81 @@ margin-left: 20rpx; | ||
1143 | font-size: 28rpx; | 1143 | font-size: 28rpx; |
1144 | } | 1144 | } |
1145 | 1145 | ||
1146 | + | ||
1147 | +.cx-frame { | ||
1148 | + /* border-top:3rpx solid #eee; */ | ||
1149 | + /* width:99%; | ||
1150 | + height: 95rpx; | ||
1151 | + line-height: 95rpx; | ||
1152 | + padding-left:24rpx; */ | ||
1153 | + padding: 20rpx; | ||
1154 | + background-color: #fff; | ||
1155 | +} | ||
1156 | + | ||
1157 | +.cx-frame .cx-sizs { | ||
1158 | + /* width: 68rpx; */ | ||
1159 | + /* height: 100%; */ | ||
1160 | + /* line-height: 100rpx; */ | ||
1161 | + /* overflow: hidden; */ | ||
1162 | + /* margin-left: 10rpx; */ | ||
1163 | +} | ||
1164 | + | ||
1165 | +.xc-coupon-fram { | ||
1166 | + position: relative; | ||
1167 | + margin-right: 16rpx; | ||
1168 | + /* width:200rpx; */ | ||
1169 | + /* padding-top:30rpx; */ | ||
1170 | + | ||
1171 | +} | ||
1172 | + | ||
1173 | +.xc-coupon-fram .xc-coupon { | ||
1174 | + /* width:175rpx ; | ||
1175 | + height: 40rpx; | ||
1176 | + line-height: 40rpx; */ | ||
1177 | + background-color: #d60021; | ||
1178 | + /* margin:0 auto; */ | ||
1179 | + color: #fff; | ||
1180 | + padding: 6rpx 20rpx; | ||
1181 | + | ||
1182 | +} | ||
1183 | + | ||
1184 | +.xc-coupon-fram .xc-circular { | ||
1185 | + width: 16rpx; | ||
1186 | + height: 16rpx; | ||
1187 | + background-color: white; | ||
1188 | + position: absolute; | ||
1189 | + top: 50%; | ||
1190 | + /* left: -10rpx; */ | ||
1191 | + transform: translateY(-50%); | ||
1192 | +} | ||
1193 | + | ||
1194 | +.cx-obtain-coupon { | ||
1195 | + /* width: 65rpx; | ||
1196 | + height: 100%; | ||
1197 | + padding-left:15rpx; */ | ||
1198 | + color: #d70025; | ||
1199 | + display: flex; | ||
1200 | + align-items: center; | ||
1201 | + /* position: absolute; | ||
1202 | + right: 5rpx; */ | ||
1203 | +} | ||
1204 | + | ||
1205 | +.bg_jj { | ||
1206 | + width: 14rpx; | ||
1207 | + height: 14rpx; | ||
1208 | + border-top: 2rpx solid #d70026; | ||
1209 | + border-right: 2rpx solid #d70026; | ||
1210 | + transform: rotateZ(45deg); | ||
1211 | + display: inline-block; | ||
1212 | + margin-bottom: 3rpx; | ||
1213 | +} | ||
1214 | + | ||
1215 | +.bg_jj.down { | ||
1216 | + transform: rotateZ(135deg); | ||
1217 | +} | ||
1218 | + | ||
1219 | +.bg_jj.up { | ||
1220 | + transform: rotateZ(-45deg); | ||
1221 | + margin-top: 6rpx; | ||
1222 | +} | ||
1223 | + |
packageE/pages/cart/cart2/filter.wxs
@@ -6,6 +6,15 @@ var format = function (text) { | @@ -6,6 +6,15 @@ var format = function (text) { | ||
6 | return text.replace(reg, '\n') | 6 | return text.replace(reg, '\n') |
7 | } | 7 | } |
8 | 8 | ||
9 | + | ||
10 | +//判断商品是不是有活动切换 | ||
11 | +function is_more_act(items,show_can_cx){ | ||
12 | + if([1,2,4,6,8,9].indexOf(items.prom_type)>-1) return false; | ||
13 | + if(!show_can_cx) return false; | ||
14 | + return true; | ||
15 | +} | ||
16 | + | ||
9 | module.exports = { | 17 | module.exports = { |
10 | - format: format | 18 | + format: format, |
19 | + is_more_act:is_more_act | ||
11 | } | 20 | } |
packageE/pages/cart/cart2/zh_calculate.js
@@ -539,6 +539,88 @@ module.exports = { | @@ -539,6 +539,88 @@ module.exports = { | ||
539 | } | 539 | } |
540 | } | 540 | } |
541 | return zhqty_bz_flag; | 541 | return zhqty_bz_flag; |
542 | + }, | ||
543 | + | ||
544 | + //-- 判断组合购有没有满足 --- | ||
545 | + ch_zh_ok(act,gdlist,c_goods,th){ | ||
546 | + //-- 寻找一下 -- | ||
547 | + function get_num(ite) { | ||
548 | + for (let v1 in c_goods) { | ||
549 | + var vh = c_goods[v1]; | ||
550 | + if (vh.goods_id == ite.goods_id) { | ||
551 | + return vh; | ||
552 | + } | ||
553 | + } | ||
554 | + return 0; | ||
555 | + } | ||
556 | + var goods =gdlist; | ||
557 | + var all_num=0; | ||
558 | + var need_to_buy=0; | ||
559 | + for (var i in goods) { | ||
560 | + var item = goods[i]; | ||
561 | + var cart_num = get_num(item).goods_num; | ||
562 | + var zh_b_num = get_num(item).zh_b_num; | ||
563 | + if (!cart_num) { | ||
564 | + if (item.zhqty) { | ||
565 | + need_to_buy += item.zhqty; | ||
566 | + } | ||
567 | + continue; | ||
568 | + } | ||
569 | + | ||
570 | + item.cart_num = cart_num; | ||
571 | + //-- 当商品有购买的时候,以及有限购的时候 -- | ||
572 | + if (item.buyqty > 0) { | ||
573 | + var cbuy = item.buyqty - zh_b_num; | ||
574 | + var key = item.goods_id + "" + act.id; | ||
575 | + if (th.data.in_zhact_gdmap_gp[key]) { | ||
576 | + var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap_gp[key]; | ||
577 | + } | ||
578 | + //当可买的数量为0 | ||
579 | + if (cbuy <= 0) { | ||
580 | + item.num = 0; | ||
581 | + } else { | ||
582 | + if (cbuy >= cart_num) item.num = cart_num; | ||
583 | + else { | ||
584 | + item.num = cbuy; | ||
585 | + } | ||
586 | + } | ||
587 | + } else { | ||
588 | + item.num = cart_num; | ||
589 | + } | ||
590 | + | ||
591 | + if (item.num) { | ||
592 | + all_num += item.num; | ||
593 | + //当有起购数的控制的时候 | ||
594 | + if (item.zhqty) { | ||
595 | + if (item.num < item.zhqty) { | ||
596 | + need_to_buy += item.zhqty - item.num; | ||
597 | + } | ||
598 | + } | ||
599 | + } else { | ||
600 | + if (item.zhqty) { | ||
601 | + need_to_buy += item.zhqty; | ||
602 | + } | ||
603 | + } | ||
604 | + } | ||
605 | + | ||
606 | + //当满足组合的要求:总数要满足,起购数要满足 | ||
607 | + if (all_num >= act.zhbuyqty && !need_to_buy) { | ||
608 | + //商品的列表 | ||
609 | + for (var u in goods) { | ||
610 | + var ite = goods[u]; | ||
611 | + if (ite.buyqty > 0 && ite.num > 0) { | ||
612 | + console.log(222, th.data.in_zhact_gdmap_gp); | ||
613 | + var key = ite.goods_id + "" + act.id; | ||
614 | + if (th.data.in_zhact_gdmap_gp[key]) { | ||
615 | + th.data.in_zhact_gdmap_gp[key] += ite.num; | ||
616 | + } else { | ||
617 | + th.data.in_zhact_gdmap_gp[key] = ite.num; | ||
618 | + } | ||
619 | + } | ||
620 | + } | ||
621 | + return true; | ||
622 | + } | ||
623 | + return false; | ||
542 | } | 624 | } |
543 | 625 | ||
544 | 626 |
pages/cart/cart/cart.js
@@ -325,13 +325,13 @@ Page({ | @@ -325,13 +325,13 @@ Page({ | ||
325 | if (is_state == 1) { | 325 | if (is_state == 1) { |
326 | //-- 按件进行计算 -- | 326 | //-- 按件进行计算 -- |
327 | if (fir_act.prom_type == 1) { | 327 | if (fir_act.prom_type == 1) { |
328 | - if (fir_act.condition > item1.goods_num) { | 328 | + if (fir_act.condition <= item1.goods_num) { |
329 | item1.more_cx.push(push_item); | 329 | item1.more_cx.push(push_item); |
330 | } | 330 | } |
331 | }else{ | 331 | }else{ |
332 | //-- 按数量进行计算 -- | 332 | //-- 按数量进行计算 -- |
333 | var all_price = item1.goods_price * item1.goods_num; | 333 | var all_price = item1.goods_price * item1.goods_num; |
334 | - if (parseFloat(fir_act.condition) > parseFloat(parseFloat(all_price).toFixed(2))) { | 334 | + if (parseFloat(fir_act.condition) <= parseFloat(parseFloat(all_price).toFixed(2))) { |
335 | item1.more_cx.push(push_item); | 335 | item1.more_cx.push(push_item); |
336 | } | 336 | } |
337 | } | 337 | } |
@@ -344,6 +344,8 @@ Page({ | @@ -344,6 +344,8 @@ Page({ | ||
344 | } | 344 | } |
345 | } | 345 | } |
346 | 346 | ||
347 | + console.log(JSON.stringify(item1.more_cx),333); | ||
348 | + | ||
347 | }, | 349 | }, |
348 | 350 | ||
349 | onLoad: function () { | 351 | onLoad: function () { |
pages/cart/cart/cart.wxml
@@ -158,14 +158,14 @@ | @@ -158,14 +158,14 @@ | ||
158 | <!-- 新增促销多活动的排版 --> | 158 | <!-- 新增促销多活动的排版 --> |
159 | <block wx:if="{{item.show_can_cx}}"> | 159 | <block wx:if="{{item.show_can_cx}}"> |
160 | <block wx:for="{{item.show_can_cx}}" wx:for-item="pitem"> | 160 | <block wx:for="{{item.show_can_cx}}" wx:for-item="pitem"> |
161 | - <view class="bdb16" wx:if="{{pitem.is_duo_gd}}" > | 161 | + <view class="bdb16" wx:if="{{pitem.is_duo_gd && pitem.act_arr.length>1}}" > |
162 | <view bindtap="switch_cx_group" | 162 | <view bindtap="switch_cx_group" |
163 | data-index="{{pidx}}" | 163 | data-index="{{pidx}}" |
164 | data-gd_key="{{index}}" | 164 | data-gd_key="{{index}}" |
165 | class="cx-frame flex" style="position: relative"> | 165 | class="cx-frame flex" style="position: relative"> |
166 | <view class="cx-sizs fs30">促销</view> | 166 | <view class="cx-sizs fs30">促销</view> |
167 | <view class="flex ai_c f1 pdh20"> | 167 | <view class="flex ai_c f1 pdh20"> |
168 | - <view class="xc-coupon-fram" wx:for="{{item.show_can_cx[index].act_arr}}" > | 168 | + <view class="xc-coupon-fram" wx:for="{{pitem.act_arr}}" > |
169 | <view wx:if="{{item.prom_type==3}}" class="xc-coupon t-c four-level-word">优惠促销</view> | 169 | <view wx:if="{{item.prom_type==3}}" class="xc-coupon t-c four-level-word">优惠促销</view> |
170 | <view wx:if="{{item.prom_type==5}}" class="xc-coupon t-c four-level-word">搭配促销</view> | 170 | <view wx:if="{{item.prom_type==5}}" class="xc-coupon t-c four-level-word">搭配促销</view> |
171 | <view wx:if="{{item.prom_type==7}}" class="xc-coupon t-c four-level-word">组合购</view> | 171 | <view wx:if="{{item.prom_type==7}}" class="xc-coupon t-c four-level-word">组合购</view> |