Commit 87358ad0950ef022dec32f76c9a8b17a30925982

Authored by yvan.ni
1 parent a9e09ab7

搭配购商品 的优化

components/cart_collect_temp/cart_collect_temp.js
  1 +var regeneratorRuntime = require('../../utils/runtime.js');
  2 +var os = getApp().globalData.setting
1 3 Component({
2 4 properties: {
3 5 // 这里定义了数据列表属性,列表显示数据
... ... @@ -14,6 +16,15 @@ Component({
14 16 cart_index: {
15 17 type: Number,
16 18 value: 0
  19 + },
  20 +
  21 + sales_rules: {
  22 + type: Number,
  23 + value: 1
  24 + },
  25 + pick:{
  26 + type: Number,
  27 + value: 1
17 28 }
18 29  
19 30 },
... ... @@ -22,7 +33,8 @@ Component({
22 33 imgUrl: getApp().globalData.setting.imghost,
23 34 },
24 35 methods: {
25   - select_coll(e) {
  36 + async select_coll(e) {
  37 + var th=this;
26 38 var index = e.currentTarget.dataset.index;
27 39 var itr = this.properties.all_collocation_list[index];
28 40 var ob = {
... ... @@ -35,6 +47,23 @@ Component({
35 47 ob.cart_index =this.properties.cart_index;
36 48 }
37 49  
  50 +
  51 + if(th.data.sales_rules>1){
  52 + var isok = 1;
  53 + await th.check_store_num(itr.goods_id, th.data.pick, 1, function (res){
  54 + isok = res;
  55 + })
  56 + if(!isok){
  57 + wx.showToast({
  58 + title: itr.goods_name+"商品库存不足",
  59 + icon: 'none',
  60 + duration: 2000
  61 + })
  62 + return false;
  63 + }
  64 + }
  65 +
  66 +
38 67 var txt = "all_collocation_list[" + index + "].selected"
39 68  
40 69 this.setData({[txt]: ob.selected})
... ... @@ -53,5 +82,66 @@ Component({
53 82 },
54 83  
55 84  
  85 + //---确认线下门店的数量足不足---
  86 + async check_store_num(goods_id, pick, goods_num, func) {
  87 + var lock = 0, pick_no, plist, erpwareid;
  88 +
  89 + var lock_rq={ store_id: os.stoid, wareId: goods_id, storageId: pick, pageSize: 1000 };
  90 + if(this.data.sales_rules==3){
  91 + lock_rq.appoint_pick_keyid=this.data.appoint_pick_keyid;
  92 + delete lock_rq.storageId
  93 + }
  94 + //先读取门店的lock
  95 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page", {
  96 + data: lock_rq
  97 + }).then(res => {
  98 + if (res.data.code == 0 && res.data.data.total > 0) {
  99 + for (var i in res.data.data.pageData)
  100 + lock += res.data.data.pageData[i].outQty;
  101 + }
  102 + })
  103 +
  104 + if(this.data.sales_rules==2) {
  105 + //先获取门店的编号
  106 + await getApp().request.promiseGet("/api/weshop/pickup/get/" + os.stoid + "/" + pick, {
  107 + }).then(res => {
  108 + if (res.data.code == 0) {
  109 + pick_no = res.data.data.pickup_no;
  110 + }
  111 + })
  112 + }
  113 +
  114 + //先获取商品的线下库存
  115 + await getApp().request.promiseGet("/api/weshop/goods/get/" + os.stoid + "/" + goods_id, {
  116 + }).then(res => {
  117 + if (res.data.code == 0) {
  118 + erpwareid = res.data.data.erpwareid;
  119 + }
  120 + })
  121 +
  122 +
  123 + var sto_rq={ storageNos: pick_no, wareIds: encodeURIComponent(erpwareid), storeId: os.stoid, pageSize: 2000 };
  124 + if(this.data.sales_rules==3){
  125 + sto_rq.storageIds=this.data.appoint_pick_keyid;
  126 + delete sto_rq.storageNos
  127 + }
  128 +
  129 + //读取线下的门店库存
  130 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages", {
  131 + data: sto_rq
  132 + }).then(res => {
  133 + if (res.data.code == 0 && res.data.data.total > 0) {
  134 + plist = res.data.data.pageData[0];
  135 + }
  136 + })
  137 +
  138 + var isok = 1;
  139 + if (!plist || goods_num > plist.CanOutQty - lock) {
  140 + isok = 0;
  141 + }
  142 + func(isok);
  143 + },
  144 +
  145 +
56 146 }
57 147 })
58 148 \ No newline at end of file
... ...
packageA/pages/prom_list/prom_list.js
... ... @@ -273,17 +273,26 @@ Page({
273 273 //调用接口判断订单优惠,
274 274 getApp().request.promiseGet("/api/weshop/goods/getGoodsPromList/" + os.stoid + "/" + ee.data.gid + "/2"+"/"+user_id, {}).then(res => {
275 275 if (res.data.code == 0) {
276   - var r_data = res.data.data;
277   -
278   -
279   - th.data.is_coupon = r_data.collocationPromList.is_coupon;
280   -
281   -
  276 +
  277 + var r_data = res.data.data;
  278 +
  279 + th.data.is_coupon = r_data.collocationPromList.is_coupon;
  280 +
282 281 th.loop_promise(0, r_data.collocationList, function () {
283   - // 设置搭配购是否使用优惠卷
  282 +
  283 + var set_data=JSON.parse(JSON.stringify(r_data.collocationList));
  284 +
  285 + //如果是线上的时候,过滤掉线上库存未0的商品
  286 + if(th.data.sales_rules==1){
  287 + set_data=set_data.filter(function (e){
  288 + return e.store_count>0;
  289 + })
  290 + }
  291 +
  292 + //设置搭配购是否使用优惠卷
284 293 ee.setData({
285 294 collocationGoods: r_data.collocationPromList,
286   - collocationList: r_data.collocationList,
  295 + collocationList: set_data,
287 296 })
288 297 })
289 298 }
... ... @@ -297,7 +306,7 @@ Page({
297 306 //--等待某个值只运行---,这里有可能因为导航的时间太久,而不能计算门店库存
298 307 getApp().waitfor2(that, "wait_for_user_store", "fir_def_store", function () {
299 308  
300   - debugger
  309 +
301 310  
302 311 if (th.data.fir_def_store && th.data.fir_def_store.pickup_id) {
303 312 var lock = 0,plist = null;
... ... @@ -386,6 +395,8 @@ Page({
386 395 //------------加入购物车--------------
387 396 addCart: function(t) {
388 397 var th = this;
  398 + if(this.data.lding) return false;
  399 + th.setData({lding:1})
389 400 th.add_cart_func(t);
390 401  
391 402 },
... ... @@ -393,6 +404,7 @@ Page({
393 404 add_cart_func: function(t) {
394 405 var i = getApp().request;
395 406 if (oo.user_id == null) {
  407 + th.setData({lding:0})
396 408 return s.my_warnning("还未登录!", 0, this);
397 409 }
398 410 var e = this,
... ... @@ -401,7 +413,7 @@ Page({
401 413 o = this.data.data;
402 414 a = o.goods_id;
403 415 //----------添加到购物车时,要判断限购数量,--------
404   - e.get_buy_num(o, function(ee) {
  416 + e.get_buy_num(o, async function(ee) {
405 417 //---判断商品是否超出限购---
406 418 if (th.data.g_buy_num != null && th.data.data.viplimited > 0) {
407 419 if (th.data.goodsInputNum + th.data.g_buy_num.get(th.data.data.goods_id) > th.data.data.viplimited) {
... ... @@ -409,6 +421,7 @@ Page({
409 421 title: '提示',
410 422 content: '超出商品限购'
411 423 });
  424 + th.setData({lding:0})
412 425 return false;
413 426 }
414 427 }
... ... @@ -419,16 +432,23 @@ Page({
419 432 title: '提示',
420 433 content: '超出商品活动限购'
421 434 });
  435 + th.setData({lding:0})
422 436 return false;
423 437 }
424 438 }
425 439  
426   - if (th.data.goodsInputNum <= 0) return s.my_warnning("商品数量不能为0", 0, th);
  440 + if (th.data.goodsInputNum <= 0){
  441 + th.setData({lding:0})
  442 + return s.my_warnning("商品数量不能为0", 0, th);
  443 + }
427 444 if (th.data.sto_sele_name == null || th.data.sto_sele_name == undefined)
428 445 this.setData({
429 446 sto_sele_name: ""
430 447 });
431   - if (th.data.sto_sele_name == "") return s.my_warnning("请选择门店", 0, th);
  448 + if (th.data.sto_sele_name == ""){
  449 + th.setData({lding:0})
  450 + return s.my_warnning("请选择门店", 0, th);
  451 + }
432 452  
433 453 //--------------此时操作的数据------------
434 454 var newd = {
... ... @@ -478,12 +498,13 @@ Page({
478 498  
479 499 //-----如果是秒杀,团购,积分购,拼团-----
480 500 if (th.data.data.prom_type != 5) {
  501 + th.setData({lding:0})
481 502 return s.my_warnning("商品不是搭配活动!", 0, th);
482 503 }else{
483 504 //---如果是线下门店销售的时候---
484 505 if(th.data.sales_rules>=2){
485   - var pick=th.get_pick_from_list(th.data.sto_sele_id)
486 506  
  507 + var pick=th.get_pick_from_list(th.data.sto_sele_id)
487 508  
488 509 var dw_rq={storageNos:pick.pickup_no,wareIds:encodeURIComponent(th.data.data.erpwareid),storeId:os.stoid,pageSize:2000};
489 510 if(th.data.sales_rules == 3){
... ... @@ -499,6 +520,7 @@ Page({
499 520 if(res.data.data.pageData.length>0){
500 521 var CanOutQty=res.data.data.pageData[0].CanOutQty;
501 522 if(CanOutQty<e.data.goodsInputNum){
  523 + th.setData({lding:0})
502 524 return s.my_warnning("库存不足!", 0, th);
503 525 }
504 526  
... ... @@ -520,6 +542,7 @@ Page({
520 542 }
521 543  
522 544 if(CanOutQty<=lock){
  545 + th.setData({lding:0})
523 546 return s.my_warnning("库存不足!", 0, th);
524 547 }
525 548 th.add_cart_next(e,t,a,o,newd,CanOutQty-lock);
... ... @@ -529,6 +552,7 @@ Page({
529 552 }
530 553 })
531 554 }else{
  555 + th.setData({lding:0})
532 556 return s.my_warnning("库存不足!", 0, th);
533 557 }
534 558  
... ... @@ -536,8 +560,14 @@ Page({
536 560 }
537 561 })
538 562 }else{
539   - if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th);
540   - if (o.store_count <e.data.goodsInputNum) return s.my_warnning("库存不足!", 0, th);
  563 + if (o.store_count <= 0) {
  564 + th.setData({lding:0})
  565 + return s.my_warnning("库存已为空!", 0, th);
  566 + }
  567 + if (o.store_count <e.data.goodsInputNum) {
  568 + th.setData({lding:0})
  569 + return s.my_warnning("库存不足!", 0, th);
  570 + }
541 571 th.add_cart_next(e,t,a,o,newd); //加入购物车下一步
542 572 }
543 573 }
... ... @@ -545,39 +575,63 @@ Page({
545 575 },
546 576  
547 577 //---加入购物车的最后一步---
548   - add_cart_next(e,t,a,o,newd,CanOutQty){
549   - var th=this;
550   - //---如果商品不是积分购和拼团,要判断一个是否要进行等级价的判断------
551   - if(o.prom_type!=1 && o.prom_type!=6){
552   - var conf=th.data.bconfig;
553   - if (conf.switch_list && getApp().globalData.userInfo['card_field']){
554   - var s_list=JSON.parse(conf.switch_list);
555   - var now=ut.gettimestamp();
556   - var str = getApp().globalData.userInfo['card_expiredate'].replace(/-/g, '/');
557   - var end = new Date(str);
558   - end = Date.parse(end) / 1000;
559   -
560   - //--如果后台有开启等级价的功能,而且会员的等级没有过期的情况下--
561   - if(parseInt(s_list.rank_switch)==2 && end>now){
562   - var card_price=o[getApp().globalData.userInfo['card_field']];
563   - //如果会员有等级价
564   - if(getApp().globalData.userInfo['card_field']!=undefined && getApp().globalData.userInfo['card_field']!=null
565   - && getApp().globalData.userInfo['card_field']!="" && card_price>0){
566   - newd.goods_price=card_price;
567   - }
568   - }
569   - }
570   - }
  578 + add_cart_next(e, t, a, o, newd, CanOutQty) {
  579 + var th = this;
  580 + //---如果商品不是积分购和拼团,要判断一个是否要进行等级价的判断------
  581 + if (o.prom_type != 1 && o.prom_type != 6) {
  582 + var conf = th.data.bconfig;
  583 + if (conf.switch_list && getApp().globalData.userInfo['card_field']) {
  584 + var s_list = JSON.parse(conf.switch_list);
  585 + var now = ut.gettimestamp();
  586 + var str = getApp().globalData.userInfo['card_expiredate'].replace(/-/g, '/');
  587 + var end = new Date(str);
  588 + end = Date.parse(end) / 1000;
  589 +
  590 + //--如果后台有开启等级价的功能,而且会员的等级没有过期的情况下--
  591 + if (parseInt(s_list.rank_switch) == 2 && end > now) {
  592 + var card_price = o[getApp().globalData.userInfo['card_field']];
  593 + //如果会员有等级价
  594 + if (getApp().globalData.userInfo['card_field'] != undefined && getApp().globalData.userInfo['card_field'] != null
  595 + && getApp().globalData.userInfo['card_field'] != "" && card_price > 0) {
  596 + newd.goods_price = card_price;
  597 + }
  598 + }
  599 + }
  600 + }
571 601  
572   - newd['pick_name'] = th.data.sto_sele_name;
573   - newd['pick_dis'] = th.data.sto_sele_distr;
574   - newd["collocation_goods"]=th.data.sele_collocation;
  602 + newd['pick_name'] = th.data.sto_sele_name;
  603 + newd['pick_dis'] = th.data.sto_sele_distr;
575 604  
576   - newd["is_coupon"] = th.data.is_coupon;
  605 + this.check_sele_collocation(function (collocationGoods) {
  606 + var is_ok = 1;
  607 + if (th.data.sales_rules > 1) {
577 608  
578   - th.buyNow(newd);
  609 + for (let j = 0; j < collocationGoods.length; j++) {
  610 + var item = collocationGoods[j];
  611 + if (item.CanOutQty<=0) {
  612 + is_ok=0;
  613 + wx.showToast({
  614 + title: item.goods_name+ "库存不足",
  615 + icon: 'none',
  616 + duration: 2000
  617 + })
579 618  
580   - },
  619 + break;
  620 + }
  621 + }
  622 + }
  623 +
  624 + if(!is_ok){
  625 + th.setData({lding:0})
  626 + return false;
  627 + }
  628 +
  629 + newd["collocation_goods"] = collocationGoods;
  630 + newd["is_coupon"] = th.data.is_coupon;
  631 + th.buyNow(newd);
  632 + })
  633 +
  634 + },
581 635  
582 636 //----------立即购买-----------
583 637 buyNow: function(e) {
... ... @@ -849,7 +903,6 @@ Page({
849 903 e.his_cate_num=his_cate_num;
850 904  
851 905  
852   - debugger
853 906  
854 907 //如果有开启距离的功能,没有设置默认门店,要用最近的门店作为默认门店
855 908 if(dd.lat && !th.data.def_pick_store && th.data.bconfig && th.data.bconfig.is_sort_storage){
... ... @@ -1509,44 +1562,59 @@ Page({
1509 1562 }else{
1510 1563  
1511 1564  
1512   - var lock_rq={store_id:os.stoid,wareId:goodsinfo.goods_id,storageId:item.pickup_id,pageSize:1000};
1513   - //-- 指定门店销售的时候 --
1514   - if(th.data.sales_rules == 3){
1515   - lock_rq.appoint_pick_keyid = encodeURIComponent(th.data.appoint_pick_keyid);
1516   - delete lock_rq.storageId
1517   - }
1518   -
1519   - //先读取门店的lock
1520   - await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
1521   - data:lock_rq
1522   - }).then(res=>{
1523   - if(res.data.code==0 && res.data.data.total>0){
1524   - for(var i in res.data.data.pageData )
1525   - lock+=res.data.data.pageData[i].outQty;
1526   - }
1527   - })
  1565 + // var lock_rq={store_id:os.stoid,wareId:goodsinfo.goods_id,storageId:item.pickup_id,pageSize:1000};
  1566 + // //-- 指定门店销售的时候 --
  1567 + // if(th.data.sales_rules == 3){
  1568 + // lock_rq.appoint_pick_keyid = encodeURIComponent(th.data.appoint_pick_keyid);
  1569 + // delete lock_rq.storageId
  1570 + // }
  1571 + //
  1572 + // //先读取门店的lock
  1573 + // await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{
  1574 + // data:lock_rq
  1575 + // }).then(res=>{
  1576 + // if(res.data.code==0 && res.data.data.total>0){
  1577 + // for(var i in res.data.data.pageData )
  1578 + // lock+=res.data.data.pageData[i].outQty;
  1579 + // }
  1580 + // })
  1581 + //
  1582 + // var dw_rq={storageNos:item.pickup_no,wareIds:encodeURIComponent(erpwareid),storeId:os.stoid,pageSize:2000};
  1583 + // if(th.data.sales_rules == 3){
  1584 + // dw_rq.storageIds = encodeURIComponent(th.data.appoint_pick_keyid)
  1585 + // delete dw_rq.storageNos
  1586 + // }
  1587 + //
  1588 + // //读取线下的门店库存
  1589 + // await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
  1590 + // data:dw_rq
  1591 + // }).then(res=>{
  1592 + // if(res.data.code==0 && res.data.data.total>0){
  1593 + // plist=res.data.data.pageData[0];
  1594 + // }
  1595 + // })
  1596 + //
  1597 + // if(plist && plist.CanOutQty-lock>0){
  1598 + // item.CanOutQty=plist.CanOutQty-lock;
  1599 + // func();
  1600 + // return false;
  1601 + // }
  1602 + // getApp().my_warnning(item.pickup_name+"库存不足!", 0, th);
  1603 +
  1604 + this.check_CanOutQty(goodsinfo, item, function (CanOutQty) {
  1605 + // let str = item.pickup_name + '库存不足!';
  1606 + if (!CanOutQty) {
  1607 + wx.showToast({
  1608 + title: item.pickup_name + '库存不足!',
  1609 + icon: 'none',
  1610 + });
  1611 + return false;
  1612 + }
  1613 + item.CanOutQty = CanOutQty;
  1614 + func();
1528 1615  
1529   - var dw_rq={storageNos:item.pickup_no,wareIds:encodeURIComponent(erpwareid),storeId:os.stoid,pageSize:2000};
1530   - if(th.data.sales_rules == 3){
1531   - dw_rq.storageIds = encodeURIComponent(th.data.appoint_pick_keyid)
1532   - delete dw_rq.storageNos
1533   - }
  1616 + });
1534 1617  
1535   - //读取线下的门店库存
1536   - await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{
1537   - data:dw_rq
1538   - }).then(res=>{
1539   - if(res.data.code==0 && res.data.data.total>0){
1540   - plist=res.data.data.pageData[0];
1541   - }
1542   - })
1543   -
1544   - if(plist && plist.CanOutQty-lock>0){
1545   - item.CanOutQty=plist.CanOutQty-lock;
1546   - func();
1547   - return false;
1548   - }
1549   - getApp().my_warnning(item.pickup_name+"库存不足!", 0, th);
1550 1618  
1551 1619 }
1552 1620 },
... ... @@ -1787,20 +1855,90 @@ Page({
1787 1855 },
1788 1856  
1789 1857 //递归获取商品
1790   - loop_promise:function(x,arr,func){
  1858 + loop_promise: function(x,arr,func){
1791 1859 var th=this;
1792   - getApp().request.promiseGet("/api/weshop/goods/get/" + o.stoid + "/" + arr[x].goods_id, {}).then(res => {
1793   - arr[x].goods_spec=res.data.data.goods_spec;
1794   - arr[x].goods_color=res.data.data.goods_color;
1795   - arr[x].original_img=res.data.data.original_img;
1796   - arr[x].shop_price=res.data.data.shop_price;
1797   - if(x==arr.length-1){
1798   - func(arr); //循环再最后
1799   - }else{
1800   - ++x;
1801   - th.loop_promise(x,arr,func);
1802   - }
  1860 + var g_data=null;
  1861 + getApp().request.promiseGet("/api/weshop/goods/get/" + o.stoid + "/" + arr[x].goods_id, {}).then(res => {
  1862 + if(res.data.code==0 && res.data.data){
  1863 + g_data=res.data.data;
  1864 + if(g_data){
  1865 + arr[x].goods_spec=g_data.goods_spec;
  1866 + arr[x].goods_color=g_data.goods_color;
  1867 + arr[x].original_img=g_data.original_img;
  1868 + arr[x].shop_price=g_data.shop_price;
  1869 + arr[x].store_count=g_data.store_count;
  1870 + }
  1871 + }
  1872 +
  1873 + if(x==arr.length-1){
  1874 + func(arr); //循环再最后
  1875 + }else{
  1876 + ++x;
  1877 + th.loop_promise(x,arr,func);
  1878 + }
1803 1879 })
  1880 +
  1881 + },
  1882 +
  1883 +
  1884 + //线下的时候判断库存
  1885 + async check_sele_collocation(func){
  1886 + var th=this;
  1887 + var pick =this.get_pick_from_list(th.data.sto_sele_id);
  1888 + var collocationGoods= this.data.sele_collocation;
  1889 + if(this.data.sales_rules>1){
  1890 + for (let j = 0; j < collocationGoods.length; j++) {
  1891 +
  1892 + var goodsinfo=collocationGoods[j];
  1893 + var sales_rules = this.data.sales_rules;
  1894 + var lock_rq = {
  1895 + store_id: os.stoid,
  1896 + wareId: goodsinfo.goods_id,
  1897 + pageSize: 1000
  1898 + };
  1899 +
  1900 + if (sales_rules == 2) {
  1901 + lock_rq.storageId =pick.pickup_id
  1902 + } else {
  1903 + lock_rq.appoint_pick_keyid = encodeURIComponent(this.data.appoint_pick_keyid)
  1904 + }
  1905 +
  1906 + var lock = 0;var CanOutQty = 0;var plist = null;
  1907 + //先读取门店的lock
  1908 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page", {
  1909 + data: lock_rq
  1910 + }).then(res => {
  1911 + if (res.data.code == 0 && res.data.data.total > 0) {
  1912 + for (var i in res.data.data.pageData)
  1913 + lock += res.data.data.pageData[i].outQty;
  1914 + }
  1915 + })
  1916 +
  1917 + var sto_req = {
  1918 + wareIds: encodeURIComponent(goodsinfo.erpwareid),
  1919 + storeId: os.stoid
  1920 + }
  1921 + if (sales_rules == 2) {
  1922 + sto_req.storageNos = item.pickup_no
  1923 + } else {
  1924 + sto_req.storageIds = encodeURIComponent(this.data.appoint_pick_keyid)
  1925 + }
  1926 +
  1927 + //读取线下的门店库存
  1928 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages", {
  1929 + data: sto_req
  1930 + }).then(res => {
  1931 + if (res.data.code == 0 && res.data.data.total > 0) {
  1932 + plist = res.data.data.pageData[0];
  1933 + }
  1934 + })
  1935 + if (plist && plist.CanOutQty - lock > 0) {
  1936 + CanOutQty = plist.CanOutQty - lock;
  1937 + }
  1938 + collocationGoods[j].CanOutQty=CanOutQty;
  1939 + }
  1940 + }
  1941 + func(collocationGoods);
1804 1942 },
1805 1943  
1806 1944 //图片失败,默认图片
... ... @@ -1884,7 +2022,64 @@ Page({
1884 2022 choice_sort_store: 0
1885 2023 });
1886 2024 },
1887   -
  2025 +
  2026 + //统一一下获取线下库存的函数
  2027 + async check_CanOutQty(goodsinfo, item, func,pickup_id) {
  2028 +
  2029 + var sales_rules = this.data.sales_rules;
  2030 +
  2031 + var lock_rq = {
  2032 + store_id: os.stoid,
  2033 + wareId: goodsinfo.goods_id,
  2034 + pageSize: 1000
  2035 + };
  2036 +
  2037 + if (sales_rules == 2) {
  2038 + lock_rq.storageId =item?item.pickup_id:pickup_id
  2039 + } else {
  2040 + lock_rq.appoint_pick_keyid = encodeURIComponent(this.data.appoint_pick_keyid)
  2041 + }
  2042 +
  2043 + var lock = 0;
  2044 + var CanOutQty = 0;
  2045 + var plist = null;
  2046 + //先读取门店的lock
  2047 + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page", {
  2048 + data: lock_rq
  2049 + }).then(res => {
  2050 + if (res.data.code == 0 && res.data.data.total > 0) {
  2051 + for (var i in res.data.data.pageData)
  2052 + lock += res.data.data.pageData[i].outQty;
  2053 + }
  2054 + })
  2055 +
  2056 + var sto_req = {
  2057 + wareIds: encodeURIComponent(goodsinfo.erpwareid),
  2058 + storeId: os.stoid
  2059 + }
  2060 + if (sales_rules == 2) {
  2061 + sto_req.storageNos = item.pickup_no
  2062 + } else {
  2063 + sto_req.storageIds = encodeURIComponent(this.data.appoint_pick_keyid)
  2064 + }
  2065 +
  2066 +
  2067 + //读取线下的门店库存
  2068 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages", {
  2069 + data: sto_req
  2070 + }).then(res => {
  2071 + if (res.data.code == 0 && res.data.data.total > 0) {
  2072 + plist = res.data.data.pageData[0];
  2073 + }
  2074 + })
  2075 +
  2076 + if (plist && plist.CanOutQty - lock > 0) {
  2077 + CanOutQty = plist.CanOutQty - lock;
  2078 + }
  2079 +
  2080 + if (func) func(CanOutQty);
  2081 +
  2082 + },
1888 2083  
1889 2084  
1890 2085 });
... ...
packageA/pages/prom_list/prom_list.wxml
... ... @@ -143,17 +143,17 @@
143 143 <view class="spec-cart-btns">
144 144 <!-- 根本就找不到门店 -->
145 145 <block wx:if="{{!only_pk && !def_pickpu_list}}">
146   - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足1</view>
  146 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足</view>
147 147 </block>
148 148 <block wx:else>
149 149  
150 150  
151 151 <block wx:if="{{only_pk.length && !only_pk.length}}">
152   - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足2</view>
  152 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足</view>
153 153 </block>
154 154 <block wx:else>
155 155 <block wx:if="{{def_pickpu_list && !def_pickpu_list.length}}">
156   - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足3</view>
  156 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>
157 157 </block>
158 158 <block wx:else>
159 159 <block wx:if="{{!def_pick_store}}">
... ... @@ -164,26 +164,26 @@
164 164 <block wx:if="{{sales_rules>=2}}">
165 165  
166 166 <block wx:if="{{!def_pick_store.CanOutQty}}">
167   - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足4</view>
  167 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>
168 168 </block>
169 169 <block wx:else>
170 170 <view bindtap="addCart" data-openSpecModal_ind="2"
171   - class="spec-cart-btn spec-buy" data-action="buy">立即购买</view>
  171 + class="spec-cart-btn spec-buy {{lding?'graying':''}} " data-action="buy">立即购买</view>
172 172 </block>
173 173 </block>
174 174 <!-- 线上销售 -->
175 175 <block wx:else>
176 176 <block wx:if="{{data.store_count<=0}}">
177   - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足5</view>
  177 + <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>
178 178 </block>
179 179  
180 180 <block wx:elif="{{def_pick_store && def_pick_store.is_no_dis}}">
181   - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">立即购买</view>
  181 + <view class="spec-cart-btn fs32 {{lding?'graying':''}} " data-action="add" style="background-color: #dcdcdc;color: #999">立即购买</view>
182 182 </block>
183 183  
184 184 <block wx:else>
185 185 <view bindtap="addCart"data-openSpecModal_ind="2"
186   - class="spec-cart-btn spec-buy" data-action="buy">立即购买</view>
  186 + class="spec-cart-btn spec-buy {{lding?'graying':''}} " data-action="buy">立即购买</view>
187 187 </block>
188 188 </block>
189 189  
... ...
packageA/pages/prom_list/prom_list.wxss
... ... @@ -360,4 +360,5 @@
360 360 width: 58%; background-color: #adadad;
361 361 }
362 362 .no_store{color:#d60021; font-size: 26rpx;}
363   -.gray{color: #ccc;}
364 363 \ No newline at end of file
  364 +.gray{color: #ccc;}
  365 +.graying{ background-color: gainsboro }
365 366 \ No newline at end of file
... ...
pages/cart/cart2/cart2.js
... ... @@ -3911,13 +3911,13 @@ Page({
3911 3911 await getApp().request.promiseGet("/api/weshop/goods/getWareStorages", {
3912 3912 data: sto_rq
3913 3913 }).then(res => {
3914   - if (res.data.code == 0) {
  3914 + if (res.data.code == 0 && res.data.data.total > 0) {
3915 3915 plist = res.data.data.pageData[0];
3916 3916 }
3917 3917 })
3918 3918  
3919 3919 var isok = 1;
3920   - if (goods_num > plist.CanOutQty - lock) {
  3920 + if (!plist || goods_num > plist.CanOutQty - lock) {
3921 3921 isok = 0;
3922 3922 }
3923 3923 func(isok);
... ...
pages/cart/cart2/cart2.wxml
... ... @@ -109,7 +109,7 @@
109 109 </view>
110 110  
111 111 <!-- 使用搭配 -->
112   - <cart_collect_temp bind:childFun="select_coll"
  112 + <cart_collect_temp bind:childFun="select_coll" sales_rules="{{sales_rules}}" pick="{{item.pickup_id}}"
113 113 is_cart="1" cart_index="{{index}}"
114 114 all_collocation_list="{{item.collocationList}}" />
115 115  
... ... @@ -377,7 +377,7 @@
377 377 </block>
378 378  
379 379 <!-- 使用搭配 -->
380   - <cart_collect_temp bind:childFun="select_coll" all_collocation_list="{{all_collocation_list}}" />
  380 + <cart_collect_temp bind:childFun="select_coll" all_collocation_list="{{all_collocation_list}}" sales_rules="{{sales_rules}}" pick="{{bn_pick}}" />
381 381  
382 382  
383 383 <!-- 如果是等级卡的商品,会员没有注册,要提醒注册 -->
... ...