Commit 7801de3f3da0171e69ecb6ada9a252433e1bcd44

Authored by 后端研发-苏明海
2 parents 9c5ae84e 9263d910

Merge branch 'test' into 'qa'

Test

See merge request !365
... ... @@ -395,6 +395,23 @@ App({
395 395 if(n>15) clearInterval(page.data[key]);
396 396 },1000);
397 397 }
  398 + },
  399 +
  400 +
  401 + //------定时等待某个值,有值才进行运算--------
  402 + waitfor2:function(page,key,pop_value_key,func){
  403 + var n=0;
  404 + if(!page.data[key]){
  405 + page.data[key]=setInterval(function(){
  406 + console.log(page.data[key]);n++;
  407 + if(page.data[pop_value_key]) {
  408 + clearInterval(page.data[key]);
  409 + func();
  410 + }
  411 + if(n>15) clearInterval(page.data[key]);
  412 + },1000);
  413 + }
398 414 }
  415 +
399 416  
400 417 });
... ...
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,86 +479,206 @@ 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 });
470 486 e.doCheckAll();
  487 +
  488 + t.goods_num=cbuy > 0 ? cbuy : 0,
  489 + e.update_cart(t, pitem, item);
471 490 return false;
472 491 }
473 492  
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   -
  493 +
487 494 if (goodsinfo.prom_type == 1) {
488   - //读取秒杀
489   - rq.get("/api/ms/flash_sale/getFlashSaleOne/" + oo.stoid + "/" + goodsinfo.prom_id, {
  495 + //读取秒杀
  496 + rq.get("/api/ms/flash_sale/getFlashSaleOne/" + oo.stoid + "/" + goodsinfo.prom_id, {
490 497 isShowLoading: 0,
491 498 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);
  499 +
  500 + if(res_d.data.code==0){
  501 + if (t.goods_num > store_count) {
  502 + wx.showModal({
  503 + title: '提示',
  504 + content: '购买数量超出商品库存'
  505 + });
  506 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  507 + e.setData({
  508 + [txt]: store_count
  509 + });
  510 + e.doCheckAll();
  511 +
  512 + t.goods_num=store_count;
  513 + e.update_cart(t, pitem, item);
  514 +
  515 + return false;
  516 + }
  517 +
  518 + var false_data = res_d.data.data;
  519 + //--判断库存--
  520 + if (t.goods_num > false_data.goods_num - false_data.buy_num) {
  521 + wx.showModal({
  522 + title: '提示',
  523 + content: '购买数量超出活动库存'
  524 + });
  525 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  526 + e.setData({
  527 + [txt]: false_data.goods_num - false_data.buy_num
  528 + });
  529 + e.doCheckAll();
  530 +
  531 + t.goods_num=false_data.goods_num - false_data.buy_num;
  532 + e.update_cart(t, pitem, item);
  533 +
  534 + return false;
  535 + }
  536 +
  537 + //--判断redis数量是否已经超出--
  538 + if (t.goods_num > false_data.redisnum) {
  539 + wx.showModal({
  540 + title: '提示',
  541 + content: '购买数量超出商品库存'
  542 + });
  543 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  544 + e.setData({
  545 + [txt]: false_data.redisnum
  546 + });
  547 + e.doCheckAll();
  548 +
  549 + t.goods_num=false_data.redisnum;
  550 + e.update_cart(t, pitem, item);
  551 +
  552 +
  553 + return false;
  554 + }
  555 +
  556 + //--活动的限购是不是要判断--
  557 + if (t.goods_num + promgoodsbuynum > false_data.buy_limit && false_data.buy_limit > 0) {
  558 + wx.showModal({
  559 + title: '提示',
  560 + content: '购买数量超出秒杀限购'
  561 + });
  562 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  563 + e.setData({
  564 + [txt]: false_data.false_data.buy_limit
  565 + });
  566 + e.doCheckAll();
  567 +
  568 + t.goods_num=false_data.false_data.buy_limit;
  569 + e.update_cart(t, pitem, item);
  570 +
  571 + return false;
  572 + }
  573 + }else{
  574 + //--- 看一下是不是线下库存 ---
  575 + if(th.data.sales_rules==2){
  576 + th.check_down_line(t, pitem, item,wareIds);
  577 + }else{
  578 + if (t.goods_num > store_count) {
  579 + wx.showModal({
  580 + title: '提示',
  581 + content: '购买数量超出商品库存'
  582 + });
  583 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  584 + e.setData({
  585 + [txt]: store_count
  586 + });
  587 + e.doCheckAll();
  588 + return false;
  589 + }
  590 + e.update_cart(t, pitem, item);
  591 + }
  592 + }
  593 +
536 594 }
537 595 })
538   - } else {
539   - e.update_cart(t, pitem, item);
  596 + } else {
  597 + //--- 看一下是不是线下库存 ---
  598 + if(th.data.sales_rules==2){
  599 + th.check_down_line(t, pitem, item,wareIds);
  600 + }else{
  601 + if (t.goods_num > store_count) {
  602 + wx.showModal({
  603 + title: '提示',
  604 + content: '购买数量超出商品库存'
  605 + });
  606 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  607 + e.setData({
  608 + [txt]: store_count
  609 + });
  610 + e.doCheckAll();
  611 + t.goods_num=store_count;
  612 + }
  613 + e.update_cart(t, pitem, item);
  614 + }
540 615 }
541 616 }
542 617 });
543 618 },
544   -
545   - //更新购物车
  619 +
  620 + //---检验线下库存的数量---
  621 + async check_down_line(t, pitem, item,erpwareid){
  622 + var ob={},th=this;
  623 + await this.check_down_line_next(t, pitem, item,erpwareid,function(res){
  624 + ob=res;
  625 + });
  626 + var log=0;
  627 + if(ob.code==-1){
  628 + wx.showModal({
  629 + title: '提示',
  630 + content: '购买数量超出商品库存'
  631 + });
  632 + var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num";
  633 + th.setData({
  634 + [txt]: ob.CanOutQty
  635 + });
  636 + th.doCheckAll();
  637 + t.goods_num=ob.CanOutQty;
  638 + }
  639 + this.update_cart(t, pitem, item);
  640 + },
  641 +
  642 + //---检验线下库存的数量的子函数---
  643 + async check_down_line_next(t, pitem, item,erpwareid,func){
  644 + var goodsinfo = this.data.requestData[pitem].goods[item];
  645 + var lock=0,pick_no,plist;
  646 + //先读取门店的lock
  647 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  648 + data:{store_id:os.stoid,wareId:t.goods_id,storageId:goodsinfo.pick_id,pageSize:1000}
  649 + }).then(res=>{
  650 + if(res.data.code==0 && res.data.data.total>0){
  651 + for(var i in res.data.data.pageData)
  652 + lock+=res.data.data.pageData[i].outQty;
  653 + }
  654 + })
  655 + //先获取门店的编号
  656 + await getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+goodsinfo.pick_id,{
  657 + data:{storeId:os.stoid,goodsId:t.goods_id,pickupId:goodsinfo.pick_id}
  658 + }).then(res=>{
  659 + if(res.data.code==0){
  660 + pick_no=res.data.data.pickup_no;
  661 + }
  662 + })
  663 + //读取线下的门店库存
  664 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  665 + data:{storageNos:pick_no,wareIds:encodeURIComponent(erpwareid),storeId:os.stoid}
  666 + }).then(res=>{
  667 + if(res.data.code==0){
  668 + plist=res.data.data.pageData[0];
  669 + }
  670 + })
  671 + var ob={}; ob.code=1;
  672 + if(t.goods_num>plist.CanOutQty-lock){
  673 + ob.code=-1;
  674 + ob.CanOutQty=plist.CanOutQty-lock
  675 + if(ob.CanOutQty<0) ob.CanOutQty=0;
  676 + }
  677 + func(ob)
  678 + },
  679 +
  680 +
  681 + //--更新购物车---
546 682 update_cart: function(t, pitem, item) {
547 683 var e = this;
548 684 getApp().request.put("/api/weshop/cart/update", {
... ... @@ -573,7 +709,7 @@ Page({
573 709 var th = this;
574 710  
575 711 var ab = 0; //选中
576   - console.log('checkout');
  712 + wx.showLoading();
577 713 for (var i = 0; i < this.data.requestData.length; i++) {
578 714 var i_arr = this.data.requestData[i].goods;
579 715 for (var j = 0; j < i_arr.length; j++) {
... ... @@ -594,6 +730,25 @@ Page({
594 730 }
595 731 glist += i_arr[j].goods_id + ",";
596 732 ab = 1;
  733 + //--普通商品,如果有开启线下库存的功能,要调用线下库存进行计算---
  734 + if(i_arr[j].prom_type==0 && th.data.sales_rules==2){
  735 + //--获取商品的线下商品ID--
  736 + var gd=null;
  737 + await getApp().request.promiseGet("/api/weshop/goods/get/" + oo.stoid + "/" + i_arr[j].goods_id,{}).then(res=>{
  738 + if(res.data.code==0) gd=res.data.data;
  739 + })
  740 + //--判断商品是线下库存--
  741 + var ob={}
  742 + await th.check_down_line_next(i_arr[j],i,j,gd.erpwareid,function(rs){
  743 + ob=rs;
  744 + });
  745 + if(ob.code==-1){
  746 + t.my_warnning(gd.goods_name+"门店库存不足", 0, th);
  747 + wx.hideLoading();
  748 + return false;
  749 + }
  750 + }
  751 +
597 752 } else {
598 753 rq.put("/api/weshop/cart/update", {
599 754 data: {
... ... @@ -610,6 +765,7 @@ Page({
610 765 }
611 766 if (ab == 0) {
612 767 t.my_warnning("未选择商品", 0, th);
  768 + wx.hideLoading();
613 769 return false;
614 770 }
615 771  
... ... @@ -657,7 +813,8 @@ Page({
657 813 }
658 814  
659 815 try {
660   - ddata.forEach(function(val, ind) {
  816 + for(var ind in ddata) {
  817 + var val=ddata[ind];
661 818 var num = map.get(val.goods_id + "");
662 819 if (num <= 0) {
663 820 isok = 0;
... ... @@ -665,12 +822,25 @@ Page({
665 822 throw "购买数量不能为0";
666 823 return false;
667 824 }
668   - if (num > val.store_count) {
669   - isok = 0;
670   - gname = val.goods_name;
671   - throw "超出库存";
672   - return false;
673   - }
  825 +
  826 + if(val.prom_type==1 || val.prom_type==6){
  827 + if (num > val.store_count) {
  828 + isok = 0;
  829 + gname = val.goods_name;
  830 + throw "超出库存";
  831 + return false;
  832 + }
  833 + }
  834 +
  835 + if(th.data.sales_rules!=2){
  836 + if (num > val.store_count) {
  837 + isok = 0;
  838 + gname = val.goods_name;
  839 + throw "超出库存";
  840 + return false;
  841 + }
  842 + }
  843 +
674 844 if (num > val.redisnum && val.redisnum) {
675 845 isok = 0;
676 846 gname = val.goods_name;
... ... @@ -712,7 +882,7 @@ Page({
712 882 throw "商品价格已经变化";
713 883 }
714 884 }else{
715   - if (g_arr[i].goods_price != val.shop_price && g_arr[i].goods_price != val.prom_price) {
  885 + if (g_arr[i].goods_price != val.shop_price && g_arr[i].goods_price != val.prom_price) {
716 886 isok = 0;
717 887 gname = val.goods_name;
718 888 throw "商品价格已经变化";
... ... @@ -733,14 +903,16 @@ Page({
733 903 }
734 904 }
735 905  
736   - })
  906 + }
737 907 } catch (e) {
738 908 err = e;
739 909 }
740 910 if (isok == 0) {
741 911 t.confirmBox(gname + ":" + err);
  912 + wx.hideLoading();
742 913 return false;
743 914 }
  915 + wx.hideLoading();
744 916 wx.navigateTo({
745 917 url: "/pages/cart/cart2/cart2"
746 918 });
... ... @@ -821,6 +993,8 @@ Page({
821 993 wx.switchTab({
822 994 url: '/pages/index/index/index',
823 995 })
824   - }
  996 + },
  997 +
  998 +
825 999  
826 1000 });
827 1001 \ 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,50 @@ 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,pageSize:1000}
  1015 + }).then(res=>{
  1016 + if(res.data.code==0 && res.data.data.total>0){
  1017 + for(var i in res.data.data.pageData)
  1018 + lock+=res.data.data.pageData[i].outQty;
  1019 + }
  1020 + })
  1021 + //先获取门店的编号
  1022 + await getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+pick,{
  1023 + data:{storeId:os.stoid,goodsId:t.goods_id,pickupId:pick}
  1024 + }).then(res=>{
  1025 + if(res.data.code==0){
  1026 + pick_no=res.data.data.pickup_no;
  1027 + }
  1028 + })
  1029 + //先获取商品的线下库存
  1030 + await getApp().request.promiseGet("/api/weshop/goods/get/"+os.stoid+"/"+goods_id,{
  1031 + data:{storeId:os.stoid,goodsId:t.goods_id,pickupId:pick}
  1032 + }).then(res=>{
  1033 + if(res.data.code==0){
  1034 + erpwareid=res.data.data.erpwareid;
  1035 + }
  1036 + })
  1037 + //读取线下的门店库存
  1038 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  1039 + data:{storageNos:pick_no,wareIds:encodeURIComponent(erpwareid),storeId:os.stoid}
  1040 + }).then(res=>{
  1041 + if(res.data.code==0){
  1042 + plist=res.data.data.pageData[0];
  1043 + }
  1044 + })
  1045 + var isok=1;
  1046 + if(goods_num>plist.CanOutQty-lock){
  1047 + isok=0;
  1048 + }
  1049 + func(isok);
  1050 + },
  1051 +
978 1052  
979 1053 useCoupon: function() {
980 1054 if (this.data.order.couponNum <= 0) {
... ...
pages/cart/cart2/cart2.wxml
... ... @@ -376,7 +376,7 @@
376 376 <block>{{item.Sum}}元优惠券</block>
377 377 </view>
378 378 <view class="coupon-time">
379   - {{filters.replace_time2(item.BeginDate)}}至{{filters.replace_time2(item.BillDate)}}</view>
  379 + {{filters.replace_time2(item.BeginDate)}}至{{item.ValidDate?filters.replace_time2(item.ValidDate):'不限'}}</view>
380 380 </view>
381 381 </view>
382 382 <!-- <view wx:if="{{item.Obtain>0}}" class="code-img" bindtap="show_quan" data-ind="{{index}}" data-now="{{filter.format_time(now)}}">
... ...
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, //---拼单的普通购买---
... ... @@ -219,6 +219,7 @@ Page({
219 219 new_user: 0, //新用户
220 220  
221 221 def_pick_store: null, // 默认的门店
  222 + fir_def_store:null, //客户默认的门店的
222 223 lat: null, //维度
223 224 lon: null, //经度
224 225  
... ... @@ -233,11 +234,13 @@ Page({
233 234 is_collect_load:0, //是不是处理
234 235 is_newsales_rules:0, //是否开启最新的门店规则,此时会新读门店,当点击选择门店时会触发读取线下库存
235 236 sales_rules:1, //默认是线上销售
  237 +
  238 + wait_for_user_store:null,
  239 +
236 240 },
237 241  
238 242 //------初始化加载----------
239 243 onLoad: function(t) {
240   -
241 244 wx.setNavigationBarTitle({
242 245 title: "商品详情",
243 246 })
... ... @@ -279,6 +282,7 @@ Page({
279 282 var json_d = JSON.parse(e.switch_list);
280 283 ee.setData({
281 284 store_config: e,
  285 + sys_switch:json_d,
282 286 is_closecoupon: json_d.is_closecoupon,
283 287 is_newsales_rules:json_d.is_newsales_rules
284 288 });
... ... @@ -296,31 +300,30 @@ Page({
296 300 //---如果后台又开等级卡的开关---
297 301 if(sw_arr.rank_switch && sw_arr.rank_switch=="2"){
298 302 th.setData({rank_switch:true});
299   -
300 303 //---回调卡的列表---
301 304 th.getPlusCardType(function(ob){
302 305 th.setData({card_list:ob.card_list});
303   - var ti = setInterval(function () {
304   - var user = getApp().globalData.userInfo;
305   - if (!user) return false;
306   - clearInterval(ti);
307   -
308   - if(user.card_field ){
309   - var str = user['card_expiredate'].replace(/-/g, '/');
310   - var end = new Date(str);
311   - end = Date.parse(end) / 1000;
312   - var now = ut.gettimestamp();
313   - //--- 判断是等级会员,且在有效期范围内 ---
314   - if(user.card_field && now<end){
315   - var card_name=ob.name_map.get(user.card_field);
316   - if(card_name.length>5) card_name=card_name.substring(0,5);
317   -
318   - var is_near_date=0;
319   - if(end-now<60*60*30*24) is_near_date=1; //如果小于30天
320   - th.setData({card_field:user.card_field,card_name:card_name,card_list:ob.card_list,is_near_date:is_near_date});
321   - }
322   - }
323   - }, 500)
  306 + var ti = setInterval(function () {
  307 + var user = getApp().globalData.userInfo;
  308 + if (!user) return false;
  309 + clearInterval(ti);
  310 +
  311 + if(user.card_field ){
  312 + var str = user['card_expiredate'].replace(/-/g, '/');
  313 + var end = new Date(str);
  314 + end = Date.parse(end) / 1000;
  315 + var now = ut.gettimestamp();
  316 + //--- 判断是等级会员,且在有效期范围内 ---
  317 + if(user.card_field && now<end){
  318 + var card_name=ob.name_map.get(user.card_field);
  319 + if(card_name.length>5) card_name=card_name.substring(0,5);
  320 +
  321 + var is_near_date=0;
  322 + if(end-now<60*60*30*24) is_near_date=1; //如果小于30天
  323 + th.setData({card_field:user.card_field,card_name:card_name,card_list:ob.card_list,is_near_date:is_near_date});
  324 + }
  325 + }
  326 + }, 500)
324 327 })
325 328  
326 329 }
... ... @@ -337,46 +340,46 @@ Page({
337 340 });
338 341  
339 342 //获取用户的默认门店
340   - getApp().get_user_store(function(e) {
341   - if(!e) return false;
  343 + getApp().get_user_store(function(ee) {
  344 + if(!ee) return false;
342 345 var appd=getApp().globalData;
343 346 var w_time = setInterval(function() {
344 347 if (that.data.is_get_local_ok == 0) return false;
345 348 clearInterval(w_time);
346 349 var distance = null;
  350 + var e=JSON.parse(JSON.stringify(ee));
347 351  
348 352 //如果有开启近距离的话,同时距离优不一样了
349 353 if (that.data.lat != null) {
350 354 //如果经纬度有变化的话
351 355 if( appd.lat==that.data.lat && appd.lon==that.data.lon && e.distance>0 ){
  356 + that.data.fir_def_store=e;
352 357 that.setData({
353 358 def_pick_store: e,
354 359 sto_sele_name: e.pickup_name,
355 360 sto_sele_id: e.pickup_id,
356 361 sto_sele_distr: e.distr_type
357 362 })
358   - }else{
359   - //要用接口是获取距离,js的计算不准
360   - getApp().request.get("/api/weshop/pickup/list",{
361   - data:{store_id:os.stoid,pickup_id:e.pickup_id,lat:th.data.lat,lon: th.data.lon},
362   - success:function (res) {
363   - if(res.data.code==0){
364   - e=res.data.data.pageData[0];
365   - if (e){
366   - appd.pk_store=e;
367   - that.setData({
368   - def_pick_store: e,
369   - sto_sele_name: e.pickup_name,
370   - sto_sele_id: e.pickup_id,
371   - sto_sele_distr: e.distr_type
372   - })
373   - }
374   -
375   -
376   -
377   - }
378   - }
379   - })
  363 + }else{
  364 + //要用接口是获取距离,js的计算不准
  365 + getApp().request.promiseGet("/api/weshop/pickup/list",{
  366 + data:{store_id:os.stoid,pickup_id:e.pickup_id,lat:th.data.lat,lon: th.data.lon},
  367 + }).then(res=>{
  368 + if(res.data.code==0){
  369 + e=res.data.data.pageData[0];
  370 + if (e){
  371 + appd.pk_store=e;
  372 + that.data.fir_def_store=e;
  373 + that.setData({
  374 + def_pick_store: e,
  375 + sto_sele_name: e.pickup_name,
  376 + sto_sele_id: e.pickup_id,
  377 + sto_sele_distr: e.distr_type
  378 + })
  379 + }
  380 +
  381 + }
  382 + })
380 383 }
381 384  
382 385 //e.distance = distance;
... ... @@ -386,18 +389,16 @@ Page({
386 389 }else{
387 390 if (e) {
388 391 e.distance = null;
  392 + that.data.fir_def_store=e;
389 393 that.setData({
390 394 def_pick_store: e,
391 395 sto_sele_name: e.pickup_name,
392 396 sto_sele_id: e.pickup_id,
393 397 sto_sele_distr: e.distr_type
394 398 })
395   - }
396   -
397   -
  399 + }
398 400 }
399   -
400   -
  401 +
401 402 }, 500)
402 403 });
403 404  
... ... @@ -548,7 +549,7 @@ Page({
548 549  
549 550 //---展示---
550 551 onShow: function() {
551   - var goods_list = null,th = this;
  552 + var goods_list = null,th = this,that=this;
552 553 var ui = setInterval(function () {
553 554 goods_list = th.selectComponent("#goods_list");
554 555 if (goods_list) {
... ... @@ -620,13 +621,56 @@ Page({
620 621 ee.setData({
621 622 data: t.data.data,
622 623 sele_g: t.data.data,
  624 + userInfo:getApp().globalData.userInfo
623 625 });
624 626  
625   - //获取门店
626   - ee.get_sto();
  627 +
627 628 //获取统一条形码,普通商品和优惠促销的商品
628   - if (ee.data.data.prom_type == 0 || ee.data.data.prom_type == 3 || ee.data.data.prom_type == 5)
629   - ee.get_sku(o.stoid, t.data.data.sku, gid);
  629 + if (ee.data.data.prom_type == 0 || ee.data.data.prom_type == 2 || ee.data.data.prom_type == 3 || ee.data.data.prom_type == 4 || ee.data.data.prom_type == 5){
  630 + //默认门店要拿下门店库存
  631 + if(that.data.sales_rules==2 && that.data.is_newsales_rules){
  632 + //--等待某个值只运行---,这里有可能因为导航的时间太久,而不能计算门店库存
  633 + getApp().waitfor2(that,"wait_for_user_store","fir_def_store",function(){
  634 + if(th.data.fir_def_store){
  635 + var lock=0,plist=null;
  636 + //先读取门店的lock,采用链式写法,少用await
  637 + getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  638 + data:{store_id:os.stoid,wareId:ee.data.data.goods_id,storageId:that.data.fir_def_store.pickup_id,pageSize:1000}
  639 + }).then(res=>{
  640 + if(res.data.code==0 && res.data.data.total>0){
  641 + for(var i in res.data.data.pageData)
  642 + lock+=res.data.data.pageData[i].outQty
  643 + }
  644 + //---通过接口获取门店的线下库存信息--
  645 + return getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  646 + data:{storageNos:that.data.fir_def_store.pickup_no,wareIds:encodeURIComponent(th.data.data.erpwareid),storeId:os.stoid}
  647 + })
  648 + }).then(res=>{
  649 + if(res.data.code==0 && res.data.data.total>0){
  650 + plist=res.data.data.pageData[0];
  651 + }
  652 + if(plist && plist.CanOutQty-lock>0){
  653 + that.data.fir_def_store.CanOutQty=plist.CanOutQty-lock;
  654 + }else{
  655 + that.data.fir_def_store.CanOutQty=0;
  656 + }
  657 + //--给门店赋值线下库存--
  658 + th.setData({def_pick_store:that.data.fir_def_store});
  659 + //获取门店
  660 + ee.get_sto();
  661 + })
  662 + }else{
  663 + //--获取门店--
  664 + ee.get_sto();
  665 + }
  666 + })
  667 + }else{
  668 + //获取门店
  669 + ee.get_sto();
  670 + }
  671 +
  672 + ee.get_sku(o.stoid, t.data.data.sku, gid);
  673 + }
630 674 else {
631 675 var gg = "",
632 676 item = t.data.data;
... ... @@ -693,11 +737,6 @@ Page({
693 737 });
694 738 this.data.enterAddressPage && (this.data.enterAddressPage = !1);
695 739  
696   -
697   -
698   -
699   -
700   -
701 740 },
702 741 enterAddress: function() {
703 742 this.data.enterAddressPage = !0, wx.navigateTo({
... ... @@ -810,6 +849,7 @@ Page({
810 849 addCart: function(t) {
811 850 var th = this;
812 851 var ind = t.currentTarget.dataset.openSpecModal_ind;
  852 + if(!ind) ind = t.currentTarget.dataset.openspecmodal_ind;
813 853 th.setData({
814 854 open_ind_store: ind
815 855 });
... ... @@ -836,9 +876,8 @@ Page({
836 876 var e = this,
837 877 th = e,
838 878 a = 0,
839   - o = this.data.sele_g;
840   - if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th);
841   - a = o.goods_id;
  879 + o = this.data.sele_g;
  880 + a = o.goods_id;
842 881  
843 882 //----------添加到购物车时,要判断限购数量,--------
844 883 e.get_buy_num(o, function(ee) {
... ... @@ -864,7 +903,6 @@ Page({
864 903 }
865 904  
866 905 if (th.data.goodsInputNum <= 0) return s.my_warnning("商品数量不能为0", 0, th);
867   - if (th.data.goodsInputNum > o.store_count) return s.my_warnning("超出商品库存", 0, th);
868 906 if (th.data.sto_sele_name == null || th.data.sto_sele_name == undefined)
869 907 this.setData({
870 908 sto_sele_name: ""
... ... @@ -889,20 +927,81 @@ Page({
889 927 if (th.data.prom_type == 1) {
890 928 newd.goods_price = th.data.prom_price;
891 929 newd.member_goods_price = th.data.prom_price,
892   - newd.prom_type = th.data.prom_type;
  930 + newd.prom_type = th.data.prom_type;
893 931 newd.prom_id = th.data.prom_id;
894   - } else if (th.data.prom_type == 3 || th.data.prom_type == 2 || th.data.prom_type == 4 || th.data.prom_type == 5) {
  932 +
  933 + if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th);
  934 + if (o.store_count <e.data.goodsInputNum) return s.my_warnning("库存不足!", 0, th);
  935 +
  936 + th.add_cart_next(e,t,a,o,newd); //加入购物车下一步
  937 +
  938 + } 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) {
895 939 newd.prom_type = 0;
896 940 newd.prom_id = 0;
897   - }
898   -
  941 + //---如果是线下门店销售的时候---
  942 + if(th.data.sales_rules==2){
  943 + var pick=th.get_pick_from_list(th.data.sto_sele_id)
  944 + //---通过接口获取门店的线下库存信息--
  945 + getApp().request.get("/api/weshop/goods/getWareStorages",{
  946 + data:{storageNos:pick.pickup_no,wareIds:encodeURIComponent(th.data.sele_g.erpwareid),storeId:os.stoid},
  947 + success:function(res){
  948 + if(res.data.code==0){
  949 + if(res.data.data.pageData.length>0){
  950 + var CanOutQty=res.data.data.pageData[0].CanOutQty;
  951 + if(CanOutQty<e.data.goodsInputNum){
  952 + return s.my_warnning("库存不足!", 0, th);
  953 + }
  954 + //在调一次接口,读取商品的预出库的数量,lock
  955 + getApp().request.get("/api/weshop/order/ware/lock/page",{
  956 + data:{store_id:os.stoid,wareId:th.data.sele_g.goods_id,storageId:pick.pickup_id,pageSize:1000},
  957 + success:function(res_data){
  958 + if(res_data.data.code==0 && res_data.data.data.total>0){
  959 +
  960 + var lock=0;
  961 + for(var i in res_data.data.data.pageData){
  962 + lock+=res_data.data.data.pageData[i].outQty;
  963 + }
  964 +
  965 + if(CanOutQty<=lock){
  966 + return s.my_warnning("库存不足!", 0, th);
  967 + }
  968 + th.add_cart_next(e,t,a,o,newd,CanOutQty-lock);
  969 + }else{
  970 + th.add_cart_next(e,t,a,o,newd,CanOutQty);
  971 + }
  972 + }
  973 + })
  974 + }else{
  975 + return s.my_warnning("库存不足!", 0, th);
  976 + }
  977 +
  978 + }
  979 + }
  980 + })
  981 + }else{
  982 + if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th);
  983 + if (o.store_count <e.data.goodsInputNum) return s.my_warnning("库存不足!", 0, th);
  984 + th.add_cart_next(e,t,a,o,newd); //加入购物车下一步
  985 + }
  986 + }
  987 + })
  988 + },
  989 +
  990 + //---加入购物车的最后一步---
  991 + add_cart_next(e,t,a,o,newd,CanOutQty){
  992 + var th=this;
899 993 //---如果商品不是积分购和拼团,要判断一个是否要进行等级价的判断------
900 994 if(o.prom_type!=1 && o.prom_type!=6){
901 995 var conf=th.data.bconfig;
902   - if(conf.switch_list){
  996 + if (conf.switch_list && getApp().globalData.userInfo['card_field']){
903 997 var s_list=JSON.parse(conf.switch_list);
904   - //如果后台有开启等级价的功能
905   - if(parseInt(s_list.rank_switch)==2){
  998 + var now=ut.gettimestamp();
  999 + var str = getApp().globalData.userInfo['card_expiredate'].replace(/-/g, '/');
  1000 + var end = new Date(str);
  1001 + end = Date.parse(end) / 1000;
  1002 +
  1003 + //--如果后台有开启等级价的功能,而且会员的等级没有过期的情况下--
  1004 + if(parseInt(s_list.rank_switch)==2 && end>now){
906 1005 var card_price=o[getApp().globalData.userInfo['card_field']];
907 1006 //如果会员有等级价
908 1007 if(getApp().globalData.userInfo['card_field']!=undefined && getApp().globalData.userInfo['card_field']!=null
... ... @@ -912,64 +1011,82 @@ Page({
912 1011 }
913 1012 }
914 1013 }
915   -
916   -
917   - //if (this.data.data.goods.is_virtual) return this.buyVirtualGoods(d);
918   - if ("add" == t.currentTarget.dataset.action) {
919   - //----先看会员在购物车中是否加入了该商品-----
920   - i.get("/api/weshop/cart/page", {
921   - data: {
922   - store_id: e.data.stoid,
923   - user_id: oo.user_id,
924   - goods_id: a,
925   - pick_id: e.data.sto_sele_id,
926   - },
927   - success: function(re) {
928   - //-------如果购物车中有相关的数据---------
929   - if (re.data.data.total > 0) {
930   - var item = re.data.data.pageData[0];
931   - var updata = {
932   - id: item.id,
933   - goods_num: e.data.goodsInputNum + item.goods_num,
934   - goods_price: newd.goods_price,
935   - store_id: th.data.stoid,
936   - };
937   -
938   - i.put("/api/weshop/cart/update", {
939   - data: updata,
940   - success: function(t) {
941   - getApp().my_warnning('加入购物车成功', 1, th, 450);
942   - var c_num = th.data.cartGoodsNum + th.data.goodsInputNum;
943   - th.setData({
944   - cartGoodsNum: c_num
945   - });
946   - th.closeSpecModal();
947   - }
948   - });
949   - } else {
950   - i.post("/api/weshop/cart/save", {
951   - data: newd,
952   - success: function(t) {
953   - getApp().my_warnning('加入购物车成功', 1, th, 450);
954   - var c_num = th.data.cartGoodsNum + e.data.goodsInputNum;
955   - th.setData({
956   - cartGoodsNum: c_num
957   - });
958   - th.closeSpecModal();
959   - }
960   - });
961   - }
962   - }
963   - });
964   - }
965   - //else "exchange" == t.currentTarget.dataset.action ? this.exchange(d) : this.buyNow(d);
966   - else {
967   - newd['pick_name'] = th.data.sto_sele_name;
968   - newd['pick_dis'] = th.data.sto_sele_distr;
969   - th.buyNow(newd);
970   - }
971   - })
  1014 +
  1015 + //if (this.data.data.goods.is_virtual) return this.buyVirtualGoods(d);
  1016 + if ("add" == t.currentTarget.dataset.action) {
  1017 + //----先看会员在购物车中是否加入了该商品-----
  1018 + i.get("/api/weshop/cart/page", {
  1019 + data: {
  1020 + store_id: e.data.stoid,
  1021 + user_id: oo.user_id,
  1022 + goods_id: a,
  1023 + pick_id: e.data.sto_sele_id,
  1024 + },
  1025 + success: function(re) {
  1026 +
  1027 + //-------如果购物车中有相关的数据---------
  1028 + if (re.data.data.total > 0) {
  1029 +
  1030 + var item = re.data.data.pageData[0];
  1031 +
  1032 + //判断数量,要看下购物车中有没有该商品
  1033 + if(CanOutQty){
  1034 + if(item.goods_num+ th.data.goodsInputNum>CanOutQty){
  1035 + return s.my_warnning("库存不足!", 0, th);
  1036 + }
  1037 + }else{
  1038 + if(item.goods_num+ th.data.goodsInputNum>o.store_count){
  1039 + return s.my_warnning("库存不足!", 0, th);
  1040 + }
  1041 + }
  1042 +
  1043 +
  1044 +
  1045 + var updata = {
  1046 + id: item.id,
  1047 + goods_num: e.data.goodsInputNum + item.goods_num,
  1048 + goods_price: newd.goods_price,
  1049 + store_id: th.data.stoid,
  1050 + };
  1051 +
  1052 + i.put("/api/weshop/cart/update", {
  1053 + data: updata,
  1054 + success: function(t) {
  1055 + getApp().my_warnning('加入购物车成功', 1, th, 450);
  1056 + var c_num = th.data.cartGoodsNum + th.data.goodsInputNum;
  1057 + th.setData({
  1058 + cartGoodsNum: c_num
  1059 + });
  1060 + th.closeSpecModal();
  1061 + }
  1062 + });
  1063 + } else {
  1064 + i.post("/api/weshop/cart/save", {
  1065 + data: newd,
  1066 + success: function(t) {
  1067 + getApp().my_warnning('加入购物车成功', 1, th, 450);
  1068 + var c_num = th.data.cartGoodsNum + e.data.goodsInputNum;
  1069 + th.setData({
  1070 + cartGoodsNum: c_num
  1071 + });
  1072 + th.closeSpecModal();
  1073 + }
  1074 + });
  1075 + }
  1076 + }
  1077 + });
  1078 + }
  1079 + //else "exchange" == t.currentTarget.dataset.action ? this.exchange(d) : this.buyNow(d);
  1080 + else {
  1081 + newd['pick_name'] = th.data.sto_sele_name;
  1082 + newd['pick_dis'] = th.data.sto_sele_distr;
  1083 + th.buyNow(newd);
  1084 + }
972 1085 },
  1086 +
  1087 +
  1088 +
  1089 +
973 1090 //----------购买虚拟商品------
974 1091 buyVirtualGoods: function(e) {
975 1092 Object.assign(e, {
... ... @@ -1018,10 +1135,17 @@ Page({
1018 1135  
1019 1136 //--判断商品是否超出限购--
1020 1137 if (th.data.g_buy_num != null && th.data.sele_g.viplimited > 0) {
1021   - if (t + th.data.g_buy_num.get(th.data.sele_g.goods_id) > th.data.sele_g.viplimited) {
  1138 +
  1139 + var gd_buy_num=th.data.g_buy_num.get(th.data.sele_g.goods_id);
  1140 +
  1141 + if (t + gd_buy_num > th.data.sele_g.viplimited) {
1022 1142 wx.showModal({
1023 1143 title: '超出商品限购',
1024 1144 });
  1145 +
  1146 + var num= th.data.sele_g.viplimited-gd_buy_num;
  1147 + if(num<0) num=0;
  1148 + th.setData({goodsInputNum:num})
1025 1149 return false;
1026 1150 }
1027 1151 }
... ... @@ -1032,6 +1156,10 @@ Page({
1032 1156 wx.showModal({
1033 1157 title: '超出商品活动限购',
1034 1158 });
  1159 +
  1160 + var num=th.data.prom_buy_limit- th.data.prom_buy_num ;
  1161 + if(num<0) num=0;
  1162 + th.setData({goodsInputNum:num})
1035 1163 return false;
1036 1164 }
1037 1165 }
... ... @@ -1049,17 +1177,31 @@ Page({
1049 1177 if (t > redis_num) {
1050 1178 wx.showModal({
1051 1179 title: '超出商品活动库存',
1052   - });
  1180 + });
  1181 + th.setData({goodsInputNum:redis_num})
1053 1182 return false;
1054 1183 }
1055 1184  
1056 1185 }
1057 1186  
1058   - var e = th.data.sele_g.store_count;
1059   - t > e || 0 == e ? t = e : t < 1 && (t = 1),
1060   - th.setData({
1061   - goodsInputNum: t
1062   - });
  1187 + var e = th.data.sele_g.store_count;
  1188 + if(th.data.sales_rules==2){
  1189 + if(!th.data.def_pick_store){
  1190 + wx.showModal({ title: '请选择门店', });
  1191 + return false;
  1192 + }else{
  1193 + e=th.data.def_pick_store.CanOutQty;
  1194 + }
  1195 + }
  1196 +
  1197 + //库存不足,不增加
  1198 + if(e<t){ wx.showModal({ title: '库存不足', });
  1199 + if(e<0) e=0;
  1200 + th.setData({ goodsInputNum: e }); return false;
  1201 + }
  1202 + t > e || 0 == e ? t = e : t < 1 && (t = 1);
  1203 + th.setData({ goodsInputNum: t });
  1204 +
1063 1205 })
1064 1206 },
1065 1207  
... ... @@ -1273,7 +1415,7 @@ Page({
1273 1415  
1274 1416 //----------装载同一条形码的商品----------
1275 1417 async get_sku(stoid, sku, g_id, is_normal, func) {
1276   - var tt = this;
  1418 + var tt = this,arrdata=null;
1277 1419 await getApp().request.promiseGet("/api/weshop/goods/page", {
1278 1420 data: {
1279 1421 store_id: o.stoid,
... ... @@ -1282,17 +1424,38 @@ Page({
1282 1424 is_on_sale: 1
1283 1425 }
1284 1426 }).then(res => {
1285   - var e = res;
1286   - var arrsku = new Array();
1287   - var gitem = null;
1288   - if (e.data.code == 0) {
1289   - var arrdata = e.data.data.pageData,
1290   - gb = 1,
1291   - gg = "";
1292   - for (var i = 0; i < arrdata.length; i++) {
1293   - var item = arrdata[i],
1294   - gg = "";
1295   -
  1427 + var e = res;
  1428 + if (e.data.code == 0) arrdata = e.data.data.pageData;
  1429 + })
  1430 + if(!arrdata) return fasle;
  1431 +
  1432 + var arrsku = new Array();
  1433 + var gitem = null;
  1434 + var gb = 1,gg = "";
  1435 + for (var i = 0; i < arrdata.length; i++) {
  1436 + var goodsinfo=arrdata[i],prom=null;
  1437 + if (goodsinfo.goods_id != g_id) {
  1438 + if(goodsinfo.prom_type==1){
  1439 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  1440 + }).then(res=>{
  1441 + if(res.data.code==0) prom=res.data.data;
  1442 + })
  1443 + }
  1444 + if(goodsinfo.prom_type==6){
  1445 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  1446 + }).then(res=>{
  1447 + if(res.data.code==0) prom=res.data.data;
  1448 + })
  1449 + }
  1450 + }
  1451 + //---如果有活动,不算在一起---
  1452 + if(prom){
  1453 + if(prom.is_end==0 && prom.end_time>now && prom.start_time<now){
  1454 + continue;
  1455 + }
  1456 + }
  1457 +
  1458 + var item = arrdata[i],gg = "";
1296 1459 if(item.goods_spec=="null" || item.goods_spec==null) item.goods_spec="";
1297 1460 if(item.goods_color=="null" || item.goods_color==null) item.goods_color="";
1298 1461  
... ... @@ -1324,13 +1487,12 @@ Page({
1324 1487 sku_g: arrsku,
1325 1488 sele_g: gitem
1326 1489 });
1327   - }
1328   - }
1329   - })
  1490 + }
1330 1491 },
1331 1492  
1332 1493 //-----------选择属性的按钮事件----------
1333 1494 sele_spec: function(e) {
  1495 + var that=this,ee=this,th=this;
1334 1496 var gid = e.currentTarget.dataset.gid;
1335 1497 var sku_g = this.data.sku_g;
1336 1498 var item = null;
... ... @@ -1343,11 +1505,93 @@ Page({
1343 1505 if (item) this.setData({
1344 1506 sele_g: item,
1345 1507 gid: gid
1346   - });
1347   - },
  1508 + });
  1509 +
  1510 + this.get_sto();
  1511 + //默认门店要拿下门店库存
  1512 + if(that.data.sales_rules==2 && that.data.def_pick_store){
  1513 + var lock=0,plist=null;
  1514 + //先读取门店的lock,采用链式写法,少用await
  1515 + getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  1516 + data:{store_id:os.stoid,wareId:ee.data.sele_g.goods_id,storageId:that.data.def_pick_store.pickup_id,pageSize:1000}
  1517 + }).then(res=>{
  1518 + if(res.data.code==0 && res.data.data.total>0){
  1519 + for(var i in res.data.data.pageData)
  1520 + lock+=res.data.data.pageData[i].outQty
  1521 + }
  1522 + //---通过接口获取门店的线下库存信息--
  1523 + return getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  1524 + data:{storageNos:that.data.def_pick_store.pickup_no,wareIds:encodeURIComponent(th.data.sele_g.erpwareid),storeId:os.stoid}
  1525 + })
  1526 + }).then(res=>{
  1527 + if(res.data.code==0 && res.data.data.total>0){
  1528 + plist=res.data.data.pageData[0];
  1529 + }
  1530 + if(plist && plist.CanOutQty-lock>0){
  1531 + that.data.def_pick_store.CanOutQty=plist.CanOutQty-lock;
  1532 + }else{
  1533 + that.data.def_pick_store.CanOutQty=0;
  1534 + }
  1535 + //--给门店赋值线下库存--
  1536 + th.setData({def_pick_store:that.data.def_pick_store});
  1537 + })
  1538 + }
  1539 +
  1540 +
  1541 + this.sele_spec_chech_activity();
  1542 + },
  1543 +
  1544 + //选择了不同的规格的时候要判断是不是有活动正在进行中
  1545 + async sele_spec_chech_activity(){
  1546 + //---如果是活动的时候---
  1547 + var prom=null,goodsinfo=this.data.sele_g,th=this;
  1548 + if(goodsinfo.prom_type==1){
  1549 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  1550 + }).then(res=>{
  1551 + if(res.data.code==0){
  1552 + prom=res.data.data;
  1553 + }
  1554 + })
  1555 + }
  1556 + if(goodsinfo.prom_type==6){
  1557 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  1558 + }).then(res=>{
  1559 + if(res.data.code==0){
  1560 + prom=res.data.data;
  1561 + }
  1562 + })
  1563 + }
  1564 + //----------如果有活动,并且在进行中,就不计算线下库存---------------
  1565 + var now=ut.gettimestamp();
  1566 + if(prom){
  1567 + if(prom.is_end==0 && prom.end_time>now && prom.start_time<now){
  1568 + th.setData({
  1569 + prom_type:goodsinfo.prom_type,
  1570 + prom_price:prom.price,
  1571 + prom_buy_limit:prom.buy_limit,
  1572 + prom_end_time:prom.end_time,
  1573 + prom_start_time:prom.start_time,
  1574 + prom_st:1,
  1575 + })
  1576 + return false;
  1577 + }
  1578 + }
  1579 + //---设置普通商品---
  1580 + th.setData({
  1581 + prom_type:0,
  1582 + prom_price:null,
  1583 + prom_buy_limit:null,
  1584 + prom_end_time:null,
  1585 + prom_start_time:null,
  1586 + prom_st:null,
  1587 + })
  1588 +
  1589 + },
  1590 +
  1591 +
1348 1592 //---------拿出门店分类和门店------------
1349 1593 get_sto(e) {
1350   - var th = this;
  1594 + var th = this,that=this;
1351 1595 var timer_get = setInterval(function() {
1352 1596 if (th.data.is_get_local_ok == 0) return false;
1353 1597 var dd = null,
... ... @@ -1358,13 +1602,13 @@ Page({
1358 1602 store_id: o.stoid,
1359 1603 distr_type: g_distr_type,
1360 1604 isstop: 0,
1361   - pageSize: 300
  1605 + pageSize: 2000
1362 1606 }
1363 1607 } else {
1364 1608 dd = {
1365 1609 store_id: o.stoid,
1366 1610 isstop: 0,
1367   - pageSize: 300
  1611 + pageSize: 2000
1368 1612 }
1369 1613 }
1370 1614 //如果有距离的话
... ... @@ -1379,15 +1623,16 @@ Page({
1379 1623 }).then(res => {
1380 1624 var e = res;
1381 1625 if (e.data.code == 0) {
1382   -
  1626 +
1383 1627 //如果有开启距离的功能,没有设置默认门店,要用最近的门店作为默认门店
1384   - if(dd.lat && !th.data.def_pick_store){
  1628 + if(dd.lat && !th.data.def_pick_store && th.data.bconfig.is_sort_storage){
1385 1629 th.setData({
1386 1630 def_pick_store:e.data.data.pageData[0],
1387 1631 sto_sele_name: e.data.data.pageData[0].pickup_name,
1388 1632 sto_sele_id: e.data.data.pageData[0].pickup_id,
1389 1633 sto_sele_distr: e.data.data.pageData[0].distr_type
1390 1634 });
  1635 + th.data.fir_def_store=e.data.data.pageData[0];
1391 1636 }
1392 1637  
1393 1638 //-- 如果有默认选择门店的时候,要把默认门店放在第一位 --
... ... @@ -1401,152 +1646,260 @@ Page({
1401 1646 e.data.data.pageData.splice(0, 0, th.data.def_pick_store); //添加
1402 1647 }
1403 1648  
1404   - /*----
1405   - //--获取线下库存--
1406   - if(th.data.sales_rules){
1407   -
1408   - }---*/
1409 1649  
1410   -
1411   - //单总量超出5个的时候
1412   - if (e.data.data.total > 5) {
1413   - i.get("/api/weshop/storagecategory/page", {
1414   - data: {
1415   - store_id: o.stoid,
1416   - is_show: 1,
1417   - pageSize: 300
1418   - },
1419   - success: function(ee) {
1420   - if (ee.data.code == 0) {
1421   - if (ee.data.data && ee.data.data.pageData && ee.data.data.pageData.length > 0) {
1422   - var def_arr = new Array();
1423   - var ishas = 0;
1424   - //-- 开始就看5个门店 --
1425   - for (var k = 0; k < 5; k++) {
1426   - if (k == e.data.data.pageData.length) break;
1427   - def_arr.push(e.data.data.pageData[k]);
1428   - }
1429   -
1430   - th.setData({
1431   - def_pickpu_list: def_arr,
1432   - pickpu_list: ee.data.data.pageData
1433   - });
1434   - var sto_cate = ee.data.data.pageData;
1435   - var sto_arr = e.data.data.pageData;
1436   - var newarr = new Array();
1437   - var qita = new Array();
1438   -
1439   - //----要进行门店分组--------
1440   - for (var i = 0; i < sto_arr.length; i++) {
1441   - //找一下这个门店有没有在分类数组内
1442   - var find2 = 0,
1443   - find2name = "";
1444   - for (var m = 0; m < sto_cate.length; m++) {
1445   - if (sto_arr[i].category_id == sto_cate[m].cat_id) {
1446   - find2 = sto_cate[m].cat_id;
1447   - find2name = sto_cate[m].cat_name;
1448   - break;
1449   - }
1450   - }
1451   -
1452   - if (newarr.length > 0) {
1453   - var find = 0;
1454   - //如果有找到,那门店就在这个分组内,否则,分类就要排在其他
1455   - if (find2 != 0) {
1456   - for (var ii = 0; ii < newarr.length; ii++) {
1457   - if (sto_arr[i].category_id == newarr[ii].cat_id) {
1458   - newarr[ii].s_arr.push(sto_arr[i]);
1459   - find = 1;
1460   - break;
1461   - }
1462   - }
1463   - if (find == 0) {
1464   - var arr0 = new Array();
1465   - arr0.push(sto_arr[i]);
1466   - var item = {
1467   - cat_id: find2,
1468   - name: find2name,
1469   - s_arr: arr0
1470   - };
1471   - newarr.push(item);
1472   - }
1473   - } else {
1474   - qita.push(sto_arr[i]);
1475   - }
1476   - } else {
1477   - //如果有找到,那门店就在这个分组内,否则,分类就要排在其他
1478   - if (find2 != 0) {
1479   - var arr0 = new Array();
1480   - arr0.push(sto_arr[i]);
1481   - var item = {
1482   - cat_id: find2,
1483   - name: find2name,
1484   - s_arr: arr0
1485   - };
1486   - newarr.push(item);
1487   - } else {
1488   - qita.push(sto_arr[i]);
1489   - }
1490   - }
1491   - }
1492   -
1493   - //----安排其他的分类-----
1494   - if (qita.length > 0) {
1495   - var item = {
1496   - cat_id: -1,
1497   - name: "其他",
1498   - s_arr: qita
1499   - };
1500   - newarr.push(item);
1501   - }
1502   - th.setData({
1503   - is_show_sto_cat: 1,
1504   - all_sto: newarr
1505   - });
1506   -
1507   - } else {
1508   - th.setData({
1509   - is_show_sto_cat: -1,
1510   - only_pk: e.data.data.pageData
1511   - });
1512   - //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------
1513   - if (!th.data.def_pick_store) {
1514   - th.setData({def_pick_store:e.data.data.pageData[0]})
1515   - }
1516   - }
1517   - } else {
1518   - th.setData({
1519   - is_show_sto_cat: -1,
1520   - only_pk: e.data.data.pageData
1521   - });
1522   - //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------
1523   - if (!th.data.def_pick_store) {
1524   - th.setData({def_pick_store:e.data.data.pageData[0]})
1525   - }
1526   -
1527   - }
1528   - }
1529   - });
1530   - } else {
1531   - th.setData({
1532   - is_show_sto_cat: 0,
1533   - only_pk: e.data.data.pageData
1534   - });
1535   - //-----如果没有默认门店,要取第一个门店作为默认店------
1536   - if (!th.data.def_pick_store) {
1537   - th.setData({
1538   - def_pick_store:e.data.data.pageData[0],
1539   - sto_sele_name: e.data.data.pageData[0].pickup_name,
1540   - sto_sele_id: e.data.data.pageData[0].pickup_id,
1541   - sto_sele_distr: e.data.data.pageData[0].distr_type
1542   - })
1543   - }
1544   - }
1545   - }
  1650 + th.setData({all_pick_list:e.data.data.pageData});
  1651 +
  1652 + //--获取线下库存,而且不是新的门店规则,同时不能是活动--
  1653 + if(th.data.sales_rules==2 && !th.data.is_newsales_rules && th.data.prom_type!=1 && th.data.prom_type!=6){
  1654 + setTimeout(function(){
  1655 + th.deal_pickup_dline(e);
  1656 + },800)
  1657 + }else{
  1658 + setTimeout(function(){
  1659 + th.deal_pickup(e); //--普通门店排版--
  1660 + },800)
  1661 + }
  1662 + }
1546 1663 })
1547 1664 }, 200)
1548 1665  
1549   -
  1666 + },
  1667 +
  1668 + //------------处理门店---------------
  1669 + deal_pickup(e){
  1670 + var th=this;
  1671 + //单总量超出5个的时候
  1672 + if (e.data.data.total > 5) {
  1673 + getApp().request.get("/api/weshop/storagecategory/page", {
  1674 + data: {
  1675 + store_id: o.stoid,
  1676 + is_show: 1,
  1677 + pageSize: 1000
  1678 + },
  1679 + success: function(ee) {
  1680 + if (ee.data.code == 0) {
  1681 + if (ee.data.data && ee.data.data.pageData && ee.data.data.pageData.length > 0) {
  1682 + var def_arr = new Array();
  1683 + var ishas = 0;
  1684 + //-- 开始就看5个门店 --
  1685 + for (var k = 0; k < 5; k++) {
  1686 + if (k == e.data.data.pageData.length) break;
  1687 + def_arr.push(e.data.data.pageData[k]);
  1688 + }
  1689 +
  1690 + th.setData({
  1691 + def_pickpu_list: def_arr,
  1692 + pickpu_list: ee.data.data.pageData
  1693 + });
  1694 + var sto_cate = ee.data.data.pageData;
  1695 + var sto_arr = e.data.data.pageData;
  1696 + var newarr = new Array();
  1697 + var qita = new Array();
  1698 +
  1699 + //----要进行门店分组--------
  1700 + for (var i = 0; i < sto_arr.length; i++) {
  1701 + //找一下这个门店有没有在分类数组内
  1702 + var find2 = 0,
  1703 + find2name = "";
  1704 + for (var m = 0; m < sto_cate.length; m++) {
  1705 + if (sto_arr[i].category_id == sto_cate[m].cat_id) {
  1706 + find2 = sto_cate[m].cat_id;
  1707 + find2name = sto_cate[m].cat_name;
  1708 + break;
  1709 + }
  1710 + }
  1711 +
  1712 + if (newarr.length > 0) {
  1713 + var find = 0;
  1714 + //如果有找到,那门店就在这个分组内,否则,分类就要排在其他
  1715 + if (find2 != 0) {
  1716 + for (var ii = 0; ii < newarr.length; ii++) {
  1717 + if (sto_arr[i].category_id == newarr[ii].cat_id) {
  1718 + newarr[ii].s_arr.push(sto_arr[i]);
  1719 + find = 1;
  1720 + break;
  1721 + }
  1722 + }
  1723 + if (find == 0) {
  1724 + var arr0 = new Array();
  1725 + arr0.push(sto_arr[i]);
  1726 + var item = {
  1727 + cat_id: find2,
  1728 + name: find2name,
  1729 + s_arr: arr0
  1730 + };
  1731 + newarr.push(item);
  1732 + }
  1733 + } else {
  1734 + qita.push(sto_arr[i]);
  1735 + }
  1736 + } else {
  1737 + //如果有找到,那门店就在这个分组内,否则,分类就要排在其他
  1738 + if (find2 != 0) {
  1739 + var arr0 = new Array();
  1740 + arr0.push(sto_arr[i]);
  1741 + var item = {
  1742 + cat_id: find2,
  1743 + name: find2name,
  1744 + s_arr: arr0
  1745 + };
  1746 + newarr.push(item);
  1747 + } else {
  1748 + qita.push(sto_arr[i]);
  1749 + }
  1750 + }
  1751 + }
  1752 +
  1753 + //----安排其他的分类-----
  1754 + if (qita.length > 0) {
  1755 + var item = {
  1756 + cat_id: -1,
  1757 + name: "其他",
  1758 + s_arr: qita
  1759 + };
  1760 + newarr.push(item);
  1761 + }
  1762 + th.setData({
  1763 + is_show_sto_cat: 1,
  1764 + all_sto: newarr
  1765 + });
  1766 +
  1767 + } else {
  1768 + th.setData({
  1769 + is_show_sto_cat: -1,
  1770 + only_pk: e.data.data.pageData
  1771 + });
  1772 + //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------
  1773 + if (!th.data.def_pick_store) {
  1774 + th.setData({def_pick_store:e.data.data.pageData[0]})
  1775 + }
  1776 + }
  1777 + } else {
  1778 + th.setData({
  1779 + is_show_sto_cat: -1,
  1780 + only_pk: e.data.data.pageData
  1781 + });
  1782 + //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------
  1783 + if (!th.data.def_pick_store) {
  1784 + th.setData({def_pick_store:e.data.data.pageData[0]})
  1785 + }
  1786 +
  1787 + }
  1788 + }
  1789 + });
  1790 + } else {
  1791 + th.setData({
  1792 + is_show_sto_cat: 0,
  1793 + only_pk: e.data.data.pageData
  1794 + });
  1795 + //-----如果没有默认门店,要取第一个门店作为默认店------
  1796 + if (!th.data.def_pick_store && th.data.bconfig.is_sort_storage) {
  1797 + th.setData({
  1798 + def_pick_store:e.data.data.pageData[0],
  1799 + sto_sele_name: e.data.data.pageData[0].pickup_name,
  1800 + sto_sele_id: e.data.data.pageData[0].pickup_id,
  1801 + sto_sele_distr: e.data.data.pageData[0].distr_type
  1802 + })
  1803 + }
  1804 + }
  1805 +
  1806 + },
  1807 + //------------处理线下门店库存--------
  1808 + deal_pickup_dline(e){
  1809 + var pkno=[],th=this;
  1810 + if(this.data.def_pick_store){
  1811 + pkno.push(this.data.def_pick_store.pickup_no);
  1812 + }
  1813 + for(var i in e.data.data.pageData){
  1814 + var item=e.data.data.pageData[i];
  1815 + if(pkno.indexOf(item.pickup_no)<0)
  1816 + pkno.push(item.pickup_no);
  1817 + }
  1818 + var pkno_str=pkno.join(",");
  1819 + var o_plist=e.data.data.pageData;
  1820 + var new_list=[];
  1821 + var is_find_def_store=0;
  1822 +
  1823 + var lock=[];
  1824 + //先读取门店的lock,采用链式写法,少用await
  1825 + getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  1826 + data:{store_id:os.stoid,wareId:th.data.sele_g.goods_id,pageSize:1000}
  1827 + }).then(res=>{
  1828 + if(res.data.code==0 && res.data.data.total>0){
  1829 + lock=res.data.data.pageData
  1830 + }
  1831 + //---通过接口获取门店的线下库存信息--
  1832 + return getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  1833 + data:{storageNos:pkno_str,wareIds:encodeURIComponent(th.data.sele_g.erpwareid),storeId:os.stoid}
  1834 + })
  1835 + }).then(res=>{
  1836 + if(res.data.code==0){
  1837 + if(res.data.data.pageData){
  1838 + var plist=res.data.data.pageData;
  1839 + var def_pick_store=th.data.def_pick_store;
  1840 + //以原来的数组为外循环,保证距离的顺序
  1841 + for(var kk in o_plist){
  1842 + for(var ii in plist){
  1843 + //线下的门店小心
  1844 + var n_item=plist[ii];
  1845 + if(n_item.StorageNo==o_plist[kk].pickup_no){
  1846 +
  1847 + //拿到锁库的数量
  1848 + var lock_num=th.find_lock_num(o_plist[kk].pickup_id,lock);
  1849 + //可出库数大于预出库库存的数量,可以判断为有库存
  1850 + if(n_item.CanOutQty>lock_num){
  1851 + o_plist[kk].CanOutQty=n_item.CanOutQty-lock_num;
  1852 + new_list.push(o_plist[kk]);
  1853 + //如果找到默认门店
  1854 + if(n_item.StorageNo==th.data.fir_def_store.pickup_no){
  1855 + th.data.fir_def_store.CanOutQty=n_item.CanOutQty-lock_num;
  1856 + if(def_pick_store.pickup_id==th.data.fir_def_store.pickup_id)
  1857 + th.setData({def_pick_store:th.data.fir_def_store})
  1858 + is_find_def_store=1;
  1859 + }
  1860 + }
  1861 + break;
  1862 + }
  1863 + }
  1864 + }
  1865 +
  1866 + //数据组装下
  1867 + var em={};em.data={};em.data.data={};
  1868 + em.data.data.total=new_list.length;
  1869 + em.data.data.pageData=new_list;
  1870 +
  1871 + if(th.data.fir_def_store && !is_find_def_store){
  1872 + th.data.fir_def_store.CanOutQty=0;
  1873 + //--当选择的门店是客户默认的门店的时候--
  1874 + if(th.data.fir_def_store.pickup_id==th.data.def_pick_store.pickup_id) {
  1875 + th.setData({def_pick_store:th.data.fir_def_store});
  1876 + em.data.data.pageData.unshift(th.data.def_pick_store);
  1877 + }else{
  1878 + em.data.data.pageData.splice(1,0,th.data.fir_def_store);
  1879 + }
  1880 + }
  1881 +
  1882 + //---把数组组装进去---
  1883 + th.deal_pickup(em);
  1884 + }else{
  1885 + th.setData({def_pick_store:null,all_sto:null,only_pk:null})
  1886 + }
  1887 + }else{
  1888 + th.setData({def_pick_store:null,all_sto:null,only_pk:null})
  1889 + }
  1890 + })
  1891 + },
  1892 +
  1893 + find_lock_num(pick_id,lock){
  1894 + var lock_num=0;
  1895 + if(!lock) return 0;
  1896 + if(lock.length<0) return 0;
  1897 + for(var i in lock){
  1898 + if(pick_id==lock[i].pickupId){
  1899 + lock_num+=lock[i].outQty;
  1900 + }
  1901 + }
  1902 + return lock_num;
1550 1903 },
1551 1904  
1552 1905 //----------取货门店被点击的效果------
... ... @@ -1707,6 +2060,7 @@ Page({
1707 2060 isshow: 1,
1708 2061 });
1709 2062 ee.get_sku(os.stoid, ee.data.data.sku, gid);
  2063 + ee.get_sto();
1710 2064 return false;
1711 2065 }
1712 2066 //----已经过期-----
... ... @@ -1727,6 +2081,7 @@ Page({
1727 2081 isshow: 1,
1728 2082 });
1729 2083 ee.get_sku(os.stoid, ee.data.data.sku, gid);
  2084 + ee.get_sto();
1730 2085 return false;
1731 2086 }
1732 2087  
... ... @@ -1744,6 +2099,8 @@ Page({
1744 2099 prom_start_time: prom_start_time,
1745 2100 isshow: 1,
1746 2101 });
  2102 +
  2103 + ee.get_sto();
1747 2104  
1748 2105  
1749 2106 var newTime = ut.gettimestamp();
... ... @@ -1798,6 +2155,7 @@ Page({
1798 2155 isshow: 1,
1799 2156 });
1800 2157 ee.get_sku(os.stoid, ee.data.data.sku, gid);
  2158 + ee.get_sto();
1801 2159 return false;
1802 2160 }
1803 2161 //----已经结束-----
... ... @@ -1817,6 +2175,7 @@ Page({
1817 2175 isshow: 1,
1818 2176 });
1819 2177 ee.get_sku(os.stoid, ee.data.data.sku, gid);
  2178 + ee.get_sto();
1820 2179 return false;
1821 2180 }
1822 2181  
... ... @@ -1827,6 +2186,7 @@ Page({
1827 2186 isshow: 1,
1828 2187 });
1829 2188 ee.get_sku(os.stoid, ee.data.data.sku, gid);
  2189 + ee.get_sto();
1830 2190 return false;
1831 2191 }
1832 2192  
... ... @@ -1891,7 +2251,7 @@ Page({
1891 2251 t.data.data.ct_rylist = JSON.parse(t.data.data.ct_rylist);
1892 2252 var max_num = 0;
1893 2253 t.data.data.ct_rylist.forEach(function(val, ind) {
1894   - if (val.rynum > max_num) max_num = val.rynum;
  2254 + if (parseInt(val.rynum) > max_num) max_num = parseInt(val.rynum);
1895 2255 })
1896 2256 t.data.data.max_ct_num = max_num;
1897 2257 }
... ... @@ -1908,6 +2268,8 @@ Page({
1908 2268 prom_start_time: prom_start_time,
1909 2269 isshow: 1,
1910 2270 });
  2271 +
  2272 + ee.get_sto();
1911 2273  
1912 2274 var newTime = now;
1913 2275 var endTime2 = t.data.data.end_time;
... ... @@ -2257,6 +2619,10 @@ Page({
2257 2619 title: '提示',
2258 2620 content: '超出商品限购'
2259 2621 });
  2622 +
  2623 + var num=th.data.prom_buy_limit-th.data.prom_buy_num;
  2624 + if(num<0) num=0;
  2625 + th.setData({goodsInputNum:num})
2260 2626 return false;
2261 2627 }
2262 2628 }
... ... @@ -2267,6 +2633,10 @@ Page({
2267 2633 title: '提示',
2268 2634 content: '超出商品活动限购'
2269 2635 });
  2636 +
  2637 + var num=th.data.prom_buy_limit-th.data.prom_buy_num;
  2638 + if(num<0) num=0;
  2639 + th.setData({goodsInputNum:num})
2270 2640 return false;
2271 2641 }
2272 2642 }
... ... @@ -2286,12 +2656,19 @@ Page({
2286 2656 title: '提示',
2287 2657 content: '超出商品活动库存'
2288 2658 });
  2659 +
  2660 + th.setData({goodsInputNum:redis_num})
  2661 +
2289 2662 return false;
2290 2663 }
2291 2664 }
2292 2665  
2293 2666 if (th.data.goodsInputNum <= 0) return s.my_warnning("商品数量不能为0", 0, th);
2294   - if (th.data.goodsInputNum > o.store_count) return s.my_warnning("超出商品库存", 0, th);
  2667 + if (th.data.goodsInputNum > o.store_count) {
  2668 + th.setData({goodsInputNum:o.store_count})
  2669 + return s.my_warnning("超出商品库存", 0, th);
  2670 + }
  2671 +
2295 2672 if (th.data.sto_sele_name == null || th.data.sto_sele_name == undefined)
2296 2673 this.setData({
2297 2674 sto_sele_name: ""
... ... @@ -3107,9 +3484,24 @@ Page({
3107 3484 // 选择门店
3108 3485 choice_store: function(ee) {
3109 3486 var th = this;
3110   - //var ind=ee.currentTarget.dataset.ind;
  3487 + var ind=ee.currentTarget.dataset.ind;
3111 3488 var bconfig = th.data.bconfig;
3112   -
  3489 +
  3490 + if(!th.data.only_pk && !th.data.def_pickpu_list){
  3491 + getApp().confirmBox("门店库存不足", null, 25000, !1);
  3492 + return false;
  3493 + }
  3494 +
  3495 + if(th.data.only_pk && !th.data.only_pk.length){
  3496 + getApp().confirmBox("门店库存不足", null, 25000, !1);
  3497 + return false;
  3498 + }
  3499 + if(th.data.def_pickpu_list && !th.data.def_pickpu_list.length){
  3500 + getApp().confirmBox("门店库存不足", null, 25000, !1);
  3501 + return false;
  3502 + }
  3503 +
  3504 +
3113 3505 if (bconfig.is_sort_storage) {
3114 3506 wx.getLocation({
3115 3507 type: 'wgs84',
... ... @@ -3147,23 +3539,64 @@ Page({
3147 3539 th.data.is_get_local_ok = 1;
3148 3540 th.get_sto();
3149 3541 }
3150   -
3151   - this.setData({
3152   - //open_ind_store: ind,
3153   - store: 1,
3154   - openSpecModal: !1,
3155   - openSpecModal_pt: !1
3156   - })
  3542 +
  3543 + if(ind!=undefined && ind!=null ){
  3544 + this.setData({
  3545 + open_ind_store: ind,
  3546 + store: 1,
  3547 + openSpecModal: !1,
  3548 + openSpecModal_pt: !1
  3549 + })
  3550 + }else{
  3551 + this.setData({
  3552 + store: 1,
  3553 + openSpecModal: !1,
  3554 + openSpecModal_pt: !1
  3555 + })
  3556 + }
3157 3557 },
3158 3558 //关闭选择门店
3159 3559 close_popup: function(e) {
3160   -
  3560 + var th=this;
3161 3561 this.setData({
3162 3562 store: 0,
3163 3563 choice_sort_store: 0,
3164   - sort_store: 0
  3564 + sort_store: 0,
  3565 + fir_pick_index:0,
  3566 + sec_pick_index:0
3165 3567 })
  3568 +
  3569 + var openindstore=this.data.open_ind_store;
  3570 + if (openindstore == 1) {
  3571 + th.setData({
  3572 + openSpecModal: !0,
  3573 + openSpecModal_ind: openindstore,
  3574 + });
  3575 + } else if (openindstore == 2) {
  3576 + th.setData({
  3577 + openSpecModal: !0,
  3578 + openSpecModal_ind: openindstore,
  3579 + });
  3580 + }
  3581 + else if (openindstore == 4) { //4就是拼团
  3582 + th.setData({
  3583 + openSpecModal_pt: 1, //打开拼团购买界面
  3584 + store: 0, //关闭门店
  3585 + choice_sort_store: 0, //关闭门店2级
  3586 + sort_store: 0, //关闭门店2级
  3587 + });
  3588 + }
  3589 + else {
  3590 + th.setData({
  3591 + store: 0,
  3592 + choice_sort_store: 0,
  3593 + sort_store: 0
  3594 + })
  3595 + }
  3596 +
  3597 +
3166 3598 },
  3599 +
3167 3600 //选择更多门店
3168 3601 more_store: function() {
3169 3602 this.setData({
... ... @@ -3193,16 +3626,61 @@ Page({
3193 3626 sec_pick_index: 0
3194 3627 });
3195 3628 },
3196   -
3197   -
3198   -
  3629 +
3199 3630 choose_for_store_fir: function(e) {
3200 3631 var index_c = e.currentTarget.dataset.ind;
3201   -
3202   - this.setData({
3203   - fir_pick_index: index_c
  3632 + var th=this;
  3633 + th.setData({
  3634 + fir_pick_index: index_c
3204 3635 })
  3636 +
3205 3637 },
  3638 +
  3639 + //如果开启线下库存,已经急速库存才会使用
  3640 + async check_the_pick(item,func){
  3641 + var th=this;
  3642 + var goodsinfo=th.data.sele_g;
  3643 + var erpwareid=goodsinfo.erpwareid;
  3644 + var plist=null;
  3645 + var lock=0;
  3646 +
  3647 + //---如果是活动的时候---
  3648 + if(th.data.prom_type==1 || th.data.prom_type==6){
  3649 + func(); return false;
  3650 + }
  3651 +
  3652 + if(this.data.sales_rules!=2 && this.data.is_newsales_rules!=1){
  3653 + func();
  3654 + }else{
  3655 +
  3656 + //先读取门店的lock
  3657 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  3658 + data:{store_id:os.stoid,wareId:goodsinfo.goods_id,storageId:item.pickup_id,pageSize:1000}
  3659 + }).then(res=>{
  3660 + if(res.data.code==0 && res.data.data.total>0){
  3661 + for(var i in res.data.data.pageData )
  3662 + lock+=res.data.data.pageData[i].outQty;
  3663 + }
  3664 + })
  3665 + //读取线下的门店库存
  3666 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  3667 + data:{storageNos:item.pickup_no,wareIds:encodeURIComponent(erpwareid),storeId:os.stoid}
  3668 + }).then(res=>{
  3669 + if(res.data.code==0 && res.data.data.total>0){
  3670 + plist=res.data.data.pageData[0];
  3671 + }
  3672 + })
  3673 +
  3674 + if(plist && plist.CanOutQty-lock>0){
  3675 + item.CanOutQty=plist.CanOutQty-lock;
  3676 + func();
  3677 + return false;
  3678 + }
  3679 + getApp().my_warnning(item.pickup_name+"库存不足!", 0, th);
  3680 +
  3681 + }
  3682 + },
  3683 +
3206 3684  
3207 3685 //确定def_pick为选择的门店
3208 3686 sure_pick: function(e) {
... ... @@ -3222,142 +3700,142 @@ Page({
3222 3700 var index = th.data.sec_pick_index;
3223 3701 item = th.data.sec_sto.s_arr[index];
3224 3702 }
3225   - th.setData({
3226   - def_pick_store: item,
3227   - sto_sele_name: item.pickup_name,
3228   - sto_sele_id: item.pickup_id,
3229   - sto_sele_distr: item.distr_type,
3230   - store: 0,
3231   - choice_sort_store: 0,
3232   - fir_pick_index: 0
3233   - });
3234   -
3235   - if (openindstore == 1) {
3236   - th.setData({
3237   - openSpecModal: !0,
3238   - openSpecModal_ind: openindstore,
3239   - });
3240   - } else if (openindstore == 2) {
3241   - th.setData({
3242   - openSpecModal: !0,
3243   - openSpecModal_ind: openindstore,
3244   - });
3245   - }
3246   - else if (openindstore == 4) { //4就是拼团
3247   - th.setData({
3248   - openSpecModal_pt: 1, //打开拼团购买界面
3249   - store: 0, //关闭门店
3250   - choice_sort_store: 0, //关闭门店2级
3251   - sort_store: 0, //关闭门店2级
3252   - });
3253   - }
3254   -
3255   - else {
3256   - th.setData({
3257   - store: 0,
3258   - choice_sort_store: 0,
3259   - sort_store: 0
3260   - })
3261   - }
3262   -
  3703 +
  3704 + //--回调函数的用法--
  3705 + th.check_the_pick(item,function(){
  3706 + th.setData({
  3707 + def_pick_store: item,
  3708 + sto_sele_name: item.pickup_name,
  3709 + sto_sele_id: item.pickup_id,
  3710 + sto_sele_distr: item.distr_type,
  3711 + store: 0,
  3712 + choice_sort_store: 0,
  3713 + fir_pick_index: 0
  3714 + });
  3715 +
  3716 + if (openindstore == 1) {
  3717 + th.setData({
  3718 + openSpecModal: !0,
  3719 + openSpecModal_ind: openindstore,
  3720 + });
  3721 + } else if (openindstore == 2) {
  3722 + th.setData({
  3723 + openSpecModal: !0,
  3724 + openSpecModal_ind: openindstore,
  3725 + });
  3726 + }
  3727 + else if (openindstore == 4) { //4就是拼团
  3728 + th.setData({
  3729 + openSpecModal_pt: 1, //打开拼团购买界面
  3730 + store: 0, //关闭门店
  3731 + choice_sort_store: 0, //关闭门店2级
  3732 + sort_store: 0, //关闭门店2级
  3733 + });
  3734 + }
  3735 + else {
  3736 + th.setData({
  3737 + store: 0,
  3738 + choice_sort_store: 0,
  3739 + sort_store: 0
  3740 + })
  3741 + }
  3742 + })
3263 3743 },
3264 3744 //---点击二级之后的选择---
3265 3745 choose_for_store: function(e) {
3266 3746 var index_c = e.currentTarget.dataset.ind;
3267   -
3268   - this.setData({
3269   - sec_pick_index: index_c,
3270   - fir_pick_index: index_c
3271   - })
  3747 + var th=this;
  3748 + th.setData({
  3749 + sec_pick_index: index_c,
  3750 + fir_pick_index: index_c
  3751 + })
  3752 +
3272 3753 },
3273 3754 //把选择的门店设置成默认的门店def_pick
3274 3755 set_def_pick: function(e) {
3275 3756 var th = this;
3276 3757 var item = null;
3277   -
3278 3758 if (th.data.choice_sort_store == 0) {
3279   -
3280 3759 var index = th.data.fir_pick_index;
3281   -
3282 3760 if (th.data.is_show_sto_cat == 1) {
3283 3761 item = th.data.def_pickpu_list[index];
3284 3762 } else {
3285 3763 item = th.data.only_pk[index]; //当没有门店分类的时候
3286   -
3287 3764 }
3288 3765 } else {
3289 3766 var index = th.data.sec_pick_index;
3290 3767 item = th.data.sec_sto.s_arr[index];
3291 3768 }
3292   -
3293   - var store_id = o.stoid;
3294   - var user_id = getApp().globalData.user_id;
3295   - var def_pickup_id = item.pickup_id;
3296   -
3297   - getApp().request.put('/api/weshop/users/update', {
3298   - data: {
3299   - user_id,
3300   - def_pickup_id
3301   - },
3302   - success: function(res) {
3303   - if (res.data.code == 0) {
3304   - if (th.data.choice_sort_store == 0) th.setData({
3305   - fir_pick_index: 0
3306   - });
3307   - getApp().globalData.pk_store = item;
3308   - } else {
3309   - //s.showWarning("设置默认门店地址失败", null, 500, !1);
3310   - getApp().my_warnning("设置默认门店地址失败",0,th)
3311   - }
3312   -
3313   - }
3314   - });
3315   -
3316   - th.setData({
3317   - def_pick_store: item,
3318   - sto_sele_name: item.pickup_name,
3319   - sto_sele_id: item.pickup_id,
3320   - sto_sele_distr: item.distr_type,
3321   - store: 0,
3322   - choice_sort_store: 0
3323   - });
3324   -
3325   -
3326   - var openindstore = th.data.open_ind_store;
3327   - if (openindstore == 1) {
3328   - th.setData({
3329   - openSpecModal: !0,
3330   - openSpecModal_ind: openindstore,
3331   - store: 0,
3332   - choice_sort_store: 0,
3333   - sort_store: 0,
3334   - });
3335   - } else if (openindstore == 2) {
3336   - th.setData({
3337   - openSpecModal: !0,
3338   - openSpecModal_ind: openindstore,
3339   - store: 0,
3340   - choice_sort_store: 0,
3341   - sort_store: 0,
3342   - });
3343   - }
3344   - else if (openindstore == 4) { //4就是拼团
3345   - th.setData({
3346   - openSpecModal_pt: 1, //打开拼团购买界面
3347   - store: 0, //关闭门店
3348   - choice_sort_store: 0, //关闭门店2级
3349   - sort_store: 0, //关闭门店2级
3350   - });
3351   - }
3352   -
3353   - else {
3354   - th.setData({
3355   - store: 0,
3356   - choice_sort_store: 0,
3357   - sort_store: 0,
3358   - })
3359   - }
3360   -
  3769 +
  3770 + //先设置之前,要判断是不是有库存
  3771 + th.check_the_pick(item,function(){
  3772 + var store_id = o.stoid;
  3773 + var user_id = getApp().globalData.user_id;
  3774 + var def_pickup_id = item.pickup_id;
  3775 +
  3776 + getApp().request.put('/api/weshop/users/update', {
  3777 + data: {
  3778 + user_id,
  3779 + def_pickup_id
  3780 + },
  3781 + success: function(res) {
  3782 + if (res.data.code == 0) {
  3783 + if (th.data.choice_sort_store == 0) th.setData({
  3784 + fir_pick_index: 0
  3785 + });
  3786 + getApp().globalData.pk_store = item;
  3787 + } else {
  3788 + //s.showWarning("设置默认门店地址失败", null, 500, !1);
  3789 + getApp().my_warnning("设置默认门店地址失败",0,th)
  3790 + }
  3791 +
  3792 + }
  3793 + });
  3794 +
  3795 + th.setData({
  3796 + def_pick_store: item,
  3797 + sto_sele_name: item.pickup_name,
  3798 + sto_sele_id: item.pickup_id,
  3799 + sto_sele_distr: item.distr_type,
  3800 + store: 0,
  3801 + choice_sort_store: 0
  3802 + });
  3803 +
  3804 + var openindstore = th.data.open_ind_store;
  3805 + if (openindstore == 1) {
  3806 + th.setData({
  3807 + openSpecModal: !0,
  3808 + openSpecModal_ind: openindstore,
  3809 + store: 0,
  3810 + choice_sort_store: 0,
  3811 + sort_store: 0,
  3812 + });
  3813 + } else if (openindstore == 2) {
  3814 + th.setData({
  3815 + openSpecModal: !0,
  3816 + openSpecModal_ind: openindstore,
  3817 + store: 0,
  3818 + choice_sort_store: 0,
  3819 + sort_store: 0,
  3820 + });
  3821 + }
  3822 + else if (openindstore == 4) { //4就是拼团
  3823 + th.setData({
  3824 + openSpecModal_pt: 1, //打开拼团购买界面
  3825 + store: 0, //关闭门店
  3826 + choice_sort_store: 0, //关闭门店2级
  3827 + sort_store: 0, //关闭门店2级
  3828 + });
  3829 + }
  3830 +
  3831 + else {
  3832 + th.setData({
  3833 + store: 0,
  3834 + choice_sort_store: 0,
  3835 + sort_store: 0,
  3836 + })
  3837 + }
  3838 + })
3361 3839 },
3362 3840  
3363 3841 wait_for_store_config: function() {
... ... @@ -3453,7 +3931,19 @@ Page({
3453 3931 },
3454 3932 go_card_info:function(){
3455 3933 getApp().goto("/pages/user/cardinfo/cardinfo");
  3934 + },
  3935 + //-- 根据ID拿出门店 --
  3936 + get_pick_from_list(pid){
  3937 + var all_pick_list=this.data.all_pick_list;
  3938 + for(var i in all_pick_list){
  3939 + var item=all_pick_list[i];
  3940 + if(item.pickup_id==pid){
  3941 + return item;
  3942 + }
  3943 + }
3456 3944 }
  3945 +
  3946 +
3457 3947  
3458 3948  
3459 3949 });
... ...
pages/goods/goodsInfo/goodsInfo.wxml
... ... @@ -94,7 +94,7 @@
94 94 <view class="word-line fs20 xc-qtunit-price">零售价¥{{data.market_price}}</view>
95 95 </view>
96 96 <view class="abs white xc-nanber">
97   - <text class="fs22">已拼{{prom_act.buy_num}}</text>
  97 + <text class="fs22">已拼{{prom_act.buy_num}}</text>
98 98 <view class="flex" style='margin-top:-34rpx'>
99 99 <view class="xc-people-img">
100 100 <image class="imgs" src="{{prom_st==1? iurl+'/miniapp/images/r_logo_red.png':iurl+'/miniapp/images/r_logo.png'}}"></image>
... ... @@ -404,7 +404,15 @@
404 404 距离:{{def_pick_store.distance>1000?filters.toFix(def_pick_store.distance/1000,2)+"km":filters.toFix(def_pick_store.distance,0)+"m"}}
405 405  
406 406 </view>
407   - </view>
  407 + </view>
  408 + <view class="no_store" wx:if="{{only_pk && !only_pk.length}}">(库存不足)</view>
  409 + <block wx:else>
  410 + <view class="no_store" wx:if="{{def_pickpu_list && !def_pickpu_list.length}}">(库存不足)</view>
  411 + <block wx:else>
  412 + <view class="no_store" wx:if="{{def_pick_store && !def_pick_store.CanOutQty && sales_rules==2 && prom_type==0}}">(库存不足)</view>
  413 + </block>
  414 + </block>
  415 +
408 416 <view class="fs24 xc-ash-9f">地址:{{def_pick_store.fulladdress}}</view>
409 417 </view>
410 418 </view>
... ... @@ -733,10 +741,16 @@
733 741  
734 742 <!-------------------底部按钮-------------------->
735 743 <view class="join-cart">
736   - <view bindtap="contactService" class="custom-service cart-ico new_split">
  744 + <!-- bindtap="contactService" -->
  745 + <button wx:if="{{sys_switch.weapp_customertype}}" class="custom-service cart-ico new_split" open-type="contact" session-from="wechat|{{userInfo.user_id}}|{{userInfo.nickname}}|{{userInfo.head_pic}}">
737 746 <image class="cs-img" src="{{iurl}}/miniapp/images/custom-service.png"></image>
738 747 <view>客服</view>
739   - </view>
  748 + </button>
  749 + <view wx:else class="custom-service cart-ico new_split" bindtap="contactService">
  750 + <image class="cs-img" src="{{iurl}}/miniapp/images/custom-service.png"></image>
  751 + <view>客服</view>
  752 + </view>
  753 +
740 754 <view bindtap="collectGoods" class="custom-service cart-ico new_split">
741 755 <image hidden="{{is_collect}}" class="cs-img" src="{{iurl}}/miniapp/images/heart.png"></image>
742 756 <image hidden="{{!is_collect}}" class="cs-img" src="{{iurl}}/miniapp/images/heart-h.png"></image>
... ... @@ -751,18 +765,17 @@
751 765 </view>
752 766 <view bindtap="openSpecModel" class="buy-btn cart-btn cart-btn-lg" wx:if="{{data.goods.is_virtual}}">立即购买</view>
753 767  
754   - <!---- 普通商品购买 ----->
  768 + <!-- 普通商品购买 -->
755 769 <block wx:if="{{prom_type==0 || prom_type==2 || prom_type==3 || prom_type==4}}">
756 770  
757   - <block wx:if="{{sele_g.store_count>0}}">
  771 + <!-- 线上销售的时候,要判断库存量, 线下库存的时候不用判断 -->
  772 + <block wx:if="{{(sele_g.store_count>0 && sales_rules==1) || sales_rules==2 }}">
758 773 <view bindtap="openSpecModel" data-ind="1" class="join-btn cart-btn">加入购物车</view>
759 774 <view bindtap="openSpecModel" data-ind="2" class="buy-btn cart-btn">立即购买</view>
760 775 </block>
761   - <block wx:else>
762   - <view class="is_stock cart-btn is_stock xc-ash-b " style="width:55.5%">
763   - 库存不足
764   - </view>
765   - </block>
  776 + <block wx:else>
  777 + <view class="is_stock cart-btn is_stock xc-ash-b " style="width:55.5%">库存不足</view>
  778 + </block>
766 779  
767 780 </block>
768 781  
... ... @@ -862,7 +875,13 @@
862 875 <block wx:if="{{prom_type==0}}">
863 876 <view class="flex">
864 877 <view class="spec-goods-stock">已售:{{sele_g.sales_sum}}</view>
865   - <view class="spec-goods-stock">可售:{{sele_g.store_count}}</view>
  878 + <block wx:if="{{sales_rules==2}}">
  879 + <view class="spec-goods-stock" wx:if="{{def_pick_store && def_pick_store.CanOutQty}}">可售:{{def_pick_store.CanOutQty}}</view>
  880 + <view class="spec-goods-stock" wx:else>可售:0</view>
  881 + </block>
  882 + <block wx:else>
  883 + <view class="spec-goods-stock">可售:{{sele_g.store_count}}</view>
  884 + </block>
866 885  
867 886 </view>
868 887 </block>
... ... @@ -872,7 +891,7 @@
872 891 <view class="spec-goods-stock" wx:else >已售:{{prom_act.buy_num}}</view>
873 892 <view class="spec-goods-stock">可售:{{prom_act.goods_num-prom_act.buy_num}}</view>
874 893  
875   -
  894 +
876 895 </view>
877 896 </block>
878 897 </view>
... ... @@ -889,23 +908,31 @@
889 908 </view>
890 909  
891 910 <!-- 没有门店的时候 -->
892   - <view class="flex" bindtap="choice_store"wx:else>
893   - <image class="stores-img" src="{{iurl}}/miniapp/images/stores.png"></image>
894   - <view class="fs28 xc-ash-9f">选择门店</view>
  911 + <view class="flex" bindtap="choice_store" wx:else>
  912 + <image class="stores-img" src="{{iurl}}/miniapp/images/stores.png"></image>
  913 + <view class="fs28 xc-ash-9f">选择门店</view>
895 914 </view>
896 915  
897 916 <view class="red-co fs28" bindtap="choice_store" >
898 917 更多门店
899 918 <text class="right-arrow"></text>
900 919 </view>
901   - </view>
902   - <view class="fs24 xc-ash-9f xc-distance-top "wx:if="{{def_pick_store}}">地址:{{def_pick_store.fulladdress}}</view>
  920 + </view>
  921 + <view wx:if="{{only_pk && !only_pk.length}}">(库存不足)</view>
  922 + <block wx:else>
  923 + <view wx:if="{{def_pickpu_list && !def_pickpu_list.length}}">(库存不足)</view>
  924 + <block wx:else>
  925 + <view wx:if="{{def_pick_store && !def_pick_store.CanOutQty && sales_rules==2 && prom_type==0}}">(库存不足)</view>
  926 + </block>
  927 + </block>
  928 +
  929 + <view class="fs24 xc-ash-9f xc-distance-top "wx:if="{{def_pick_store}}">地址:{{def_pick_store.fulladdress}}</view>
903 930 </view>
904 931  
905 932 <!----商品的属性项目---->
906 933 <view class="xc-goods-attribute">
907 934 <view hidden="{{ismend==1}}" class="spec-name">商品属性</view>
908   - <view hidden="{{ismend==1}}" class="flex">
  935 + <view hidden="{{ismend==1}}" style="max-height: 120rpx;overflow-y: auto;">
909 936 <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">
910 937 {{item.gg}}
911 938 </view>
... ... @@ -922,12 +949,57 @@
922 949 </view>
923 950 </view>
924 951 </view>
925   - <view class="spec-cart-btns">
926   -
927   -
928   - <view wx:if="{{openSpecModal_ind==1}}" bindtap="addCart"data-openSpecModal_ind="{{openSpecModal_ind}}" class="spec-cart-btn yellow fs32" data-action="add">加入购物车</view>
929   - <view wx:if="{{openSpecModal_ind==2}}" bindtap="addCart"data-openSpecModal_ind="{{openSpecModal_ind}}" class="spec-cart-btn spec-buy" data-action="buy">立即购买</view>
930   -
  952 + <view class="spec-cart-btns">
  953 + <!-- 根本就找不到门店 -->
  954 + <block wx:if="{{!only_pk && !def_pickpu_list}}">
  955 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足</view>
  956 + </block>
  957 + <block wx:else>
  958 +
  959 +
  960 + <block wx:if="{{only_pk.length && !only_pk.length}}">
  961 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足</view>
  962 + </block>
  963 + <block wx:else>
  964 + <block wx:if="{{def_pickpu_list && !def_pickpu_list.length}}">
  965 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>
  966 + </block>
  967 + <block wx:else>
  968 + <block wx:if="{{!def_pick_store}}">
  969 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">请先选择门店</view>
  970 + </block>
  971 + <block wx:else>
  972 + <!-- 如果是线下库存购买的时候,且是普通商品购买的时候 -->
  973 + <block wx:if="{{sales_rules==2 && prom_type==0}}">
  974 + <block wx:if="{{!def_pick_store.CanOutQty}}">
  975 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>
  976 + </block>
  977 + <block wx:else>
  978 + <view wx:if="{{openSpecModal_ind==1}}" bindtap="addCart"data-openSpecModal_ind="{{openSpecModal_ind}}"
  979 + class="spec-cart-btn yellow fs32" data-action="add">加入购物车</view>
  980 + <view wx:if="{{openSpecModal_ind==2}}" bindtap="addCart"data-openSpecModal_ind="{{openSpecModal_ind}}"
  981 + class="spec-cart-btn spec-buy" data-action="buy">立即购买</view>
  982 + </block>
  983 + </block>
  984 + <!-- 线上销售 -->
  985 + <block wx:else>
  986 + <block wx:if="{{sele_g.store_count<=0}}">
  987 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>
  988 + </block>
  989 + <block wx:else>
  990 + <view wx:if="{{openSpecModal_ind==1}}" bindtap="addCart"data-openSpecModal_ind="{{openSpecModal_ind}}"
  991 + class="spec-cart-btn yellow fs32" data-action="add">加入购物车</view>
  992 + <view wx:if="{{openSpecModal_ind==2}}" bindtap="addCart"data-openSpecModal_ind="{{openSpecModal_ind}}"
  993 + class="spec-cart-btn spec-buy" data-action="buy">立即购买</view>
  994 + </block>
  995 + </block>
  996 + </block>
  997 + </block>
  998 + </block>
  999 +
  1000 +
  1001 + </block>
  1002 +
931 1003 </view>
932 1004  
933 1005 <view class="clear"></view>
... ... @@ -1062,7 +1134,7 @@
1062 1134 <view>购买数量</view>
1063 1135 <view class="count">
1064 1136 <view bindtap="subCartNum" class="sub">-</view>
1065   - <input bindblur="inputCartNum xc-val-fream" type="number" value="{{goodsInputNum}}"></input>
  1137 + <input bindblur="inputCartNum" class="xc-val-fream" type="number" value="{{goodsInputNum}}"></input>
1066 1138 <view bindtap="addCartNum" class="add">+</view>
1067 1139 </view>
1068 1140 </view>
... ... @@ -1281,7 +1353,8 @@
1281 1353 <view class="fs28 xc-black3 address_name">{{item.pickup_name}}</view>
1282 1354 </view>
1283 1355 <view>
1284   - <view class="distance fs24 address-val"wx:if="{{item.distance!=null}}"> 距离:{{item.distance>1000?filters.toFix(item.distance/1000,2)+"km":filters.toFix(item.distance,0)+"m"}}</view>
  1356 + <view class="distance fs24 address-val"wx:if="{{item.distance!=null}}">
  1357 + 距离:{{item.distance>1000?filters.toFix(item.distance/1000,2)+"km":filters.toFix(item.distance,0)+"m"}}</view>
1285 1358 </view>
1286 1359 </view>
1287 1360 <view class="fs24 xc-ash-9f">地址:{{item.fulladdress}}</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 {
... ... @@ -2253,7 +2254,7 @@ right:17rpx; top:55rpx;
2253 2254 height: 90rpx;
2254 2255 }
2255 2256 .sn_height{
2256   - height: 170rpx;
  2257 + min-height: 170rpx; height: auto;padding: 10rpx 0;
2257 2258 }
2258 2259 .xc-address_frame .address_frame{
2259 2260 width: 92%;
... ... @@ -2560,4 +2561,10 @@ border-radius: 55rpx;
2560 2561 .carde_frame{
2561 2562 height: 50rpx;
2562 2563 line-height: 18rpx
2563   -}
2564 2564 \ No newline at end of file
  2565 +}
  2566 +
  2567 +button.custom-service { line-height: normal; border: 0;}
  2568 +button.custom-service::after{
  2569 + border: 0;
  2570 +}
  2571 +.no_store{color:#d60021; font-size: 26rpx;}
2565 2572 \ No newline at end of file
... ...
pages/goods/goodsList/goodsList.js
... ... @@ -97,10 +97,15 @@ Page({
97 97 },
98 98 requestGoodsList: function(t) {
99 99 var e = this;
100   - this.data.requestUrl = t,
101   - t += "&orderField=" + e.data.tabname;
102   - t += "&orderType=" + e.data.adname;
103   - t +="&page=" + e.data.currentPage,
  100 + this.data.requestUrl = t;
  101 +
  102 + //不是商品分组的,不是默认排序的
  103 + if(t.indexOf("group_id")==-1 || e.data.tabname!="goods_id" ){
  104 + t += "&orderField=" + e.data.tabname;
  105 + t += "&orderType=" + e.data.adname;
  106 + }
  107 +
  108 + t +="&page=" + e.data.currentPage;
104 109 a.request(t,
105 110 function(t) {
106 111 e.setData({is_go:1});
... ...
pages/index/index/index.js
... ... @@ -149,7 +149,8 @@ Page({
149 149 data: {
150 150 store_id: os.stoid,
151 151 pageSize: 5,
152   - is_show: 1
  152 + is_show: 1,
  153 + level:1
153 154 }
154 155 }).then(res => {
155 156 if (res.data.data) {
... ... @@ -181,7 +182,7 @@ Page({
181 182 //读取全局是否有弄自定义模板
182 183 await api.get_template_fir(o.stoid).then(res => {
183 184 var data = res.data.data;
184   - if (data.length > 0) {
  185 + if (data && data.length > 0) {
185 186 var temp_data = data[0];
186 187 var t_arr = JSON.parse(temp_data.json_str);
187 188 th.setData({
... ...
pages/user/address_list/address_list.js
... ... @@ -154,5 +154,59 @@ Page({
154 154  
155 155  
156 156  
157   - }
  157 + } ,
  158 +
  159 + //获取微信地址
  160 + get_wx:function(){
  161 + var th=this;
  162 + wx.getSetting({
  163 + success(res) {
  164 + console.log("vres.authSetting['scope.address']:", res.authSetting['scope.address'])
  165 + if (res.authSetting['scope.address']) {
  166 + wx.chooseAddress({
  167 + success(res) {
  168 + th.save_wx_addr(res);
  169 + }
  170 + })
  171 +
  172 + } else {
  173 + if (res.authSetting['scope.address'] == false) {
  174 + console.log("222")
  175 + wx.openSetting({
  176 + success(res) {}
  177 + })
  178 + } else {
  179 +
  180 + wx.chooseAddress({
  181 + success(res) {
  182 + th.save_wx_addr(res);
  183 + }
  184 + })
  185 + }
  186 + }
  187 + }
  188 + })
  189 + },
  190 +
  191 + save_wx_addr:function (res) {
  192 + var pd={},th=this;
  193 + pd.store_id=os.stoid;
  194 + pd.user_id=getApp().globalData.user_id;
  195 + pd.userName=res.userName;
  196 + pd.provinceName=res.provinceName;
  197 + pd.countryName=res.countyName;
  198 + pd.cityName=res.cityName;
  199 + pd.detailInfo=res.detailInfo;
  200 + pd.postalCode=res.postalCode;
  201 + pd.telNumber=res.telNumber;
  202 + getApp().request.promisePost("/api/weshop/useraddress/saveWx",{data:pd}).then(res=>{
  203 + if(res.data.code==0){
  204 + getApp().my_warnning("保存成功",1,th);
  205 + setTimeout(function () {
  206 + th.onShow();
  207 + },1000)
  208 + }
  209 + })
  210 +
  211 + }
158 212 });
159 213 \ No newline at end of file
... ...
pages/user/address_list/address_list.json
1 1 {
2   - "navigationBarTitleText": "收货地址"
  2 + "navigationBarTitleText": "收货地址",
  3 + "usingComponents": {
  4 + "warn": "/components/long_warn/long_warn"
  5 + }
3 6 }
4 7 \ No newline at end of file
... ...
pages/user/address_list/address_list.wxml
... ... @@ -28,8 +28,19 @@
28 28 <view>暂无收货地址</view>
29 29 </view>
30 30  
31   - <view class="address flex-level">
32   - <navigator bindtap="go_url" data-url="/pages/user/add_address/add_address">添加收货地址</navigator>
  31 + <view class="address flex jc_sb" style="width:76%; margin-left:12%">
  32 +
  33 + <navigator bindtap="get_wx" class="ye">
  34 + <view class="add">+</view>
  35 + <view class="addAddress">获取微信地址</view>
  36 + </navigator>
  37 +
  38 + <navigator bindtap="go_url" data-url="/pages/user/add_address/add_address">
  39 + <view class="add">+</view>
  40 + <view class="addAddress">新建收货地址</view>
  41 + </navigator>
  42 +
  43 +
33 44 </view>
34 45 </view>
35 46  
... ... @@ -69,12 +80,17 @@
69 80  
70 81 </view>
71 82  
72   - <!-- 新建收货地址 -->
73   - <view class="new">
74   - <navigator bindtap="go_url" data-url="/pages/user/add_address/add_address">
75   - <view class="add">+</view>
76   - <view class="addAddress">新建收货地址</view>
77   - </navigator>
78   - </view>
79   -
80   -</view>
81 83 \ No newline at end of file
  84 + <!-- 新建收货地址 -->
  85 + <view class="new flex jc_sb">
  86 + <navigator bindtap="get_wx" class="ye">
  87 + <view class="add">+</view>
  88 + <view class="addAddress">获取微信地址</view>
  89 + </navigator>
  90 +
  91 + <navigator bindtap="go_url" data-url="/pages/user/add_address/add_address">
  92 + <view class="add">+</view>
  93 + <view class="addAddress">新建收货地址</view>
  94 + </navigator>
  95 + </view>
  96 +</view>
  97 +<warn id="warn"></warn>
82 98 \ No newline at end of file
... ...
pages/user/address_list/address_list.wxss
... ... @@ -213,14 +213,14 @@ page {
213 213 }
214 214  
215 215 .container .new {
216   - width: 100%;
  216 + width: 86%;
217 217 display: flex;
218   - justify-content: center;
219 218 position: fixed;
220 219 bottom: 0rpx;
221 220 height: 204rpx;
222 221 align-items: center;
223 222 background-color: rgb(255, 255, 255);
  223 + margin-left:7%
224 224 }
225 225  
226 226 .container .new .add {
... ... @@ -229,7 +229,7 @@ page {
229 229  
230 230 .container navigator {
231 231 display: flex;
232   - width: 430rpx;
  232 + width: 300rpx;
233 233 height: 62rpx;
234 234 background-color: rgb(239, 22, 51);
235 235 border-radius: 40rpx;
... ... @@ -238,3 +238,10 @@ page {
238 238 color: rgb(255, 255, 255);
239 239 font-size: 27rpx;
240 240 }
  241 +
  242 +.container navigator.ye{
  243 + background-color: #fc872d;
  244 +}
  245 +.nothing .address navigator.ye{
  246 + background-color: #fc872d;
  247 +}
... ...
pages/user/order_detail/order_detail.js
1 1 var e = getApp(), r = e.request,rq=r,t = require("../../../utils/util.js"), o = require("../../../utils/common.js"),oo=e.globalData,os=oo.setting;
2 2 var regeneratorRuntime = require('../../../utils/runtime.js');
  3 +var ut= require('../../../utils/util.js');
  4 +
3 5  
4 6 Page({
5 7 data: {
... ... @@ -270,10 +272,206 @@ Page({
270 272 },
271 273  
272 274 //--------立即支付----------
273   - jumpToCart4: function(e) {
274   - this.data.optionIsGoup ? wx.navigateTo({
275   - url: "/pages/team/team_confirm/team_confirm?orderSn=" + this.data.order.order_sn + "&orderPay=true"
276   - }) : o.jumpToCart4({
  275 + async jumpToCart4(e) {
  276 + var th=this;
  277 + if(this.data.optionIsGoup)
  278 + wx.navigateTo({
  279 + url: "/pages/team/team_confirm/team_confirm?orderSn=" + this.data.order.order_sn + "&orderPay=true"
  280 + })
  281 + var order=this.data.order;
  282 + var order_goods=order.order_goods;
  283 +
  284 + for(var i in order_goods){
  285 + var good=order_goods[i];
  286 + //如果不是小程序有的功能,直接提示要去3.0处理
  287 + if(good.prom_type==2 || good.prom_type==3 || good.prom_type==4 || good.prom_type==5){
  288 + wx.showModal({
  289 + title: '提示',
  290 + content: '小程序还未有该活动,请到3.0公众号支付'
  291 + });
  292 + return false;
  293 + }
  294 +
  295 + //要每件每件的商品进行检查,看有么有超出库存,超出限购
  296 + var good= order_goods[i],goodsbuynum=0,promgoodsbuynum=0,gg=null;
  297 + //获取单品的现在的活动状态
  298 + await getApp().request.promiseGet("/api/weshop/goods/get/" + os.stoid + "/" + good.goods_id, {
  299 + }).then(res=>{
  300 + gg=res.data.data;
  301 + })
  302 + var limit = gg.viplimited;
  303 + var store_count = gg.store_count;
  304 +
  305 + //---要获得商品,该用户买了多少件,同步应用---
  306 + await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", {
  307 + data: {
  308 + store_id: os.stoid,
  309 + user_id: getApp().globalData.user_id,
  310 + goods_id: good.goods_id,
  311 + prom_type: good.prom_type,
  312 + prom_id: good.prom_id
  313 + },
  314 + }).then(res => {
  315 + var buy_num_data = res.data.data;
  316 + if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum;
  317 + goodsbuynum = buy_num_data.goodsbuynum;
  318 + })
  319 +
  320 + var buyed_mum2=goodsbuynum+good.goods_num;
  321 + if (buyed_mum2 > limit && limit > 0) {
  322 + wx.showModal({
  323 + title: '提示',
  324 + content: gg.goods_name+'购买数量超出商品限购'
  325 + });
  326 + return false;
  327 + }
  328 +
  329 + if(good.prom_type==1 || good.prom_type==6){
  330 + if(gg.prom_type!=good.prom_type) {
  331 + wx.showModal({
  332 + title: '提示',
  333 + content: gg.goods_name+'商品的活动发生了变化'
  334 + });
  335 + return false;
  336 + }
  337 +
  338 + }else{
  339 +
  340 + if(gg.prom_type==1 || gg.prom_type==6){
  341 + var prom=null;
  342 + //---如果是活动的时候---
  343 + var prom=null,th=this;
  344 + if(gg.prom_type==1){
  345 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+gg.prom_id,{
  346 + }).then(res=>{
  347 + if(res.data.code==0){
  348 + prom=res.data.data;
  349 + }
  350 + })
  351 + }
  352 + if(gg.prom_type==6){
  353 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+gg.prom_id,{
  354 + }).then(res=>{
  355 + if(res.data.code==0){
  356 + prom=res.data.data;
  357 + }
  358 + })
  359 + }
  360 +
  361 + if(prom){
  362 + var t_now=ut.gettimestamp();
  363 + if(prom.is_end==0 && prom.start_time<t_now && prom.end_time>t_now){
  364 + wx.showModal({
  365 + title: '提示',
  366 + content: gg.goods_name+'商品的活动发生了变化'
  367 + });
  368 + return false;
  369 + }
  370 + }
  371 + }
  372 +
  373 +
  374 + var isok=1;
  375 + var card_field=th.data.card_field;
  376 + //如果会员是等级会员,商品有等级价,且不是活动商品
  377 + if(card_field && gg[card_field]>0){
  378 + if (good.goods_price != gg[card_field]) isok = 0;
  379 + }else{
  380 + if (good.goods_price != gg.shop_price) isok = 0;
  381 +
  382 + }
  383 + if(!isok){
  384 + wx.showModal({
  385 + title: '提示',
  386 + content: gg.goods_name+'商品的价格发生了变化'
  387 + });
  388 + return false;
  389 + }
  390 +
  391 + //--如果是线下库存的时候--
  392 + if(th.data.conf.sales_rules==2){
  393 + var ob={};
  394 + await th.check_down_line_next(gg,good.goods_num,order.pickup_id,function(obj){
  395 + ob=obj;
  396 + })
  397 + if(ob.code==-1){
  398 + wx.showModal({
  399 + title: '提示',
  400 + content: gg.goods_name+'门店库存不足'
  401 + });
  402 + return false;
  403 + }
  404 +
  405 + }else{
  406 + if(good.goods_num>store_count){
  407 + wx.showModal({
  408 + title: '提示',
  409 + content: gg.goods_name+'商品的库存不足'
  410 + });
  411 + return false;
  412 + }
  413 +
  414 + }
  415 + }
  416 +
  417 + var prom=null;
  418 + //---如果是活动的时候---
  419 + var prom=null,goodsinfo=good,th=this;
  420 + if(goodsinfo.prom_type==1){
  421 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  422 + }).then(res=>{
  423 + if(res.data.code==0){
  424 + prom=res.data.data;
  425 + }
  426 + })
  427 + }
  428 + if(goodsinfo.prom_type==6){
  429 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  430 + }).then(res=>{
  431 + if(res.data.code==0){
  432 + prom=res.data.data;
  433 + }
  434 + })
  435 + }
  436 + //----------如果有活动,并且在进行中,就不计算线下库存---------------
  437 + if(prom){
  438 + var now=ut.gettimestamp();
  439 + if(prom.is_end==1 && prom.end_time<now){
  440 + wx.showModal({
  441 + title: '提示',
  442 + content: goodsinfo.goods_name+'商品的活动已经结束'
  443 + });
  444 + return false;
  445 + }
  446 +
  447 + buyed_mum2=promgoodsbuynum+good.goods_num;
  448 + if (buyed_mum2 > prom.buy_limit && prom.buy_limit > 0) {
  449 + wx.showModal({
  450 + title: '提示',
  451 + content: goodsinfo.goods_name+'购买数量超出商品活动限购'
  452 + });
  453 + return false;
  454 + }
  455 +
  456 + var redis_num = 0;
  457 + //------判断活动是否抢光-----
  458 + await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" +
  459 + os.stoid + "/" + goodsinfo.prom_type + "/" + goodsinfo.prom_id, {
  460 + }).then(res => {
  461 + redis_num = res.data.data;
  462 + });
  463 +
  464 + if (good.goods_num > redis_num) {
  465 + wx.showModal({
  466 + title: gg.goods_name+'超出商品活动库存',
  467 + });
  468 + return false;
  469 + }
  470 + }
  471 +
  472 + }
  473 +
  474 + o.jumpToCart4({
277 475 order_sn: this.data.order.order_sn,
278 476 order_amount: this.data.order.order_amount
279 477 }, 1);
... ... @@ -344,14 +542,18 @@ Page({
344 542 //-----删除订单-----
345 543 deleteOrderData: function(t) {
346 544 var th=this;
347   - var order_id=t.currentTarget.dataset.order_id;
  545 + var order_id=t.currentTarget.dataset.order_id;
  546 + var up_data={
  547 + order_id: order_id,isdel:1
  548 + };
  549 + if(th.data.order.order_status!=6){
  550 + up_data.order_status=5;
  551 + }
348 552 wx.showModal({
349 553 title: "是否删除订单?",
350 554 success: function(tt) {
351   - t.confirm && rq.put("/api/weshop/order/updatebyId", {
352   - data: {
353   - order_id: order_id, order_status: 5
354   - },
  555 + tt.confirm && rq.put("/api/weshop/order/updatebyId", {
  556 + data: up_data,
355 557 success: function (t) {
356 558 getApp().my_warnning("删除成功",1,th);
357 559 setTimeout(function () {
... ... @@ -389,7 +591,48 @@ Page({
389 591 if(item.order_amount==0 || item.user_money==0) return true;
390 592 }
391 593 return false;
392   - }
  594 + },
  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 + for(var i in res.data.data.pageData)
  608 + lock+=res.data.data.pageData[i].outQty;
  609 + }
  610 + })
  611 + //先获取门店的编号
  612 + await getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+pick_id,{
  613 + data:{storeId:os.stoid,goodsId:gg.goods_id,pickupId:pick_id}
  614 + }).then(res=>{
  615 + if(res.data.code==0){
  616 + pick_no=res.data.data.pickup_no;
  617 + }
  618 + })
  619 + //读取线下的门店库存
  620 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  621 + data:{storageNos:pick_no,wareIds:encodeURIComponent(gg.erpwareid),storeId:os.stoid}
  622 + }).then(res=>{
  623 + if(res.data.code==0){
  624 + plist=res.data.data.pageData[0];
  625 + }
  626 + })
  627 + var ob={}; ob.code=1;
  628 + if(num>plist.CanOutQty-lock){
  629 + ob.code=-1;
  630 + ob.CanOutQty=plist.CanOutQty-lock
  631 + if(ob.CanOutQty<0) ob.CanOutQty=0;
  632 + }
  633 + func(ob)
  634 + },
  635 +
393 636  
394 637  
395 638  
... ...
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,278 @@ 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 +
  426 + console.log("-----------------111-------------------");
  427 +
  428 + if(good.prom_type==1 || good.prom_type==6){
  429 + if(gg.prom_type!=good.prom_type) {
  430 + wx.showModal({
  431 + title: '提示',
  432 + content: gg.goods_name+'商品的活动发生了变化'
  433 + });
  434 + return false;
  435 + }
  436 +
  437 + }else{
  438 +
  439 + if(gg.prom_type==1 || gg.prom_type==6){
  440 + var prom=null;
  441 + //---如果是活动的时候---
  442 + var prom=null,th=this;
  443 + if(gg.prom_type==1){
  444 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+gg.prom_id,{
  445 + }).then(res=>{
  446 + if(res.data.code==0){
  447 + prom=res.data.data;
  448 + }
  449 + })
  450 + }
  451 + if(gg.prom_type==6){
  452 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+gg.prom_id,{
  453 + }).then(res=>{
  454 + if(res.data.code==0){
  455 + prom=res.data.data;
  456 + }
  457 + })
  458 + }
  459 +
  460 + if(prom){
  461 + var t_now=ut.gettimestamp();
  462 + if(prom.is_end==0 && prom.start_time<t_now && prom.end_time>t_now){
  463 + wx.showModal({
  464 + title: '提示',
  465 + content: gg.goods_name+'商品的活动发生了变化'
  466 + });
  467 + return false;
  468 + }
  469 + }
  470 + }
  471 +
  472 +
  473 + var isok=1;
  474 + var card_field=th.data.card_field;
  475 + //如果会员是等级会员,商品有等级价,且不是活动商品
  476 + if(card_field && gg[card_field]>0){
  477 + if (good.goods_price != gg[card_field]) isok = 0;
  478 + }else{
  479 + if (good.goods_price != gg.shop_price) isok = 0;
  480 +
  481 + }
  482 + if(!isok){
  483 + wx.showModal({
  484 + title: '提示',
  485 + content: gg.goods_name+'商品的价格发生了变化'
  486 + });
  487 + return false;
  488 + }
  489 +
  490 + //--如果是线下库存的时候--
  491 + if(th.data.conf.sales_rules==2){
  492 + var ob={};
  493 + await th.check_down_line_next(gg,good.goods_num,order.pickup_id,function(obj){
  494 + ob=obj;
  495 + })
  496 + if(ob.code==-1){
  497 + wx.showModal({
  498 + title: '提示',
  499 + content: gg.goods_name+'门店库存不足'
  500 + });
  501 + return false;
  502 + }
  503 +
  504 + }else{
  505 + if(good.goods_num>store_count){
  506 + wx.showModal({
  507 + title: '提示',
  508 + content: gg.goods_name+'商品的库存不足'
  509 + });
  510 + return false;
  511 + }
  512 +
  513 + }
  514 + }
  515 +
  516 + console.log("------------------------------------");
  517 +
  518 + var prom=null;
  519 + //---如果是活动的时候---
  520 + var prom=null,goodsinfo=good,th=this;
  521 + if(goodsinfo.prom_type==1){
  522 + await getApp().request.promiseGet("/api/ms/flash_sale/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  523 + }).then(res=>{
  524 + if(res.data.code==0){
  525 + prom=res.data.data;
  526 + }
  527 + })
  528 + }
  529 + if(goodsinfo.prom_type==6){
  530 + await getApp().request.promiseGet("/api/weshop/teamlist/get/"+os.stoid+"/"+goodsinfo.prom_id,{
  531 + }).then(res=>{
  532 + if(res.data.code==0){
  533 + prom=res.data.data;
  534 + }
  535 + })
  536 + }
  537 + //----------如果有活动,并且在进行中,就不计算线下库存---------------
  538 + if(prom){
  539 + var now=ut.gettimestamp();
  540 + if(prom.is_end==1 && prom.end_time<now){
  541 + wx.showModal({
  542 + title: '提示',
  543 + content: goodsinfo.goods_name+'商品的活动已经结束'
  544 + });
  545 + return false;
  546 + }
  547 +
  548 + buyed_mum2=promgoodsbuynum+good.goods_num;
  549 + if (buyed_mum2 > prom.buy_limit && prom.buy_limit > 0) {
  550 + wx.showModal({
  551 + title: '提示',
  552 + content: goodsinfo.goods_name+'购买数量超出商品活动限购'
  553 + });
  554 + return false;
  555 + }
  556 +
  557 + var redis_num = 0;
  558 + //------判断活动是否抢光-----
  559 + await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" +
  560 + os.stoid + "/" + goodsinfo.prom_type + "/" + goodsinfo.prom_id, {
  561 + }).then(res => {
  562 + redis_num = res.data.data;
  563 + });
  564 +
  565 + if (good.goods_num > redis_num) {
  566 + wx.showModal({
  567 + title: gg.goods_name+'超出商品活动库存',
  568 + });
  569 + return false;
  570 + }
  571 + }
  572 +
  573 +
  574 + }
  575 + th.pay_next(e);
383 576 },
384   -
  577 +
  578 +
  579 + pay_next(e){
  580 + if (e.order_amount == 0) {
  581 + var dd = {
  582 + parent_sn: e.order_sn,
  583 + store_id: e.store_id,
  584 + type: 1,
  585 + };
  586 + getApp().request.post("/api/weshop/order/pay/createOrder", {
  587 + data: dd,
  588 + success: function(t) {
  589 + if (t.data.code == 0) {
  590 + th.onload();
  591 + } else {
  592 + getApp().confirmBox(t.data.msg + "请您取消该订单");
  593 + }
  594 + }
  595 + })
  596 + return false;
  597 + }
  598 + a.jumpToCart4({
  599 + order_sn: e.order_sn,
  600 + order_amount: e.order_amount,
  601 + type: 1 //正常单
  602 + });
  603 + },
  604 +
  605 + //---检验线下库存的数量的子函数---
  606 + async check_down_line_next(gg,num,pick_id,func){
  607 +
  608 + var lock=0,pick_no,plist;
  609 + //先读取门店的lock
  610 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  611 + data:{store_id:os.stoid,wareId:gg.goods_id,storageId:pick_id}
  612 + }).then(res=>{
  613 + if(res.data.code==0 && res.data.data.total>0){
  614 + for(var i in res.data.data.pageData)
  615 + lock+=res.data.data.pageData[i].outQty;
  616 + }
  617 + })
  618 + //先获取门店的编号
  619 + await getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+pick_id,{
  620 + data:{storeId:os.stoid,goodsId:gg.goods_id,pickupId:pick_id}
  621 + }).then(res=>{
  622 + if(res.data.code==0){
  623 + pick_no=res.data.data.pickup_no;
  624 + }
  625 + })
  626 + //读取线下的门店库存
  627 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  628 + data:{storageNos:pick_no,wareIds:encodeURIComponent(gg.erpwareid),storeId:os.stoid}
  629 + }).then(res=>{
  630 + if(res.data.code==0){
  631 + plist=res.data.data.pageData[0];
  632 + }
  633 + })
  634 + var ob={}; ob.code=1;
  635 + if(num>plist.CanOutQty-lock){
  636 + ob.code=-1;
  637 + ob.CanOutQty=plist.CanOutQty-lock
  638 + if(ob.CanOutQty<0) ob.CanOutQty=0;
  639 + }
  640 + func(ob)
  641 + },
  642 +
  643 +
  644 +
385 645 //------图片失败,默认图片---------
386 646 bind_bnerr: function(e) {
387 647 var _errImg = e.currentTarget.dataset.errorimg;
... ...
pages/user/order_list/order_list.wxml
... ... @@ -24,16 +24,20 @@
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>
31 33 </block>
32 34 <block wx:else>退款中</block>
  35 + <!--
33 36 <view class="flex" wx:if="{{(item.order_status==0&&item.pay_status==0)}}">
34 37 <view class="lin"></view>
35   - <image src="{{iurl}}miniapp/images/trash.png" bindtap="deleteOrderData" data-order_id="{{item.order_id}}"></image>
36   - </view>
  38 + <image src="{{iurl}}miniapp/images/trash.png" bindtap="deleteOrderData" data-index="{{index}}" data-order_id="{{item.order_id}}"></image>
  39 + </view>-->
  40 +
37 41 </view>
38 42 </view>
39 43  
... ... @@ -126,8 +130,6 @@
126 130 </view>
127 131 <view class="links flex-right-vertical fs30">
128 132 <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 133 <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 134 <view class="commodity_To_evaluate flex-level View_evaluation" wx:if="{{item.pt_status==3}}">拼团失败</view>
133 135 <!---has_rt部分退---->
... ... @@ -136,7 +138,7 @@
136 138 <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 139 </block>
138 140 <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>
  141 + <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 142 <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 143 <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 144 </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  
... ...