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 | 678 | }, |
679 | 679 | |
680 | 680 | |
681 | - //获取促销活动的组合 | |
682 | - cx_prom_group(prom_list){ | |
681 | + //-- 获取促销活动的组合 -- | |
682 | + cx_prom_group(prom_list,item1){ | |
683 | 683 | var th=this; |
684 | - | |
685 | 684 | //需要读者系统顺序 |
686 | 685 | var json_d =this.data.json_d; |
687 | 686 | var auto_promote_sale=json_d.auto_promote_sale; |
... | ... | @@ -691,10 +690,13 @@ Page({ |
691 | 690 | sort_type='prom_type'; |
692 | 691 | }else{ |
693 | 692 | var auto_promote_sale=auto_promote_sale.split(','); |
694 | - //-- 循环处理 -- | |
693 | + //--- 循环处理 --- | |
695 | 694 | prom_list.map(function (e){ |
696 | 695 | var fd=auto_promote_sale.indexOf(e.prom_type+''); |
697 | 696 | e.sort=fd; |
697 | + if(e.prom_type==item1.prom_type){ | |
698 | + e.sele=1; | |
699 | + } | |
698 | 700 | }) |
699 | 701 | sort_type='sort'; |
700 | 702 | } |
... | ... | @@ -703,7 +705,6 @@ Page({ |
703 | 705 | function comp(a, b) { |
704 | 706 | return a[sort_type]-b[sort_type]; //升序 |
705 | 707 | } |
706 | - | |
707 | 708 | //使用sort排序 |
708 | 709 | prom_list.sort(comp); |
709 | 710 | }, |
... | ... | @@ -750,25 +751,10 @@ Page({ |
750 | 751 | //-- 判断组合购是总数量是不是存在 -- |
751 | 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 | 754 | for (var i = 0; i < carr.length; i++) { |
771 | 755 | var item1 = carr[i]; |
756 | + //-- 获取一下商品的所有活动 -- | |
757 | + await th.buy_pro_group(item1); | |
772 | 758 | //把已经购买了多少见的内容填入 |
773 | 759 | var goodsbuynum = 0, promgoodsbuynum = 0; |
774 | 760 | //--要获得商品,该用户买了多少件,同步应用-- |
... | ... | @@ -1153,6 +1139,13 @@ Page({ |
1153 | 1139 | //-- 循环计算一下线下取价 -- |
1154 | 1140 | for (var k = 0; k < arr.length; k++) { |
1155 | 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 | 1149 | var item = arr[k].goods; |
1157 | 1150 | var offline_price = 0; |
1158 | 1151 | var offline_num = 0; |
... | ... | @@ -1201,8 +1194,7 @@ Page({ |
1201 | 1194 | await getApp().request.promisePost("/api/weshop/order/getrebateSum", { |
1202 | 1195 | is_json: 1, data: req_d |
1203 | 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 | 1200 | if (back_data && parseFloat(back_data)) { |
... | ... | @@ -1876,7 +1868,7 @@ Page({ |
1876 | 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 | 1873 | var url1 = "/api/weshop/prom/zhbuyGoods/page"; |
1882 | 1874 | var req_data = { |
... | ... | @@ -2071,13 +2063,13 @@ Page({ |
2071 | 2063 | if (is_state == 1) { |
2072 | 2064 | //-- 按件进行计算 -- |
2073 | 2065 | if (fir_act.prom_type == 1) { |
2074 | - if (fir_act.condition > item1.goods_num) { | |
2066 | + if (fir_act.condition <= item1.goods_num) { | |
2075 | 2067 | item1.more_cx.push(push_item); |
2076 | 2068 | } |
2077 | 2069 | }else{ |
2078 | 2070 | //-- 按数量进行计算 -- |
2079 | 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 | 2073 | item1.more_cx.push(push_item); |
2082 | 2074 | } |
2083 | 2075 | } |
... | ... | @@ -7349,6 +7341,355 @@ Page({ |
7349 | 7341 | } |
7350 | 7342 | } |
7351 | 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 | 4 | <wxs module="filter" src="c_filter.wxs"></wxs> |
5 | 5 | <wxs src="filter.wxs" module="util"></wxs> |
... | ... | @@ -85,32 +85,85 @@ |
85 | 85 | <!-- <view>门店:{{item.pname}}</view> --> |
86 | 86 | <view>{{item.pname}}</view> |
87 | 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 | 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 | 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 | 163 | </view> |
112 | - </navigator> | |
113 | - </view> | |
164 | + </block> | |
165 | + </block> | |
166 | + | |
114 | 167 | |
115 | 168 | <!-- 使用搭配 --> |
116 | 169 | <cart_collect_temp id="col{{pidx}}" | ... | ... |
packageE/pages/cart/cart2/cart2.wxss
... | ... | @@ -1143,3 +1143,81 @@ margin-left: 20rpx; |
1143 | 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 | 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 | 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 | 539 | } |
540 | 540 | } |
541 | 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 | 325 | if (is_state == 1) { |
326 | 326 | //-- 按件进行计算 -- |
327 | 327 | if (fir_act.prom_type == 1) { |
328 | - if (fir_act.condition > item1.goods_num) { | |
328 | + if (fir_act.condition <= item1.goods_num) { | |
329 | 329 | item1.more_cx.push(push_item); |
330 | 330 | } |
331 | 331 | }else{ |
332 | 332 | //-- 按数量进行计算 -- |
333 | 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 | 335 | item1.more_cx.push(push_item); |
336 | 336 | } |
337 | 337 | } |
... | ... | @@ -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 | 351 | onLoad: function () { | ... | ... |
pages/cart/cart/cart.wxml
... | ... | @@ -158,14 +158,14 @@ |
158 | 158 | <!-- 新增促销多活动的排版 --> |
159 | 159 | <block wx:if="{{item.show_can_cx}}"> |
160 | 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 | 162 | <view bindtap="switch_cx_group" |
163 | 163 | data-index="{{pidx}}" |
164 | 164 | data-gd_key="{{index}}" |
165 | 165 | class="cx-frame flex" style="position: relative"> |
166 | 166 | <view class="cx-sizs fs30">促销</view> |
167 | 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 | 169 | <view wx:if="{{item.prom_type==3}}" class="xc-coupon t-c four-level-word">优惠促销</view> |
170 | 170 | <view wx:if="{{item.prom_type==5}}" class="xc-coupon t-c four-level-word">搭配促销</view> |
171 | 171 | <view wx:if="{{item.prom_type==7}}" class="xc-coupon t-c four-level-word">组合购</view> | ... | ... |