Commit e2015e88c3fb95c9d11dbb0e15ad21b7c843f413

Authored by yvan.ni
1 parent fc8fd8a5

优惠促销多活动的后台优化

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>
... ...
pages/cart/cart/cart.wxss
... ... @@ -401,6 +401,7 @@ page {
401 401 }
402 402  
403 403  
  404 +
404 405 .cx-frame {
405 406 /* border-top:3rpx solid #eee; */
406 407 /* width:99%;
... ...