Commit 60831945a811d59f671bc5ca81e33be19547a051

Authored by yvan.ni
1 parent b7ff23ec

一、线下库存测试用例

1.商品详请在显示门店的时候会计算门店的线下库存,以及门店的预出库数!
2.商品在加入购物车,或者立即购买时,也要计算门店的线下库存,以及门店的预出库数!
3.购物车中,商品在加数量,减数量时也要计算门店的线下库存,以及门店的预出库数!
4.购物车结算时也要计算门店的线下库存,以及门店的预出库数!
5.提交订单时,也要计算门店的线下库存,以及门店的预出库数!
6.多条吗商品在选择条码,加入购物车,立即购买,选择门店的时候
也要计算门店的线下库存,以及门店的预出库数!
7.在订单列表中重新支付订单,如果线上也要判断商品是不是活动商品,看价格有没有变化,同时限购是不是到了,
  也要计算门店的线下库存,以及门店的预出库数!
8.在订单列表中重新支付订单,如果订单是3.0公众号下的积分购,优化购买,团购,搭配购就要提醒到3.0公众号处理
9.商品详情在开启急速库存时的显示。

10.退款完成在删除订单状态的时候,不成为已作废(小程序,3.0手店)
11.小程序已取消订单要能删除,添加了一个删除订单的按钮。订单详情页面也要能删除订单 (小程序)
pages/cart/cart/cart.js
1 1 var t = getApp(),
2 2 a = t.request,
3 3 oo = t.globalData.setting,
  4 + os=oo,
4 5 app = getApp(),
5 6 rq = t.request,
6 7 ut = require("../../../utils/util.js");
... ... @@ -26,13 +27,24 @@ Page({
26 27 isadd: 0, //是否可以加商品数量
27 28  
28 29 card_field:"",
  30 + bconf:null,
  31 +
29 32 },
30 33  
31 34 onLoad: function() {
  35 + var a = this,ee=a;
  36 + //----获取系统参数-----
  37 + getApp().getConfig2(function(e) {
  38 + ee.setData({
  39 + bconfig: e,
  40 + sales_rules:e.sales_rules
  41 + });
  42 + })
  43 +
32 44 wx.setNavigationBarTitle({
33 45 title: "购物车",
34 46 })
35   - var a = this;
  47 +
36 48 //判断是否有登陆
37 49 t.auth.hadAuth() && t.getUserInfo(function() {
38 50 a.getCardList();
... ... @@ -117,6 +129,8 @@ Page({
117 129 var all_num = 0;
118 130  
119 131 for (var i = 0; i < carr.length; i++) {
  132 +
  133 +
120 134 var item = carr[i];
121 135 all_num += item.goods_num;
122 136 item.original_img = oo.imghost + item.original_img;
... ... @@ -427,7 +441,7 @@ Page({
427 441  
428 442 //----------------------更新购物数量,加减,调用接口---------------------
429 443 postCardList: function(t, item, pitem) {
430   - var e = this;
  444 + var e = this,th=e;
431 445 var user_id = getApp().globalData.user_id;
432 446 console.log('update');
433 447 console.log(t);
... ... @@ -436,11 +450,12 @@ Page({
436 450 async success(d) {
437 451 var limit = d.data.data.viplimited;
438 452 var store_count = d.data.data.store_count;
  453 + var wareIds=d.data.data.erpwareid;
439 454  
440 455 var goodsinfo = e.data.requestData[pitem].goods[item];
441 456 var promgoodsbuynum = 0;
442 457 var goodsbuynum = 0;
443   -
  458 +
444 459 //--要获得商品,该用户买了多少件,同步应用--
445 460 await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", {
446 461 data: {
... ... @@ -455,6 +470,7 @@ Page({
455 470 if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum;
456 471 goodsbuynum = buy_num_data.goodsbuynum;
457 472 })
  473 +
458 474  
459 475 var buyed_mum2 = t.goods_num + goodsbuynum;
460 476 if (buyed_mum2 > limit && limit > 0) {
... ... @@ -463,7 +479,7 @@ Page({
463 479 content: '购买数量超出商品限购'
464 480 });
465 481 var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
466   - var cbuy = limit - buyed_mum;
  482 + var cbuy = limit - buyed_mum2;
467 483 e.setData({
468 484 [txt]: cbuy > 0 ? cbuy : 0,
469 485 });
... ... @@ -471,78 +487,177 @@ Page({
471 487 return false;
472 488 }
473 489  
474   - if (t.goods_num > store_count) {
475   - wx.showModal({
476   - title: '提示',
477   - content: '购买数量超出商品库存'
478   - });
479   - var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
480   - e.setData({
481   - [txt]: store_count
482   - });
483   - e.doCheckAll();
484   - return false;
485   - }
486   -
  490 +
487 491 if (goodsinfo.prom_type == 1) {
488   - //读取秒杀
489   - rq.get("/api/ms/flash_sale/getFlashSaleOne/" + oo.stoid + "/" + goodsinfo.prom_id, {
  492 + //读取秒杀
  493 + rq.get("/api/ms/flash_sale/getFlashSaleOne/" + oo.stoid + "/" + goodsinfo.prom_id, {
490 494 isShowLoading: 0,
491 495 success: function(res_d) {
492   - var false_data = res_d.data.data;
493   -
494   - //--判断库存--
495   - if (t.goods_num > false_data.goods_num - false_data.buy_num) {
496   - wx.showModal({
497   - title: '提示',
498   - content: '购买数量超出活动库存'
499   - });
500   - var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
501   - e.setData({
502   - [txt]: false_data.goods_num - false_data.buy_num
503   - });
504   - e.doCheckAll();
505   - return false;
506   - }
507   -
508   - //--判断redis数量是否已经超出--
509   - if (t.goods_num > false_data.redisnum) {
510   - wx.showModal({
511   - title: '提示',
512   - content: '购买数量超出商品库存'
513   - });
514   - var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
515   - e.setData({
516   - [txt]: false_data.redisnum
517   - });
518   - e.doCheckAll();
519   - return false;
520   - }
521   -
522   - //--活动的限购是不是要判断--
523   - if (t.goods_num + promgoodsbuynum > false_data.buy_limit && false_data.buy_limit > 0) {
524   - wx.showModal({
525   - title: '提示',
526   - content: '购买数量超出秒杀限购'
527   - });
528   - var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
529   - e.setData({
530   - [txt]: false_data.false_data.buy_limit
531   - });
532   - e.doCheckAll();
533   - return false;
534   - }
535   - e.update_cart(t, pitem, item);
  496 +
  497 + if(res_d.data.code==0){
  498 + if (t.goods_num > store_count) {
  499 + wx.showModal({
  500 + title: '提示',
  501 + content: '购买数量超出商品库存'
  502 + });
  503 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  504 + e.setData({
  505 + [txt]: store_count
  506 + });
  507 + e.doCheckAll();
  508 + return false;
  509 + }
  510 +
  511 + var false_data = res_d.data.data;
  512 + //--判断库存--
  513 + if (t.goods_num > false_data.goods_num - false_data.buy_num) {
  514 + wx.showModal({
  515 + title: '提示',
  516 + content: '购买数量超出活动库存'
  517 + });
  518 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  519 + e.setData({
  520 + [txt]: false_data.goods_num - false_data.buy_num
  521 + });
  522 + e.doCheckAll();
  523 + return false;
  524 + }
  525 +
  526 + //--判断redis数量是否已经超出--
  527 + if (t.goods_num > false_data.redisnum) {
  528 + wx.showModal({
  529 + title: '提示',
  530 + content: '购买数量超出商品库存'
  531 + });
  532 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  533 + e.setData({
  534 + [txt]: false_data.redisnum
  535 + });
  536 + e.doCheckAll();
  537 + return false;
  538 + }
  539 +
  540 + //--活动的限购是不是要判断--
  541 + if (t.goods_num + promgoodsbuynum > false_data.buy_limit && false_data.buy_limit > 0) {
  542 + wx.showModal({
  543 + title: '提示',
  544 + content: '购买数量超出秒杀限购'
  545 + });
  546 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  547 + e.setData({
  548 + [txt]: false_data.false_data.buy_limit
  549 + });
  550 + e.doCheckAll();
  551 + return false;
  552 + }
  553 + }else{
  554 + //--- 看一下是不是线下库存 ---
  555 + if(th.data.sales_rules==2){
  556 + th.check_down_line(t, pitem, item,wareIds);
  557 + }else{
  558 + if (t.goods_num > store_count) {
  559 + wx.showModal({
  560 + title: '提示',
  561 + content: '购买数量超出商品库存'
  562 + });
  563 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  564 + e.setData({
  565 + [txt]: store_count
  566 + });
  567 + e.doCheckAll();
  568 + return false;
  569 + }
  570 + e.update_cart(t, pitem, item);
  571 + }
  572 + }
  573 +
536 574 }
537 575 })
538   - } else {
539   - e.update_cart(t, pitem, item);
  576 + } else {
  577 + //--- 看一下是不是线下库存 ---
  578 + if(th.data.sales_rules==2){
  579 + th.check_down_line(t, pitem, item,wareIds);
  580 + }else{
  581 + if (t.goods_num > store_count) {
  582 + wx.showModal({
  583 + title: '提示',
  584 + content: '购买数量超出商品库存'
  585 + });
  586 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  587 + e.setData({
  588 + [txt]: store_count
  589 + });
  590 + e.doCheckAll();
  591 + return false;
  592 + }
  593 + e.update_cart(t, pitem, item);
  594 + }
540 595 }
541 596 }
542 597 });
543 598 },
544   -
545   - //更新购物车
  599 +
  600 + //---检验线下库存的数量---
  601 + async check_down_line(t, pitem, item,erpwareid){
  602 + var ob={},th=this;
  603 + await this.check_down_line_next(t, pitem, item,erpwareid,function(res){
  604 + ob=res;
  605 + });
  606 + var log=0;
  607 + if(ob.code==-1){
  608 + wx.showModal({
  609 + title: '提示',
  610 + content: '购买数量超出商品库存'
  611 + });
  612 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  613 + th.setData({
  614 + [txt]: ob.CanOutQty
  615 + });
  616 + th.doCheckAll();
  617 + return false;
  618 + }
  619 + this.update_cart(t, pitem, item);
  620 + },
  621 +
  622 + //---检验线下库存的数量的子函数---
  623 + async check_down_line_next(t, pitem, item,erpwareid,func){
  624 + var goodsinfo = this.data.requestData[pitem].goods[item];
  625 + var lock=0,pick_no,plist;
  626 + //先读取门店的lock
  627 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  628 + data:{store_id:os.stoid,wareId:t.goods_id,storageId:goodsinfo.pick_id}
  629 + }).then(res=>{
  630 + if(res.data.code==0 && res.data.data.total>0){
  631 + lock=res.data.data.pageData[0].outQty;
  632 + }
  633 + })
  634 + //先获取门店的编号
  635 + await getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+goodsinfo.pick_id,{
  636 + data:{storeId:os.stoid,goodsId:t.goods_id,pickupId:goodsinfo.pick_id}
  637 + }).then(res=>{
  638 + if(res.data.code==0){
  639 + pick_no=res.data.data.pickup_no;
  640 + }
  641 + })
  642 + //读取线下的门店库存
  643 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  644 + data:{storageNos:pick_no,wareIds:encodeURIComponent(erpwareid),storeId:os.stoid}
  645 + }).then(res=>{
  646 + if(res.data.code==0){
  647 + plist=res.data.data.pageData[0];
  648 + }
  649 + })
  650 + var ob={}; ob.code=1;
  651 + if(t.goods_num>plist.CanOutQty-lock){
  652 + ob.code=-1;
  653 + ob.CanOutQty=plist.CanOutQty-lock
  654 + if(ob.CanOutQty<0) ob.CanOutQty=0;
  655 + }
  656 + func(ob)
  657 + },
  658 +
  659 +
  660 + //--更新购物车---
546 661 update_cart: function(t, pitem, item) {
547 662 var e = this;
548 663 getApp().request.put("/api/weshop/cart/update", {
... ... @@ -573,7 +688,7 @@ Page({
573 688 var th = this;
574 689  
575 690 var ab = 0; //选中
576   - console.log('checkout');
  691 + wx.showLoading();
577 692 for (var i = 0; i < this.data.requestData.length; i++) {
578 693 var i_arr = this.data.requestData[i].goods;
579 694 for (var j = 0; j < i_arr.length; j++) {
... ... @@ -594,6 +709,25 @@ Page({
594 709 }
595 710 glist += i_arr[j].goods_id + ",";
596 711 ab = 1;
  712 + //--普通商品,如果有开启线下库存的功能,要调用线下库存进行计算---
  713 + if(i_arr[j].prom_type==0 && th.data.sales_rules==2){
  714 + //--获取商品的线下商品ID--
  715 + var gd=null;
  716 + await getApp().request.promiseGet("/api/weshop/goods/get/" + oo.stoid + "/" + i_arr[j].goods_id,{}).then(res=>{
  717 + if(res.data.code==0) gd=res.data.data;
  718 + })
  719 + //--判断商品是线下库存--
  720 + var ob={}
  721 + await th.check_down_line_next(i_arr[j],i,j,gd.erpwareid,function(rs){
  722 + ob=rs;
  723 + });
  724 + if(ob.code==-1){
  725 + t.my_warnning(gd.goods_name+"门店库存不足", 0, th);
  726 + wx.hideLoading();
  727 + return false;
  728 + }
  729 + }
  730 +
597 731 } else {
598 732 rq.put("/api/weshop/cart/update", {
599 733 data: {
... ... @@ -610,6 +744,7 @@ Page({
610 744 }
611 745 if (ab == 0) {
612 746 t.my_warnning("未选择商品", 0, th);
  747 + wx.hideLoading();
613 748 return false;
614 749 }
615 750  
... ... @@ -657,7 +792,8 @@ Page({
657 792 }
658 793  
659 794 try {
660   - ddata.forEach(function(val, ind) {
  795 + for(var ind in ddata) {
  796 + var val=ddata[ind];
661 797 var num = map.get(val.goods_id + "");
662 798 if (num <= 0) {
663 799 isok = 0;
... ... @@ -665,12 +801,25 @@ Page({
665 801 throw "购买数量不能为0";
666 802 return false;
667 803 }
668   - if (num > val.store_count) {
669   - isok = 0;
670   - gname = val.goods_name;
671   - throw "超出库存";
672   - return false;
673   - }
  804 +
  805 + if(val.prom_type==1 || val.prom_type==6){
  806 + if (num > val.store_count) {
  807 + isok = 0;
  808 + gname = val.goods_name;
  809 + throw "超出库存";
  810 + return false;
  811 + }
  812 + }
  813 +
  814 + if(th.data.sales_rules!=2){
  815 + if (num > val.store_count) {
  816 + isok = 0;
  817 + gname = val.goods_name;
  818 + throw "超出库存";
  819 + return false;
  820 + }
  821 + }
  822 +
674 823 if (num > val.redisnum && val.redisnum) {
675 824 isok = 0;
676 825 gname = val.goods_name;
... ... @@ -712,7 +861,7 @@ Page({
712 861 throw "商品价格已经变化";
713 862 }
714 863 }else{
715   - if (g_arr[i].goods_price != val.shop_price && g_arr[i].goods_price != val.prom_price) {
  864 + if (g_arr[i].goods_price != val.shop_price && g_arr[i].goods_price != val.prom_price) {
716 865 isok = 0;
717 866 gname = val.goods_name;
718 867 throw "商品价格已经变化";
... ... @@ -733,14 +882,16 @@ Page({
733 882 }
734 883 }
735 884  
736   - })
  885 + }
737 886 } catch (e) {
738 887 err = e;
739 888 }
740 889 if (isok == 0) {
741 890 t.confirmBox(gname + ":" + err);
  891 + wx.hideLoading();
742 892 return false;
743 893 }
  894 + wx.hideLoading();
744 895 wx.navigateTo({
745 896 url: "/pages/cart/cart2/cart2"
746 897 });
... ... @@ -821,6 +972,8 @@ Page({
821 972 wx.switchTab({
822 973 url: '/pages/index/index/index',
823 974 })
824   - }
  975 + },
  976 +
  977 +
825 978  
826 979 });
827 980 \ No newline at end of file
... ...
pages/cart/cart2/cart2.js
1 1 var t = getApp(),app=t, a = t.request, e = require("../../../utils/common.js"),
2 2 s = require("../../../utils/util.js"), o = require("../../../utils/md5.js"), to = getApp();
3   -var oo=t.globalData.setting;
  3 +var oo=t.globalData.setting,os=oo;
4 4 var regeneratorRuntime = require('../../../utils/runtime.js');
5 5 var util_pay = require("../../../utils/pay.js");
6 6  
... ... @@ -84,6 +84,9 @@ Page({
84 84 is_coupon:null, //选择券的控制属性
85 85 is_shipping_code:"",//插入用户默认地址
86 86 wu_arr_txt:"", //要更新的物流的字段
  87 +
  88 + sales_rules:1, //默认是显示线上库存
  89 +
87 90 },
88 91 onLoad: function(t) {
89 92  
... ... @@ -101,7 +104,7 @@ Page({
101 104 //先获取是否有关闭使用优惠券
102 105 getApp().getConfig2(function (ee) {
103 106 var json_d = JSON.parse(ee.switch_list);
104   - th.setData({ is_close_quan: json_d.is_close_quan });
  107 + th.setData({ is_close_quan: json_d.is_close_quan,sales_rules:ee.sales_rules });
105 108 //-----先获取物流,再获取用户信息,再展示页面-----
106 109 th.get_wuliu(th.get_info(th.show_page));
107 110 })
... ... @@ -698,7 +701,7 @@ Page({
698 701 },
699 702  
700 703 //--------------------提交订单-----------------------
701   - submitForm: function(t) {
  704 + async submitForm(t){
702 705 if(this.data.is_summit_ing==1) return false; //--提交中退出--
703 706 this.data.is_summit_ing=1;
704 707 var th=this,pdata=new Array();
... ... @@ -772,7 +775,20 @@ Page({
772 775 'prom_type':th.data.bn_goods.prom_type, //促销活动类型
773 776 'prom_id': th.data.bn_goods.prom_id, //促销活动id
774 777 };
775   -
  778 +
  779 + //如果不立即购买或者秒杀,如果是线下库存购买的时候
  780 + if(goods.prom_type!=1 && goods.prom_type!=6 && th.data.sales_rules==2){
  781 + var isok=1;
  782 + await th.check_store_num(goods.goods_id,th.data.bn_pick, gg.goods_num,function(res){
  783 + isok=res;
  784 + });
  785 + if(!isok){
  786 + getApp().confirmBox("商品的门店库存不足");
  787 + th.data.is_summit_ing=0;
  788 + return false;
  789 + }
  790 + }
  791 +
776 792 //--组装优惠券的钱--
777 793 if(th.data.formData.coupon_price){
778 794 item.coupon_price=th.data.formData.coupon_price;
... ... @@ -868,6 +884,20 @@ Page({
868 884 }else{
869 885 goods.prom_type = 0;goods.prom_id =0;
870 886 }
  887 +
  888 + //如果不立即购买或者秒杀,如果是线下库存购买的时候
  889 + if(goods.prom_type==0 && th.data.sales_rules==2){
  890 + var isok=1;
  891 + await th.check_store_num(goods.goods_id, t_item.pickup_id,goods.goods_num,function(res){
  892 + isok=res;
  893 + });
  894 + if(!isok){
  895 + getApp().confirmBox( goods.goods_name+"的门店库存不足");
  896 + th.data.is_summit_ing=0;
  897 + return false;
  898 + }
  899 + }
  900 +
871 901 item.order_goods.push(goods);
872 902 }
873 903 pdata.push(item);
... ... @@ -975,6 +1005,49 @@ Page({
975 1005 })
976 1006  
977 1007 },
  1008 +
  1009 + //---确认线下门店的数量足不足---
  1010 + async check_store_num(goods_id,pick,goods_num,func){
  1011 + var lock=0,pick_no,plist,erpwareid;
  1012 + //先读取门店的lock
  1013 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  1014 + data:{store_id:os.stoid,wareId:goods_id,storageId:pick}
  1015 + }).then(res=>{
  1016 + if(res.data.code==0 && res.data.data.total>0){
  1017 + lock=res.data.data.pageData[0].outQty;
  1018 + }
  1019 + })
  1020 + //先获取门店的编号
  1021 + await getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+pick,{
  1022 + data:{storeId:os.stoid,goodsId:t.goods_id,pickupId:pick}
  1023 + }).then(res=>{
  1024 + if(res.data.code==0){
  1025 + pick_no=res.data.data.pickup_no;
  1026 + }
  1027 + })
  1028 + //先获取商品的线下库存
  1029 + await getApp().request.promiseGet("/api/weshop/goods/get/"+os.stoid+"/"+goods_id,{
  1030 + data:{storeId:os.stoid,goodsId:t.goods_id,pickupId:pick}
  1031 + }).then(res=>{
  1032 + if(res.data.code==0){
  1033 + erpwareid=res.data.data.erpwareid;
  1034 + }
  1035 + })
  1036 + //读取线下的门店库存
  1037 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  1038 + data:{storageNos:pick_no,wareIds:encodeURIComponent(erpwareid),storeId:os.stoid}
  1039 + }).then(res=>{
  1040 + if(res.data.code==0){
  1041 + plist=res.data.data.pageData[0];
  1042 + }
  1043 + })
  1044 + var isok=1;
  1045 + if(goods_num>plist.CanOutQty-lock){
  1046 + isok=0;
  1047 + }
  1048 + func(isok);
  1049 + },
  1050 +
978 1051  
979 1052 useCoupon: function() {
980 1053 if (this.data.order.couponNum <= 0) {
... ...
pages/goods/goodsInfo/goodsInfo.js
... ... @@ -125,8 +125,8 @@ Page({
125 125 pickpu_list: null, //读出的所有门店list
126 126 def_pickpu_list: null, //一开始5个门店list
127 127 sec_pick_index: 0, //第二级门店选择ID
128   - fir_pick_index: 0, //第一级门店选择ID
129   -
  128 + fir_pick_index: 0, //第一级门店选择ID
  129 + all_pick_list:null,//所有的门店先记录起来
130 130 //同一条形码的所有商品
131 131 sku_g: null,
132 132 sku_g_pt: null, //---拼单的普通购买---
... ... @@ -301,27 +301,27 @@ Page({
301 301 //---回调卡的列表---
302 302 th.getPlusCardType(function(ob){
303 303 th.setData({card_list:ob.card_list});
304   - var ti = setInterval(function () {
305   - var user = getApp().globalData.userInfo;
306   - if (!user) return false;
307   - clearInterval(ti);
308   -
309   - if(user.card_field ){
310   - var str = user['card_expiredate'].replace(/-/g, '/');
311   - var end = new Date(str);
312   - end = Date.parse(end) / 1000;
313   - var now = ut.gettimestamp();
314   - //--- 判断是等级会员,且在有效期范围内 ---
315   - if(user.card_field && now<end){
316   - var card_name=ob.name_map.get(user.card_field);
317   - if(card_name.length>5) card_name=card_name.substring(0,5);
318   -
319   - var is_near_date=0;
320   - if(end-now<60*60*30*24) is_near_date=1; //如果小于30天
321   - th.setData({card_field:user.card_field,card_name:card_name,card_list:ob.card_list,is_near_date:is_near_date});
322   - }
323   - }
324   - }, 500)
  304 + var ti = setInterval(function () {
  305 + var user = getApp().globalData.userInfo;
  306 + if (!user) return false;
  307 + clearInterval(ti);
  308 +
  309 + if(user.card_field ){
  310 + var str = user['card_expiredate'].replace(/-/g, '/');
  311 + var end = new Date(str);
  312 + end = Date.parse(end) / 1000;
  313 + var now = ut.gettimestamp();
  314 + //--- 判断是等级会员,且在有效期范围内 ---
  315 + if(user.card_field && now<end){
  316 + var card_name=ob.name_map.get(user.card_field);
  317 + if(card_name.length>5) card_name=card_name.substring(0,5);
  318 +
  319 + var is_near_date=0;
  320 + if(end-now<60*60*30*24) is_near_date=1; //如果小于30天
  321 + th.setData({card_field:user.card_field,card_name:card_name,card_list:ob.card_list,is_near_date:is_near_date});
  322 + }
  323 + }
  324 + }, 500)
325 325 })
326 326  
327 327 }
... ... @@ -372,9 +372,7 @@ Page({
372 372 sto_sele_distr: e.distr_type
373 373 })
374 374 }
375   -
376   -
377   -
  375 +
378 376 }
379 377 }
380 378 })
... ... @@ -624,11 +622,13 @@ Page({
624 622 userInfo:getApp().globalData.userInfo
625 623 });
626 624  
627   - //获取门店
628   - ee.get_sto();
  625 +
629 626 //获取统一条形码,普通商品和优惠促销的商品
630   - if (ee.data.data.prom_type == 0 || ee.data.data.prom_type == 3 || ee.data.data.prom_type == 5)
631   - ee.get_sku(o.stoid, t.data.data.sku, gid);
  627 + if (ee.data.data.prom_type == 0 || ee.data.data.prom_type == 3 || ee.data.data.prom_type == 5){
  628 + //获取门店
  629 + ee.get_sto();
  630 + ee.get_sku(o.stoid, t.data.data.sku, gid);
  631 + }
632 632 else {
633 633 var gg = "",
634 634 item = t.data.data;
... ... @@ -695,11 +695,6 @@ Page({
695 695 });
696 696 this.data.enterAddressPage && (this.data.enterAddressPage = !1);
697 697  
698   -
699   -
700   -
701   -
702   -
703 698 },
704 699 enterAddress: function() {
705 700 this.data.enterAddressPage = !0, wx.navigateTo({
... ... @@ -812,6 +807,7 @@ Page({
812 807 addCart: function(t) {
813 808 var th = this;
814 809 var ind = t.currentTarget.dataset.openSpecModal_ind;
  810 + if(!ind) ind = t.currentTarget.dataset.openspecmodal_ind;
815 811 th.setData({
816 812 open_ind_store: ind
817 813 });
... ... @@ -838,9 +834,8 @@ Page({
838 834 var e = this,
839 835 th = e,
840 836 a = 0,
841   - o = this.data.sele_g;
842   - if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th);
843   - a = o.goods_id;
  837 + o = this.data.sele_g;
  838 + a = o.goods_id;
844 839  
845 840 //----------添加到购物车时,要判断限购数量,--------
846 841 e.get_buy_num(o, function(ee) {
... ... @@ -866,7 +861,6 @@ Page({
866 861 }
867 862  
868 863 if (th.data.goodsInputNum <= 0) return s.my_warnning("商品数量不能为0", 0, th);
869   - if (th.data.goodsInputNum > o.store_count) return s.my_warnning("超出商品库存", 0, th);
870 864 if (th.data.sto_sele_name == null || th.data.sto_sele_name == undefined)
871 865 this.setData({
872 866 sto_sele_name: ""
... ... @@ -891,20 +885,76 @@ Page({
891 885 if (th.data.prom_type == 1) {
892 886 newd.goods_price = th.data.prom_price;
893 887 newd.member_goods_price = th.data.prom_price,
894   - newd.prom_type = th.data.prom_type;
  888 + newd.prom_type = th.data.prom_type;
895 889 newd.prom_id = th.data.prom_id;
896   - } else if (th.data.prom_type == 3 || th.data.prom_type == 2 || th.data.prom_type == 4 || th.data.prom_type == 5) {
  890 +
  891 + if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th);
  892 + if (o.store_count <e.data.goodsInputNum) return s.my_warnning("库存不足!", 0, th);
  893 +
  894 + th.add_cart_next(e,t,a,o,newd); //加入购物车下一步
  895 +
  896 + } else if ( th.data.prom_type == 0 || th.data.prom_type == 3 || th.data.prom_type == 2 || th.data.prom_type == 4 || th.data.prom_type == 5) {
897 897 newd.prom_type = 0;
898 898 newd.prom_id = 0;
899   - }
900   -
  899 + //---如果是线下门店销售的时候---
  900 + if(th.data.sales_rules==2){
  901 + var pick=th.get_pick_from_list(th.data.sto_sele_id)
  902 + //---通过接口获取门店的线下库存信息--
  903 + getApp().request.get("/api/weshop/goods/getWareStorages",{
  904 + data:{storageNos:pick.pickup_no,wareIds:encodeURIComponent(th.data.sele_g.erpwareid),storeId:os.stoid},
  905 + success:function(res){
  906 + if(res.data.code==0){
  907 + if(res.data.data.pageData.length>0){
  908 + var CanOutQty=res.data.data.pageData[0].CanOutQty;
  909 + if(CanOutQty<e.data.goodsInputNum){
  910 + return s.my_warnning("库存不足!", 0, th);
  911 + }
  912 + //在调一次接口,读取商品的预出库的数量,lock
  913 + getApp().request.get("/api/weshop/order/ware/lock/page",{
  914 + data:{store_id:os.stoid,wareId:th.data.sele_g.goods_id,storageId:pick.pickup_id},
  915 + success:function(res_data){
  916 + if(res_data.data.code==0 && res_data.data.data.total>0){
  917 + var lock= res_data.data.data.pageData[0].outQty;
  918 + if(CanOutQty<=lock){
  919 + return s.my_warnning("库存不足!", 0, th);
  920 + }
  921 + th.add_cart_next(e,t,a,o,newd,CanOutQty-lock);
  922 + }else{
  923 + th.add_cart_next(e,t,a,o,newd,CanOutQty);
  924 + }
  925 + }
  926 + })
  927 + }else{
  928 + return s.my_warnning("库存不足!", 0, th);
  929 + }
  930 +
  931 + }
  932 + }
  933 + })
  934 + }else{
  935 + if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th);
  936 + if (o.store_count <e.data.goodsInputNum) return s.my_warnning("库存不足!", 0, th);
  937 + th.add_cart_next(e,t,a,o,newd); //加入购物车下一步
  938 + }
  939 + }
  940 + })
  941 + },
  942 +
  943 + //---加入购物车的最后一步---
  944 + add_cart_next(e,t,a,o,newd,CanOutQty){
  945 + var th=this;
901 946 //---如果商品不是积分购和拼团,要判断一个是否要进行等级价的判断------
902 947 if(o.prom_type!=1 && o.prom_type!=6){
903 948 var conf=th.data.bconfig;
904 949 if(conf.switch_list){
905 950 var s_list=JSON.parse(conf.switch_list);
906   - //如果后台有开启等级价的功能
907   - if(parseInt(s_list.rank_switch)==2){
  951 + var now=ut.gettimestamp();
  952 + var str = getApp().globalData.userInfo['card_expiredate'].replace(/-/g, '/');
  953 + var end = new Date(str);
  954 + end = Date.parse(end) / 1000;
  955 +
  956 + //--如果后台有开启等级价的功能,而且会员的等级没有过期的情况下--
  957 + if(parseInt(s_list.rank_switch)==2 && end>now){
908 958 var card_price=o[getApp().globalData.userInfo['card_field']];
909 959 //如果会员有等级价
910 960 if(getApp().globalData.userInfo['card_field']!=undefined && getApp().globalData.userInfo['card_field']!=null
... ... @@ -914,64 +964,76 @@ Page({
914 964 }
915 965 }
916 966 }
917   -
918   -
919   - //if (this.data.data.goods.is_virtual) return this.buyVirtualGoods(d);
920   - if ("add" == t.currentTarget.dataset.action) {
921   - //----先看会员在购物车中是否加入了该商品-----
922   - i.get("/api/weshop/cart/page", {
923   - data: {
924   - store_id: e.data.stoid,
925   - user_id: oo.user_id,
926   - goods_id: a,
927   - pick_id: e.data.sto_sele_id,
928   - },
929   - success: function(re) {
930   - //-------如果购物车中有相关的数据---------
931   - if (re.data.data.total > 0) {
932   - var item = re.data.data.pageData[0];
933   - var updata = {
934   - id: item.id,
935   - goods_num: e.data.goodsInputNum + item.goods_num,
936   - goods_price: newd.goods_price,
937   - store_id: th.data.stoid,
938   - };
939   -
940   - i.put("/api/weshop/cart/update", {
941   - data: updata,
942   - success: function(t) {
943   - getApp().my_warnning('加入购物车成功', 1, th, 450);
944   - var c_num = th.data.cartGoodsNum + th.data.goodsInputNum;
945   - th.setData({
946   - cartGoodsNum: c_num
947   - });
948   - th.closeSpecModal();
949   - }
950   - });
951   - } else {
952   - i.post("/api/weshop/cart/save", {
953   - data: newd,
954   - success: function(t) {
955   - getApp().my_warnning('加入购物车成功', 1, th, 450);
956   - var c_num = th.data.cartGoodsNum + e.data.goodsInputNum;
957   - th.setData({
958   - cartGoodsNum: c_num
959   - });
960   - th.closeSpecModal();
961   - }
962   - });
963   - }
964   - }
965   - });
966   - }
967   - //else "exchange" == t.currentTarget.dataset.action ? this.exchange(d) : this.buyNow(d);
968   - else {
969   - newd['pick_name'] = th.data.sto_sele_name;
970   - newd['pick_dis'] = th.data.sto_sele_distr;
971   - th.buyNow(newd);
972   - }
973   - })
  967 +
  968 + //if (this.data.data.goods.is_virtual) return this.buyVirtualGoods(d);
  969 + if ("add" == t.currentTarget.dataset.action) {
  970 + //----先看会员在购物车中是否加入了该商品-----
  971 + i.get("/api/weshop/cart/page", {
  972 + data: {
  973 + store_id: e.data.stoid,
  974 + user_id: oo.user_id,
  975 + goods_id: a,
  976 + pick_id: e.data.sto_sele_id,
  977 + },
  978 + success: function(re) {
  979 + //判断数量,要看下购物车中有没有该商品
  980 + if(CanOutQty){
  981 + if(th.data.cartGoodsNum + th.data.goodsInputNum>CanOutQty){
  982 + return s.my_warnning("库存不足!", 0, th);
  983 + }
  984 + }else{
  985 + if(th.data.cartGoodsNum + th.data.goodsInputNum>o.store_count){
  986 + return s.my_warnning("库存不足!", 0, th);
  987 + }
  988 + }
  989 + //-------如果购物车中有相关的数据---------
  990 + if (re.data.data.total > 0) {
  991 + var item = re.data.data.pageData[0];
  992 + var updata = {
  993 + id: item.id,
  994 + goods_num: e.data.goodsInputNum + item.goods_num,
  995 + goods_price: newd.goods_price,
  996 + store_id: th.data.stoid,
  997 + };
  998 +
  999 + i.put("/api/weshop/cart/update", {
  1000 + data: updata,
  1001 + success: function(t) {
  1002 + getApp().my_warnning('加入购物车成功', 1, th, 450);
  1003 + var c_num = th.data.cartGoodsNum + th.data.goodsInputNum;
  1004 + th.setData({
  1005 + cartGoodsNum: c_num
  1006 + });
  1007 + th.closeSpecModal();
  1008 + }
  1009 + });
  1010 + } else {
  1011 + i.post("/api/weshop/cart/save", {
  1012 + data: newd,
  1013 + success: function(t) {
  1014 + getApp().my_warnning('加入购物车成功', 1, th, 450);
  1015 + var c_num = th.data.cartGoodsNum + e.data.goodsInputNum;
  1016 + th.setData({
  1017 + cartGoodsNum: c_num
  1018 + });
  1019 + th.closeSpecModal();
  1020 + }
  1021 + });
  1022 + }
  1023 + }
  1024 + });
  1025 + }
  1026 + //else "exchange" == t.currentTarget.dataset.action ? this.exchange(d) : this.buyNow(d);
  1027 + else {
  1028 + newd['pick_name'] = th.data.sto_sele_name;
  1029 + newd['pick_dis'] = th.data.sto_sele_distr;
  1030 + th.buyNow(newd);
  1031 + }
974 1032 },
  1033 +
  1034 +
  1035 +
  1036 +
975 1037 //----------购买虚拟商品------
976 1038 buyVirtualGoods: function(e) {
977 1039 Object.assign(e, {
... ... @@ -1275,7 +1337,7 @@ Page({
1275 1337  
1276 1338 //----------装载同一条形码的商品----------
1277 1339 async get_sku(stoid, sku, g_id, is_normal, func) {
1278   - var tt = this;
  1340 + var tt = this,arrdata=null;
1279 1341 await getApp().request.promiseGet("/api/weshop/goods/page", {
1280 1342 data: {
1281 1343 store_id: o.stoid,
... ... @@ -1284,17 +1346,38 @@ Page({
1284 1346 is_on_sale: 1
1285 1347 }
1286 1348 }).then(res => {
1287   - var e = res;
1288   - var arrsku = new Array();
1289   - var gitem = null;
1290   - if (e.data.code == 0) {
1291   - var arrdata = e.data.data.pageData,
1292   - gb = 1,
1293   - gg = "";
1294   - for (var i = 0; i < arrdata.length; i++) {
1295   - var item = arrdata[i],
1296   - gg = "";
1297   -
  1349 + var e = res;
  1350 + if (e.data.code == 0) arrdata = e.data.data.pageData;
  1351 + })
  1352 + if(!arrdata) return fasle;
  1353 +
  1354 + var arrsku = new Array();
  1355 + var gitem = null;
  1356 + var gb = 1,gg = "";
  1357 + for (var i = 0; i < arrdata.length; i++) {
  1358 + var goodsinfo=arrdata[i],prom=null;
  1359 + if (goodsinfo.goods_id != g_id) {
  1360 + if(goodsinfo.prom_type==1){
  1361 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  1362 + }).then(res=>{
  1363 + if(res.data.code==0) prom=res.data.data;
  1364 + })
  1365 + }
  1366 + if(goodsinfo.prom_type==6){
  1367 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  1368 + }).then(res=>{
  1369 + if(res.data.code==0) prom=res.data.data;
  1370 + })
  1371 + }
  1372 + }
  1373 + //---如果有活动,不算在一起---
  1374 + if(prom){
  1375 + if(prom.is_end==0 && prom.end_time>now && prom.start_time<now){
  1376 + continue;
  1377 + }
  1378 + }
  1379 +
  1380 + var item = arrdata[i],gg = "";
1298 1381 if(item.goods_spec=="null" || item.goods_spec==null) item.goods_spec="";
1299 1382 if(item.goods_color=="null" || item.goods_color==null) item.goods_color="";
1300 1383  
... ... @@ -1326,9 +1409,7 @@ Page({
1326 1409 sku_g: arrsku,
1327 1410 sele_g: gitem
1328 1411 });
1329   - }
1330   - }
1331   - })
  1412 + }
1332 1413 },
1333 1414  
1334 1415 //-----------选择属性的按钮事件----------
... ... @@ -1345,8 +1426,58 @@ Page({
1345 1426 if (item) this.setData({
1346 1427 sele_g: item,
1347 1428 gid: gid
1348   - });
1349   - },
  1429 + });
  1430 + this.sele_spec_chech_activity();
  1431 + },
  1432 +
  1433 + //选择了不同的规格的时候要判断是不是有活动正在进行中
  1434 + async sele_spec_chech_activity(){
  1435 + //---如果是活动的时候---
  1436 + var prom=null,goodsinfo=this.data.sele_g,th=this;
  1437 + if(goodsinfo.prom_type==1){
  1438 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  1439 + }).then(res=>{
  1440 + if(res.data.code==0){
  1441 + prom=res.data.data;
  1442 + }
  1443 + })
  1444 + }
  1445 + if(goodsinfo.prom_type==6){
  1446 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  1447 + }).then(res=>{
  1448 + if(res.data.code==0){
  1449 + prom=res.data.data;
  1450 + }
  1451 + })
  1452 + }
  1453 + //----------如果有活动,并且在进行中,就不计算线下库存---------------
  1454 + var now=ut.gettimestamp();
  1455 + if(prom){
  1456 + if(prom.is_end==0 && prom.end_time>now && prom.start_time<now){
  1457 + th.setData({
  1458 + prom_type:goodsinfo.prom_type,
  1459 + prom_price:prom.price,
  1460 + prom_buy_limit:prom.buy_limit,
  1461 + prom_end_time:prom.end_time,
  1462 + prom_start_time:prom.start_time,
  1463 + prom_st:1,
  1464 + })
  1465 + return false;
  1466 + }
  1467 + }
  1468 + //---设置普通商品---
  1469 + th.setData({
  1470 + prom_type:0,
  1471 + prom_price:null,
  1472 + prom_buy_limit:null,
  1473 + prom_end_time:null,
  1474 + prom_start_time:null,
  1475 + prom_st:null,
  1476 + })
  1477 +
  1478 + },
  1479 +
  1480 +
1350 1481 //---------拿出门店分类和门店------------
1351 1482 get_sto(e) {
1352 1483 var th = this;
... ... @@ -1360,13 +1491,13 @@ Page({
1360 1491 store_id: o.stoid,
1361 1492 distr_type: g_distr_type,
1362 1493 isstop: 0,
1363   - pageSize: 300
  1494 + pageSize: 2000
1364 1495 }
1365 1496 } else {
1366 1497 dd = {
1367 1498 store_id: o.stoid,
1368 1499 isstop: 0,
1369   - pageSize: 300
  1500 + pageSize: 2000
1370 1501 }
1371 1502 }
1372 1503 //如果有距离的话
... ... @@ -1381,7 +1512,6 @@ Page({
1381 1512 }).then(res => {
1382 1513 var e = res;
1383 1514 if (e.data.code == 0) {
1384   -
1385 1515 //如果有开启距离的功能,没有设置默认门店,要用最近的门店作为默认门店
1386 1516 if(dd.lat && !th.data.def_pick_store && th.data.bconfig.is_sort_storage){
1387 1517 th.setData({
... ... @@ -1403,152 +1533,246 @@ Page({
1403 1533 e.data.data.pageData.splice(0, 0, th.data.def_pick_store); //添加
1404 1534 }
1405 1535  
1406   - /*----
1407   - //--获取线下库存--
1408   - if(th.data.sales_rules){
1409   -
1410   - }---*/
1411 1536  
1412   -
1413   - //单总量超出5个的时候
1414   - if (e.data.data.total > 5) {
1415   - i.get("/api/weshop/storagecategory/page", {
1416   - data: {
1417   - store_id: o.stoid,
1418   - is_show: 1,
1419   - pageSize: 300
1420   - },
1421   - success: function(ee) {
1422   - if (ee.data.code == 0) {
1423   - if (ee.data.data && ee.data.data.pageData && ee.data.data.pageData.length > 0) {
1424   - var def_arr = new Array();
1425   - var ishas = 0;
1426   - //-- 开始就看5个门店 --
1427   - for (var k = 0; k < 5; k++) {
1428   - if (k == e.data.data.pageData.length) break;
1429   - def_arr.push(e.data.data.pageData[k]);
1430   - }
1431   -
1432   - th.setData({
1433   - def_pickpu_list: def_arr,
1434   - pickpu_list: ee.data.data.pageData
1435   - });
1436   - var sto_cate = ee.data.data.pageData;
1437   - var sto_arr = e.data.data.pageData;
1438   - var newarr = new Array();
1439   - var qita = new Array();
1440   -
1441   - //----要进行门店分组--------
1442   - for (var i = 0; i < sto_arr.length; i++) {
1443   - //找一下这个门店有没有在分类数组内
1444   - var find2 = 0,
1445   - find2name = "";
1446   - for (var m = 0; m < sto_cate.length; m++) {
1447   - if (sto_arr[i].category_id == sto_cate[m].cat_id) {
1448   - find2 = sto_cate[m].cat_id;
1449   - find2name = sto_cate[m].cat_name;
1450   - break;
1451   - }
1452   - }
1453   -
1454   - if (newarr.length > 0) {
1455   - var find = 0;
1456   - //如果有找到,那门店就在这个分组内,否则,分类就要排在其他
1457   - if (find2 != 0) {
1458   - for (var ii = 0; ii < newarr.length; ii++) {
1459   - if (sto_arr[i].category_id == newarr[ii].cat_id) {
1460   - newarr[ii].s_arr.push(sto_arr[i]);
1461   - find = 1;
1462   - break;
1463   - }
1464   - }
1465   - if (find == 0) {
1466   - var arr0 = new Array();
1467   - arr0.push(sto_arr[i]);
1468   - var item = {
1469   - cat_id: find2,
1470   - name: find2name,
1471   - s_arr: arr0
1472   - };
1473   - newarr.push(item);
1474   - }
1475   - } else {
1476   - qita.push(sto_arr[i]);
1477   - }
1478   - } else {
1479   - //如果有找到,那门店就在这个分组内,否则,分类就要排在其他
1480   - if (find2 != 0) {
1481   - var arr0 = new Array();
1482   - arr0.push(sto_arr[i]);
1483   - var item = {
1484   - cat_id: find2,
1485   - name: find2name,
1486   - s_arr: arr0
1487   - };
1488   - newarr.push(item);
1489   - } else {
1490   - qita.push(sto_arr[i]);
1491   - }
1492   - }
1493   - }
1494   -
1495   - //----安排其他的分类-----
1496   - if (qita.length > 0) {
1497   - var item = {
1498   - cat_id: -1,
1499   - name: "其他",
1500   - s_arr: qita
1501   - };
1502   - newarr.push(item);
1503   - }
1504   - th.setData({
1505   - is_show_sto_cat: 1,
1506   - all_sto: newarr
1507   - });
1508   -
1509   - } else {
1510   - th.setData({
1511   - is_show_sto_cat: -1,
1512   - only_pk: e.data.data.pageData
1513   - });
1514   - //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------
1515   - if (!th.data.def_pick_store) {
1516   - th.setData({def_pick_store:e.data.data.pageData[0]})
1517   - }
1518   - }
1519   - } else {
1520   - th.setData({
1521   - is_show_sto_cat: -1,
1522   - only_pk: e.data.data.pageData
1523   - });
1524   - //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------
1525   - if (!th.data.def_pick_store) {
1526   - th.setData({def_pick_store:e.data.data.pageData[0]})
1527   - }
1528   -
1529   - }
1530   - }
1531   - });
1532   - } else {
1533   - th.setData({
1534   - is_show_sto_cat: 0,
1535   - only_pk: e.data.data.pageData
1536   - });
1537   - //-----如果没有默认门店,要取第一个门店作为默认店------
1538   - if (!th.data.def_pick_store && th.data.bconfig.is_sort_storage) {
1539   - th.setData({
1540   - def_pick_store:e.data.data.pageData[0],
1541   - sto_sele_name: e.data.data.pageData[0].pickup_name,
1542   - sto_sele_id: e.data.data.pageData[0].pickup_id,
1543   - sto_sele_distr: e.data.data.pageData[0].distr_type
1544   - })
1545   - }
1546   - }
1547   - }
  1537 + th.setData({all_pick_list:e.data.data.pageData});
  1538 +
  1539 + //--获取线下库存,而且不是新的门店规则,同时不能是活动--
  1540 + if(th.data.sales_rules==2 && !th.data.is_newsales_rules && th.data.prom_type!=1 && th.data.prom_type!=6){
  1541 + th.deal_pickup_dline(e);
  1542 + }else{
  1543 + th.deal_pickup(e); //--普通门店排版--
  1544 + }
  1545 + }
1548 1546 })
1549 1547 }, 200)
1550 1548  
  1549 + },
  1550 +
  1551 + //------------处理门店---------------
  1552 + deal_pickup(e){
  1553 + var th=this;
  1554 + //单总量超出5个的时候
  1555 + if (e.data.data.total > 5) {
  1556 + i.get("/api/weshop/storagecategory/page", {
  1557 + data: {
  1558 + store_id: o.stoid,
  1559 + is_show: 1,
  1560 + pageSize: 1000
  1561 + },
  1562 + success: function(ee) {
  1563 + if (ee.data.code == 0) {
  1564 + if (ee.data.data && ee.data.data.pageData && ee.data.data.pageData.length > 0) {
  1565 + var def_arr = new Array();
  1566 + var ishas = 0;
  1567 + //-- 开始就看5个门店 --
  1568 + for (var k = 0; k < 5; k++) {
  1569 + if (k == e.data.data.pageData.length) break;
  1570 + def_arr.push(e.data.data.pageData[k]);
  1571 + }
  1572 +
  1573 + th.setData({
  1574 + def_pickpu_list: def_arr,
  1575 + pickpu_list: ee.data.data.pageData
  1576 + });
  1577 + var sto_cate = ee.data.data.pageData;
  1578 + var sto_arr = e.data.data.pageData;
  1579 + var newarr = new Array();
  1580 + var qita = new Array();
  1581 +
  1582 + //----要进行门店分组--------
  1583 + for (var i = 0; i < sto_arr.length; i++) {
  1584 + //找一下这个门店有没有在分类数组内
  1585 + var find2 = 0,
  1586 + find2name = "";
  1587 + for (var m = 0; m < sto_cate.length; m++) {
  1588 + if (sto_arr[i].category_id == sto_cate[m].cat_id) {
  1589 + find2 = sto_cate[m].cat_id;
  1590 + find2name = sto_cate[m].cat_name;
  1591 + break;
  1592 + }
  1593 + }
  1594 +
  1595 + if (newarr.length > 0) {
  1596 + var find = 0;
  1597 + //如果有找到,那门店就在这个分组内,否则,分类就要排在其他
  1598 + if (find2 != 0) {
  1599 + for (var ii = 0; ii < newarr.length; ii++) {
  1600 + if (sto_arr[i].category_id == newarr[ii].cat_id) {
  1601 + newarr[ii].s_arr.push(sto_arr[i]);
  1602 + find = 1;
  1603 + break;
  1604 + }
  1605 + }
  1606 + if (find == 0) {
  1607 + var arr0 = new Array();
  1608 + arr0.push(sto_arr[i]);
  1609 + var item = {
  1610 + cat_id: find2,
  1611 + name: find2name,
  1612 + s_arr: arr0
  1613 + };
  1614 + newarr.push(item);
  1615 + }
  1616 + } else {
  1617 + qita.push(sto_arr[i]);
  1618 + }
  1619 + } else {
  1620 + //如果有找到,那门店就在这个分组内,否则,分类就要排在其他
  1621 + if (find2 != 0) {
  1622 + var arr0 = new Array();
  1623 + arr0.push(sto_arr[i]);
  1624 + var item = {
  1625 + cat_id: find2,
  1626 + name: find2name,
  1627 + s_arr: arr0
  1628 + };
  1629 + newarr.push(item);
  1630 + } else {
  1631 + qita.push(sto_arr[i]);
  1632 + }
  1633 + }
  1634 + }
  1635 +
  1636 + //----安排其他的分类-----
  1637 + if (qita.length > 0) {
  1638 + var item = {
  1639 + cat_id: -1,
  1640 + name: "其他",
  1641 + s_arr: qita
  1642 + };
  1643 + newarr.push(item);
  1644 + }
  1645 + th.setData({
  1646 + is_show_sto_cat: 1,
  1647 + all_sto: newarr
  1648 + });
  1649 +
  1650 + } else {
  1651 + th.setData({
  1652 + is_show_sto_cat: -1,
  1653 + only_pk: e.data.data.pageData
  1654 + });
  1655 + //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------
  1656 + if (!th.data.def_pick_store) {
  1657 + th.setData({def_pick_store:e.data.data.pageData[0]})
  1658 + }
  1659 + }
  1660 + } else {
  1661 + th.setData({
  1662 + is_show_sto_cat: -1,
  1663 + only_pk: e.data.data.pageData
  1664 + });
  1665 + //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------
  1666 + if (!th.data.def_pick_store) {
  1667 + th.setData({def_pick_store:e.data.data.pageData[0]})
  1668 + }
  1669 +
  1670 + }
  1671 + }
  1672 + });
  1673 + } else {
  1674 + th.setData({
  1675 + is_show_sto_cat: 0,
  1676 + only_pk: e.data.data.pageData
  1677 + });
  1678 + //-----如果没有默认门店,要取第一个门店作为默认店------
  1679 + if (!th.data.def_pick_store && th.data.bconfig.is_sort_storage) {
  1680 + th.setData({
  1681 + def_pick_store:e.data.data.pageData[0],
  1682 + sto_sele_name: e.data.data.pageData[0].pickup_name,
  1683 + sto_sele_id: e.data.data.pageData[0].pickup_id,
  1684 + sto_sele_distr: e.data.data.pageData[0].distr_type
  1685 + })
  1686 + }
  1687 + }
  1688 +
  1689 + },
  1690 + //------------处理线下门店库存--------
  1691 + async deal_pickup_dline(e){
  1692 + var pkno=[],th=this;
  1693 + if(this.data.def_pick_store){
  1694 + pkno.push(this.data.def_pick_store.pickup_no);
  1695 + }
  1696 + for(var i in e.data.data.pageData){
  1697 + var item=e.data.data.pageData[i];
  1698 + pkno.push(item.pickup_no);
  1699 + }
  1700 + var pkno_str=pkno.join(",");
  1701 + var o_plist=e.data.data.pageData;
  1702 + var new_list=[];
  1703 + var is_find_def_store=0;
  1704 +
  1705 + var lock=[];
  1706 + //先读取门店的lock
  1707 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  1708 + data:{store_id:os.stoid,wareId:th.data.data.goods_id}
  1709 + }).then(res=>{
  1710 + if(res.data.code==0 && res.data.data.total>0){
  1711 + lock=res.data.data.pageData
  1712 + }
  1713 + })
  1714 +
  1715 + //---通过接口获取门店的线下库存信息--
  1716 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  1717 + data:{storageNos:pkno_str,wareIds:encodeURIComponent(th.data.data.erpwareid),storeId:os.stoid}
  1718 + }).then(res=>{
  1719 + if(res.data.code==0){
  1720 + if(res.data.data.pageData){
  1721 + var plist=res.data.data.pageData;
  1722 + //以原来的数组为外循环,保证距离的顺序
  1723 + for(var kk in o_plist){
  1724 + for(var ii in plist){
  1725 + //线下的门店小心
  1726 + var n_item=plist[ii];
  1727 + if(n_item.StorageNo==o_plist[kk].pickup_no){
  1728 +
  1729 + //拿到锁库的数量
  1730 + var lock_num=th.find_lock_num(o_plist[kk].pickup_id,lock);
  1731 + //可出库数大于预出库库存的数量,可以判断为有库存
  1732 + if(n_item.CanOutQty>lock_num){
  1733 + o_plist[kk].CanOutQty=n_item.CanOutQty-lock_num
  1734 + new_list.push(o_plist[kk]);
  1735 + //如果找到默认门店
  1736 + if(th.data.def_pick_store && n_item.StorageNo==th.data.def_pick_store.pickup_no){
  1737 + th.data.def_pick_store.CanOutQty=n_item.CanOutQty;
  1738 + is_find_def_store=1;
  1739 + }
  1740 + }
  1741 + }
  1742 + }
  1743 + }
  1744 +
  1745 + //数据组装下
  1746 + var em={};em.data={};em.data.data={};
  1747 + em.data.data.total=new_list.length;
  1748 + em.data.data.pageData=new_list;
  1749 +
  1750 + //---把数组组装进去---
  1751 + th.deal_pickup(em);
  1752 + if(th.data.def_pick_store && !is_find_def_store){
  1753 + th.setData({def_pick_store:null});
  1754 + }
  1755 +
  1756 + }else{
  1757 + th.setData({def_pick_store:null,all_sto:null,only_pk:null})
  1758 + }
  1759 + }else{
  1760 + th.setData({def_pick_store:null,all_sto:null,only_pk:null})
  1761 + }
  1762 + })
  1763 +
  1764 + },
1551 1765  
  1766 + find_lock_num(pick_id,lock){
  1767 + var lock_num=0;
  1768 + if(!lock) return 0;
  1769 + if(lock.length<0) return 0;
  1770 + for(var i in lock){
  1771 + if(pick_id==lock[i].pickupId){
  1772 + lock_num=lock[i].outQty;
  1773 + }
  1774 + }
  1775 + return lock_num;
1552 1776 },
1553 1777  
1554 1778 //----------取货门店被点击的效果------
... ... @@ -1709,6 +1933,7 @@ Page({
1709 1933 isshow: 1,
1710 1934 });
1711 1935 ee.get_sku(os.stoid, ee.data.data.sku, gid);
  1936 + ee.get_sto();
1712 1937 return false;
1713 1938 }
1714 1939 //----已经过期-----
... ... @@ -1729,6 +1954,7 @@ Page({
1729 1954 isshow: 1,
1730 1955 });
1731 1956 ee.get_sku(os.stoid, ee.data.data.sku, gid);
  1957 + ee.get_sto();
1732 1958 return false;
1733 1959 }
1734 1960  
... ... @@ -1746,6 +1972,8 @@ Page({
1746 1972 prom_start_time: prom_start_time,
1747 1973 isshow: 1,
1748 1974 });
  1975 +
  1976 + ee.get_sto();
1749 1977  
1750 1978  
1751 1979 var newTime = ut.gettimestamp();
... ... @@ -1800,6 +2028,7 @@ Page({
1800 2028 isshow: 1,
1801 2029 });
1802 2030 ee.get_sku(os.stoid, ee.data.data.sku, gid);
  2031 + ee.get_sto();
1803 2032 return false;
1804 2033 }
1805 2034 //----已经结束-----
... ... @@ -1819,6 +2048,7 @@ Page({
1819 2048 isshow: 1,
1820 2049 });
1821 2050 ee.get_sku(os.stoid, ee.data.data.sku, gid);
  2051 + ee.get_sto();
1822 2052 return false;
1823 2053 }
1824 2054  
... ... @@ -1829,6 +2059,7 @@ Page({
1829 2059 isshow: 1,
1830 2060 });
1831 2061 ee.get_sku(os.stoid, ee.data.data.sku, gid);
  2062 + ee.get_sto();
1832 2063 return false;
1833 2064 }
1834 2065  
... ... @@ -1910,6 +2141,8 @@ Page({
1910 2141 prom_start_time: prom_start_time,
1911 2142 isshow: 1,
1912 2143 });
  2144 +
  2145 + ee.get_sto();
1913 2146  
1914 2147 var newTime = now;
1915 2148 var endTime2 = t.data.data.end_time;
... ... @@ -3195,16 +3428,70 @@ Page({
3195 3428 sec_pick_index: 0
3196 3429 });
3197 3430 },
3198   -
3199   -
3200   -
3201 3431 choose_for_store_fir: function(e) {
3202 3432 var index_c = e.currentTarget.dataset.ind;
3203   -
3204   - this.setData({
3205   - fir_pick_index: index_c
3206   - })
  3433 + var th=this;
  3434 + this.check_the_pick(index_c,function(){
  3435 + th.setData({
  3436 + fir_pick_index: index_c
  3437 + })
  3438 + })
  3439 +
  3440 + },
  3441 +
  3442 + //如果开启线下库存,已经急速库存才会使用
  3443 + async check_the_pick(index,func){
  3444 + var th=this;
  3445 + var goodsinfo=th.data.sele_g;
  3446 + var erpwareid=goodsinfo.erpwareid;
  3447 + var plist=null;
  3448 +
  3449 + //---如果是活动的时候---
  3450 + if(th.data.prom_type==1 || th.data.prom_type==6){
  3451 + func(); return false;
  3452 + }
  3453 +
  3454 + if(this.data.sales_rules!=2 && this.data.is_newsales_rules!=1){
  3455 + func();
  3456 + }else{
  3457 + var item=null;
  3458 + if (th.data.choice_sort_store == 0) {
  3459 + if (th.data.is_show_sto_cat == 1) {
  3460 + item = th.data.def_pickpu_list[index];
  3461 + } else {
  3462 + item = th.data.only_pk[index]; //当没有门店分类的时候
  3463 + }
  3464 + } else {
  3465 + item = th.data.sec_sto.s_arr[index];
  3466 + }
  3467 +
  3468 + //先读取门店的lock
  3469 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  3470 + data:{store_id:os.stoid,wareId:t.goods_id,storageId:goodsinfo.pick_id}
  3471 + }).then(res=>{
  3472 + if(res.data.code==0 && res.data.data.total>0){
  3473 + lock=res.data.data.pageData[0].outQty;
  3474 + }
  3475 + })
  3476 +
  3477 + //读取线下的门店库存
  3478 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  3479 + data:{storageNos:item.pickup_no,wareIds:encodeURIComponent(erpwareid),storeId:os.stoid}
  3480 + }).then(res=>{
  3481 + if(res.data.code==0 && res.data.data.total>0){
  3482 + plist=res.data.data.pageData[0];
  3483 + }
  3484 + })
  3485 +
  3486 + if(plist && plist.CanOutQty-lock>0){
  3487 + func()
  3488 + return false;
  3489 + }
  3490 + getApp().my_warnning(item.pickup_name+"库存不足!", 0, th);
  3491 +
  3492 + }
3207 3493 },
  3494 +
3208 3495  
3209 3496 //确定def_pick为选择的门店
3210 3497 sure_pick: function(e) {
... ... @@ -3266,11 +3553,13 @@ Page({
3266 3553 //---点击二级之后的选择---
3267 3554 choose_for_store: function(e) {
3268 3555 var index_c = e.currentTarget.dataset.ind;
3269   -
3270   - this.setData({
3271   - sec_pick_index: index_c,
3272   - fir_pick_index: index_c
3273   - })
  3556 + var th=this;
  3557 + th.check_the_pick(index_c,function(){
  3558 + th.setData({
  3559 + sec_pick_index: index_c,
  3560 + fir_pick_index: index_c
  3561 + })
  3562 + })
3274 3563 },
3275 3564 //把选择的门店设置成默认的门店def_pick
3276 3565 set_def_pick: function(e) {
... ... @@ -3455,7 +3744,19 @@ Page({
3455 3744 },
3456 3745 go_card_info:function(){
3457 3746 getApp().goto("/pages/user/cardinfo/cardinfo");
  3747 + },
  3748 + //-- 根据ID拿出门店 --
  3749 + get_pick_from_list(pid){
  3750 + var all_pick_list=this.data.all_pick_list;
  3751 + for(var i in all_pick_list){
  3752 + var item=all_pick_list[i];
  3753 + if(item.pickup_id==pid){
  3754 + return item;
  3755 + }
  3756 + }
3458 3757 }
  3758 +
  3759 +
3459 3760  
3460 3761  
3461 3762 });
... ...
pages/goods/goodsInfo/goodsInfo.wxml
... ... @@ -911,7 +911,7 @@
911 911 <!----商品的属性项目---->
912 912 <view class="xc-goods-attribute">
913 913 <view hidden="{{ismend==1}}" class="spec-name">商品属性</view>
914   - <view hidden="{{ismend==1}}" class="flex">
  914 + <view hidden="{{ismend==1}}" style="max-height: 120rpx;overflow-y: auto;">
915 915 <view class="spec_bt {{gid==item.goods_id?'act':''}}" bindtap="sele_spec" data-gid='{{item.goods_id}}' wx:for="{{sku_g}}" wx:key="sku_g">
916 916 {{item.gg}}
917 917 </view>
... ...
pages/goods/goodsInfo/goodsInfo.wxss
... ... @@ -599,7 +599,8 @@ border-radius: 0 56rpx 55rpx 0;
599 599 text-align: center;
600 600 }
601 601 .spec_bt{
602   - background: fff;color: #333; margin-left: 10rpx;padding: 4rpx 15rpx 4rpx; border-radius:30rpx;font-size: 24rpx;border: 1rpx solid #ccc;
  602 + background: fff;color: #333; margin-left: 10rpx;padding: 4rpx 15rpx 4rpx; display: inline-block;
  603 + border-radius:30rpx;font-size: 24rpx;border: 1rpx solid #ccc; margin: 10rpx; height: 40rpx; line-height: 40rpx;
603 604 }
604 605 .spec_bt.act{background: #d60021;color: #fff;border: 1rpx solid #d60021;}
605 606 .sub {
... ...
pages/user/order_detail/order_detail.js
... ... @@ -344,14 +344,18 @@ Page({
344 344 //-----删除订单-----
345 345 deleteOrderData: function(t) {
346 346 var th=this;
347   - var order_id=t.currentTarget.dataset.order_id;
  347 + var order_id=t.currentTarget.dataset.order_id;
  348 + var up_data={
  349 + order_id: order_id,isdel:1
  350 + };
  351 + if(th.data.order.order_status!=6){
  352 + up_data.order_status=5;
  353 + }
348 354 wx.showModal({
349 355 title: "是否删除订单?",
350 356 success: function(tt) {
351   - t.confirm && rq.put("/api/weshop/order/updatebyId", {
352   - data: {
353   - order_id: order_id, order_status: 5
354   - },
  357 + tt.confirm && rq.put("/api/weshop/order/updatebyId", {
  358 + data: up_data,
355 359 success: function (t) {
356 360 getApp().my_warnning("删除成功",1,th);
357 361 setTimeout(function () {
... ...
pages/user/order_detail/order_detail.wxml
... ... @@ -137,6 +137,9 @@
137 137 <block wx:if="{{!(order.has_rt || order.return_btn==2 || order.return_btn==4)}}">
138 138 <navigator bindtap="confirmOrder" class="tips-btn" hidden="{{!order.receive_btn}}">收货确认</navigator>
139 139 </block>
  140 +
  141 + <view class="tips-btn" wx:if="{{order.order_status==3}}" bindtap="deleteOrderData" data-order_id="{{order.order_id}}" >删除订单</view>
  142 +
140 143  
141 144 <navigator class="tips-btn" hidden="{{!order.shipping_btn}}" url="/pages/user/express/express?order_id={{order.order_id}}">查看物流</navigator>
142 145  
... ... @@ -146,7 +149,7 @@
146 149 <navigator class="tips-btn" wx:if="{{(order.order_status==1&&order.pay_status==1) && !order.is_bedistri}}" url="/pages/order/refund_order/refund_order?order_id={{order.order_id}}">申请退款</navigator>
147 150 </block>
148 151 <block wx:else>
149   - <view class="tips-btn" wx:if="{{order.is_all_return_status==2}}" bindtap="deleteOrderData" order_id="{{order.order_id}}" >删除订单</view>
  152 + <view class="tips-btn" wx:if="{{order.is_all_return_status==2 && order.isdel==0}}" bindtap="deleteOrderData" data-order_id="{{order.order_id}}" >删除订单</view>
150 153 <navigator class="tips-btn" wx:if="{{order.is_all_return_status==3}}" url="/pages/order/refund_order/refund_order?order_id={{order.order_id}}">重新退款</navigator>
151 154 <navigator class="tips-btn" wx:if="{{order.is_all_return_status==0 || order.is_all_return_status==1}}"
152 155 url="/pages/user/return_goods_info/return_goods_info?order_id={{order.order_id}}">退款详情</navigator>
... ...
pages/user/order_list/order_list.js
... ... @@ -11,6 +11,7 @@ var t = function(t) {
11 11 a = require("../../../utils/common.js"),
12 12 s = new t.default();
13 13 var regeneratorRuntime = require('../../../utils/runtime.js');
  14 +var ut= require('../../../utils/util.js');
14 15  
15 16 Page({
16 17 data: {
... ... @@ -39,18 +40,36 @@ Page({
39 40 //已经读取过接口
40 41 is_get: 0,
41 42 conf: null,
42   - iscodeall: null
  43 + iscodeall: null,
  44 +
  45 + //会员的等级价位
  46 + card_field:null,
43 47 },
44 48 onLoad: function(t) {
45 49 var th = this;
46 50 if (t.type != undefined) this.setData({
47 51 activeCategoryId: t.type
48 52 })
49   - s.init(this, "", "orderList");
  53 + s.init(this, "", "orderList");
  54 + //---查看会员的等级价---
50 55 getApp().getConfig2(function(e) {
51   - th.setData({
52   - conf: e
53   - });
  56 + th.setData({conf: e });
  57 + //--- 看后台是不是有开通等级卡 ---
  58 + if(e.switch_list){
  59 + var s_list=JSON.parse(e.switch_list);
  60 + //如果后台有开启等级价的功能
  61 + if(parseInt(s_list.rank_switch)==2){
  62 + var user=getApp().globalData.userInfo;
  63 + var str = user['card_expiredate'].replace(/-/g, '/');
  64 + var end = new Date(str);
  65 + end = Date.parse(end) / 1000;
  66 + var now = ut.gettimestamp();
  67 + //--- 判断是等级会员,且在有效期范围内 ---
  68 + if(user.card_field && now<end){
  69 + th.setData({card_field:user.card_field})
  70 + }
  71 + }
  72 + }
54 73 })
55 74 },
56 75 onShow: function() {
... ... @@ -79,6 +98,7 @@ Page({
79 98 case "4":
80 99 r += "&order_status=2"; break;
81 100 }
  101 + r+="&isdel=0";
82 102 this.setData({ activeCategoryId: t }); r = r + "&page=" + e.data.currentPage;
83 103 s.request(r, function (t) {
84 104  
... ... @@ -251,8 +271,7 @@ Page({
251 271  
252 272 /*-----------确认收货-----------*/
253 273 confirmOrder: function(t) {
254   - var e = this,
255   - a = t.currentTarget.dataset.id;
  274 + var e = this,a = t.currentTarget.dataset.id;
256 275 var is_zsorder = t.currentTarget.dataset.zsorder;
257 276 var th = this;
258 277  
... ... @@ -283,14 +302,17 @@ Page({
283 302 deleteOrderData: function(t) {
284 303 var th = this;
285 304 var order_id = t.currentTarget.dataset.order_id;
  305 + var index = t.currentTarget.dataset.index;
  306 + var up_data={order_id: order_id,isdel:1};
  307 + var order=th.data.orderList[index];
  308 + if(order.order_status!=6){
  309 + up_data.order_status=5;
  310 + }
286 311 wx.showModal({
287 312 title: "是否删除订单?",
288 313 success: function(tt) {
289 314 tt.confirm && rq.put("/api/weshop/order/updatebyId", {
290   - data: {
291   - order_id: order_id,
292   - order_status: 5
293   - },
  315 + data: up_data,
294 316 success: function(t) {
295 317 for (var e = 0; e < th.data.orderList.length; e++)
296 318 if (th.data.orderList[e].order_id == order_id) {
... ... @@ -348,40 +370,270 @@ Page({
348 370 },
349 371  
350 372 /*----------跳转支付-----------*/
351   - jumpToCart4: function(t) {
  373 + async jumpToCart4(t) {
352 374 var o_index = t.currentTarget.dataset.idx;
353 375 var e = this.data.orderList[t.currentTarget.dataset.idx];
354 376 var th = this;
355   -
356   - console.log("jumpToCart4");
357   - console.log(e);
358   -
359   - if (e.order_amount == 0) {
360   - var dd = {
361   - parent_sn: e.order_sn,
362   - store_id: e.store_id,
363   - type: 1,
364   - };
365   - getApp().request.post("/api/weshop/order/pay/createOrder", {
366   - data: dd,
367   - success: function(t) {
368   - if (t.data.code == 0) {
369   - th.onload();
370   - } else {
371   - getApp().confirmBox(t.data.msg + "请您取消该订单");
372   - }
373   - }
374   - })
375   - return false;
376   - }
377   -
378   - a.jumpToCart4({
379   - order_sn: e.order_sn,
380   - order_amount: e.order_amount,
381   - type: 1 //正常单
382   - });
  377 + var order=e ;
  378 + var order_goods=e.order_goods;
  379 +
  380 + for(var i in order_goods){
  381 + var good=order_goods[i];
  382 + //如果不是小程序有的功能,直接提示要去3.0处理
  383 + if(good.prom_type==2 || good.prom_type==3 || good.prom_type==4 || good.prom_type==5){
  384 + wx.showModal({
  385 + title: '提示',
  386 + content: '小程序还未有该活动,请到3.0公众号支付'
  387 + });
  388 + return false;
  389 + }
  390 +
  391 + //要每件每件的商品进行检查,看有么有超出库存,超出限购
  392 + var good= order_goods[i],goodsbuynum=0,promgoodsbuynum=0,gg=null;
  393 + //获取单品的现在的活动状态
  394 + await getApp().request.promiseGet("/api/weshop/goods/get/" + os.stoid + "/" + good.goods_id, {
  395 + }).then(res=>{
  396 + gg=res.data.data;
  397 + })
  398 + var limit = gg.viplimited;
  399 + var store_count = gg.store_count;
  400 +
  401 + //---要获得商品,该用户买了多少件,同步应用---
  402 + await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", {
  403 + data: {
  404 + store_id: os.stoid,
  405 + user_id: getApp().globalData.user_id,
  406 + goods_id: good.goods_id,
  407 + prom_type: good.prom_type,
  408 + prom_id: good.prom_id
  409 + },
  410 + }).then(res => {
  411 + var buy_num_data = res.data.data;
  412 + if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum;
  413 + goodsbuynum = buy_num_data.goodsbuynum;
  414 + })
  415 +
  416 + var buyed_mum2=goodsbuynum+good.goods_num;
  417 + if (buyed_mum2 > limit && limit > 0) {
  418 + wx.showModal({
  419 + title: '提示',
  420 + content: gg.goods_name+'购买数量超出商品限购'
  421 + });
  422 + return false;
  423 + }
  424 +
  425 + if(good.prom_type==1 || good.prom_type==6){
  426 + if(gg.prom_type!=good.prom_type)
  427 + wx.showModal({
  428 + title: '提示',
  429 + content: gg.goods_name+'商品的活动发生了变化'
  430 + });
  431 + return false;
  432 + }else{
  433 +
  434 + if(gg.prom_type==1 || gg.prom_type==6){
  435 + var prom=null;
  436 + //---如果是活动的时候---
  437 + var prom=null,th=this;
  438 + if(gg.prom_type==1){
  439 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+gg.prom_id,{
  440 + }).then(res=>{
  441 + if(res.data.code==0){
  442 + prom=res.data.data;
  443 + }
  444 + })
  445 + }
  446 + if(gg.prom_type==6){
  447 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+gg.prom_id,{
  448 + }).then(res=>{
  449 + if(res.data.code==0){
  450 + prom=res.data.data;
  451 + }
  452 + })
  453 + }
  454 +
  455 + if(prom){
  456 + var t_now=ut.gettimestamp();
  457 + if(prom.is_end==0 && prom.start_time<t_now && prom.end_time>t_now){
  458 + wx.showModal({
  459 + title: '提示',
  460 + content: gg.goods_name+'商品的活动发生了变化'
  461 + });
  462 + return false;
  463 + }
  464 + }
  465 + }
  466 +
  467 +
  468 + var isok=1;
  469 + var card_field=th.data.card_field;
  470 + //如果会员是等级会员,商品有等级价,且不是活动商品
  471 + if(card_field && gg[card_field]>0){
  472 + if (good.goods_price != gg[card_field]) isok = 0;
  473 + }else{
  474 + if (good.goods_price != gg.shop_price) isok = 0;
  475 +
  476 + }
  477 + if(!isok){
  478 + wx.showModal({
  479 + title: '提示',
  480 + content: gg.goods_name+'商品的价格发生了变化'
  481 + });
  482 + return false;
  483 + }
  484 +
  485 + //--如果是线下库存的时候--
  486 + if(th.data.conf.sales_rules==2){
  487 + var ob={};
  488 + await th.check_down_line_next(gg,good.goods_num,order.pickup_id,function(obj){
  489 + ob=obj;
  490 + })
  491 + if(ob.code==-1){
  492 + wx.showModal({
  493 + title: '提示',
  494 + content: gg.goods_name+'门店库存不足'
  495 + });
  496 + return false;
  497 + }
  498 +
  499 + }else{
  500 + if(good.goods_num>store_count){
  501 + wx.showModal({
  502 + title: '提示',
  503 + content: gg.goods_name+'商品的库存不足'
  504 + });
  505 + return false;
  506 + }
  507 +
  508 + }
  509 + }
  510 +
  511 + var prom=null;
  512 + //---如果是活动的时候---
  513 + var prom=null,goodsinfo=good,th=this;
  514 + if(goodsinfo.prom_type==1){
  515 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  516 + }).then(res=>{
  517 + if(res.data.code==0){
  518 + prom=res.data.data;
  519 + }
  520 + })
  521 + }
  522 + if(goodsinfo.prom_type==6){
  523 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  524 + }).then(res=>{
  525 + if(res.data.code==0){
  526 + prom=res.data.data;
  527 + }
  528 + })
  529 + }
  530 + //----------如果有活动,并且在进行中,就不计算线下库存---------------
  531 + if(prom){
  532 + var now=ut.gettimestamp();
  533 + if(prom.is_end==1 && prom.end_time<now){
  534 + wx.showModal({
  535 + title: '提示',
  536 + content: goodsinfo.goods_name+'商品的活动已经结束'
  537 + });
  538 + return false;
  539 + }
  540 +
  541 + buyed_mum2=promgoodsbuynum+good.goods_num;
  542 + if (buyed_mum2 > prom.buy_limit && prom.buy_limit > 0) {
  543 + wx.showModal({
  544 + title: '提示',
  545 + content: goodsinfo.goods_name+'购买数量超出商品活动限购'
  546 + });
  547 + return false;
  548 + }
  549 +
  550 + var redis_num = 0;
  551 + //------判断活动是否抢光-----
  552 + await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" +
  553 + os.stoid + "/" + goodsinfo.prom_type + "/" + goodsinfo.prom_id, {
  554 + }).then(res => {
  555 + redis_num = res.data.data;
  556 + });
  557 +
  558 + if (good.goods_num > redis_num) {
  559 + wx.showModal({
  560 + title: gg.goods_name+'超出商品活动库存',
  561 + });
  562 + return false;
  563 + }
  564 + }
  565 +
  566 +
  567 + }
  568 + th.pay_next(e);
383 569 },
384   -
  570 +
  571 +
  572 + pay_next(e){
  573 + if (e.order_amount == 0) {
  574 + var dd = {
  575 + parent_sn: e.order_sn,
  576 + store_id: e.store_id,
  577 + type: 1,
  578 + };
  579 + getApp().request.post("/api/weshop/order/pay/createOrder", {
  580 + data: dd,
  581 + success: function(t) {
  582 + if (t.data.code == 0) {
  583 + th.onload();
  584 + } else {
  585 + getApp().confirmBox(t.data.msg + "请您取消该订单");
  586 + }
  587 + }
  588 + })
  589 + return false;
  590 + }
  591 + a.jumpToCart4({
  592 + order_sn: e.order_sn,
  593 + order_amount: e.order_amount,
  594 + type: 1 //正常单
  595 + });
  596 + },
  597 +
  598 + //---检验线下库存的数量的子函数---
  599 + async check_down_line_next(gg,num,pick_id,func){
  600 +
  601 + var lock=0,pick_no,plist;
  602 + //先读取门店的lock
  603 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  604 + data:{store_id:os.stoid,wareId:gg.goods_id,storageId:pick_id}
  605 + }).then(res=>{
  606 + if(res.data.code==0 && res.data.data.total>0){
  607 + lock=res.data.data.pageData[0].outQty;
  608 + }
  609 + })
  610 + //先获取门店的编号
  611 + await getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+pick_id,{
  612 + data:{storeId:os.stoid,goodsId:gg.goods_id,pickupId:pick_id}
  613 + }).then(res=>{
  614 + if(res.data.code==0){
  615 + pick_no=res.data.data.pickup_no;
  616 + }
  617 + })
  618 + //读取线下的门店库存
  619 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  620 + data:{storageNos:pick_no,wareIds:encodeURIComponent(gg.erpwareid),storeId:os.stoid}
  621 + }).then(res=>{
  622 + if(res.data.code==0){
  623 + plist=res.data.data.pageData[0];
  624 + }
  625 + })
  626 + var ob={}; ob.code=1;
  627 + if(num>plist.CanOutQty-lock){
  628 + ob.code=-1;
  629 + ob.CanOutQty=plist.CanOutQty-lock
  630 + if(ob.CanOutQty<0) ob.CanOutQty=0;
  631 + }
  632 + func(ob)
  633 + },
  634 +
  635 +
  636 +
385 637 //------图片失败,默认图片---------
386 638 bind_bnerr: function(e) {
387 639 var _errImg = e.currentTarget.dataset.errorimg;
... ...
pages/user/order_list/order_list.wxml
... ... @@ -24,7 +24,9 @@
24 24 <view wx:if="{{(item.order_status==1&&item.pay_status==1&&item.shipping_status==1)}}">待收货</view>
25 25 <view wx:if="{{(item.order_status==2)}}">待评价</view>
26 26 <view wx:if="{{item.order_status==4}}">已评价</view>
27   - <view wx:if="{{item.order_status==3 && item.pt_status!=6}}">已取消</view>
  27 + <view wx:if="{{item.order_status==3 && item.pt_status!=6}}" class="flex-center" >已取消<view class="lin"></view>
  28 + <image src="{{iurl}}miniapp/images/trash.png" bindtap="deleteOrderData" data-index="{{index}}" data-order_id="{{item.order_id}}"></image>
  29 + </view>
28 30 <view wx:if="{{item.pt_status==2 && item.pt_tail_money>0}}">待支付尾款</view>
29 31 <view wx:if="{{item.order_status==6}}">退款成功</view>
30 32 <view wx:if="{{item.pt_status==6}}"><text style="font-size: 26rpx;">支付尾款失败</text></view>
... ... @@ -32,7 +34,7 @@
32 34 <block wx:else>退款中</block>
33 35 <view class="flex" wx:if="{{(item.order_status==0&&item.pay_status==0)}}">
34 36 <view class="lin"></view>
35   - <image src="{{iurl}}miniapp/images/trash.png" bindtap="deleteOrderData" data-order_id="{{item.order_id}}"></image>
  37 + <image src="{{iurl}}miniapp/images/trash.png" bindtap="deleteOrderData" data-index="{{index}}" data-order_id="{{item.order_id}}"></image>
36 38 </view>
37 39 </view>
38 40 </view>
... ... @@ -126,8 +128,6 @@
126 128 </view>
127 129 <view class="links flex-right-vertical fs30">
128 130 <image wx:if="{{(item.order_status==1&&item.pay_status==1 && item.shipping_status==0 && item.exp_type==1)}}" class="code" src="{{iurl}}miniapp/images/order/code.png" bindtap="code_show" data-order_sn="{{item.order_sn}}"></image>
129   -
130   - <view class="commodity_To_evaluate flex-level View_evaluation" data-id="{{item.order_id}}" wx:if="{{item.order_status==3 && item.pt_status!=3}}">已取消</view>
131 131 <view bindtap="cancelOrder" class="commodity_To_evaluate flex-level View_evaluation" data-id="{{item.order_id}}" data-zsorder="{{item.is_zsorder}}" data-orderindex="{{index}}" wx:if="{{(item.order_status==0 &&item.pay_status==0)}}">取消订单</view>
132 132 <view class="commodity_To_evaluate flex-level View_evaluation" wx:if="{{item.pt_status==3}}">拼团失败</view>
133 133 <!---has_rt部分退---->
... ... @@ -136,7 +136,7 @@
136 136 <navigator class="commodity_To_evaluate flex-level View_evaluation" wx:if="{{(item.order_status==1&&item.pay_status==1) && !item.is_bedistri}}" url="/pages/order/refund_order/refund_order?order_id={{item.order_id}}">申请退款</navigator>
137 137 </block>
138 138 <block wx:else>
139   - <view class="commodity_To_evaluate flex-level View_evaluation" wx:if="{{item.is_all_return_status==2}}" bindtap="deleteOrderData" data-order_id="{{item.order_id}}">删除订单</view>
  139 + <view class="commodity_To_evaluate flex-level View_evaluation" wx:if="{{item.is_all_return_status==2 && item.isdel==0}}" bindtap="deleteOrderData" data-order_id="{{item.order_id}}" data-index="{{index}}">删除订单</view>
140 140 <navigator class="commodity_To_evaluate flex-level View_evaluation" wx:if="{{item.is_all_return_status==3}}" url="/pages/order/refund_order/refund_order?order_id={{item.order_id}}">重新退款</navigator>
141 141 <navigator class="commodity_To_evaluate flex-level View_evaluation" wx:if="{{item.is_all_return_status==0 || item.is_all_return_status==1}}" url="/pages/user/return_goods_info/return_goods_info?order_id={{item.order_id}}">退款详情</navigator>
142 142 </block>
... ...
pages/user/order_list/order_list.wxss
... ... @@ -152,8 +152,8 @@ page {
152 152 }
153 153  
154 154 .Commodity_number .lin {
155   - border-left: 2rpx solid rgb(129, 65, 81);
156   - margin: 0rpx 15rpx;
  155 + border-right: 1rpx solid #C4182E;
  156 + margin: 0rpx 11rpx; width: 2rpx;
157 157 height: 31rpx;
158 158 }
159 159  
... ...