Commit 87358ad0950ef022dec32f76c9a8b17a30925982
1 parent
a9e09ab7
搭配购商品 的优化
Showing
6 changed files
with
394 additions
and
108 deletions
components/cart_collect_temp/cart_collect_temp.js
| 1 | +var regeneratorRuntime = require('../../utils/runtime.js'); | ||
| 2 | +var os = getApp().globalData.setting | ||
| 1 | Component({ | 3 | Component({ |
| 2 | properties: { | 4 | properties: { |
| 3 | // 这里定义了数据列表属性,列表显示数据 | 5 | // 这里定义了数据列表属性,列表显示数据 |
| @@ -14,6 +16,15 @@ Component({ | @@ -14,6 +16,15 @@ Component({ | ||
| 14 | cart_index: { | 16 | cart_index: { |
| 15 | type: Number, | 17 | type: Number, |
| 16 | value: 0 | 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,7 +33,8 @@ Component({ | ||
| 22 | imgUrl: getApp().globalData.setting.imghost, | 33 | imgUrl: getApp().globalData.setting.imghost, |
| 23 | }, | 34 | }, |
| 24 | methods: { | 35 | methods: { |
| 25 | - select_coll(e) { | 36 | + async select_coll(e) { |
| 37 | + var th=this; | ||
| 26 | var index = e.currentTarget.dataset.index; | 38 | var index = e.currentTarget.dataset.index; |
| 27 | var itr = this.properties.all_collocation_list[index]; | 39 | var itr = this.properties.all_collocation_list[index]; |
| 28 | var ob = { | 40 | var ob = { |
| @@ -35,6 +47,23 @@ Component({ | @@ -35,6 +47,23 @@ Component({ | ||
| 35 | ob.cart_index =this.properties.cart_index; | 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 | var txt = "all_collocation_list[" + index + "].selected" | 67 | var txt = "all_collocation_list[" + index + "].selected" |
| 39 | 68 | ||
| 40 | this.setData({[txt]: ob.selected}) | 69 | this.setData({[txt]: ob.selected}) |
| @@ -53,5 +82,66 @@ Component({ | @@ -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 | \ No newline at end of file | 148 | \ No newline at end of file |
packageA/pages/prom_list/prom_list.js
| @@ -273,17 +273,26 @@ Page({ | @@ -273,17 +273,26 @@ Page({ | ||
| 273 | //调用接口判断订单优惠, | 273 | //调用接口判断订单优惠, |
| 274 | getApp().request.promiseGet("/api/weshop/goods/getGoodsPromList/" + os.stoid + "/" + ee.data.gid + "/2"+"/"+user_id, {}).then(res => { | 274 | getApp().request.promiseGet("/api/weshop/goods/getGoodsPromList/" + os.stoid + "/" + ee.data.gid + "/2"+"/"+user_id, {}).then(res => { |
| 275 | if (res.data.code == 0) { | 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 | th.loop_promise(0, r_data.collocationList, function () { | 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 | ee.setData({ | 293 | ee.setData({ |
| 285 | collocationGoods: r_data.collocationPromList, | 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,7 +306,7 @@ Page({ | ||
| 297 | //--等待某个值只运行---,这里有可能因为导航的时间太久,而不能计算门店库存 | 306 | //--等待某个值只运行---,这里有可能因为导航的时间太久,而不能计算门店库存 |
| 298 | getApp().waitfor2(that, "wait_for_user_store", "fir_def_store", function () { | 307 | getApp().waitfor2(that, "wait_for_user_store", "fir_def_store", function () { |
| 299 | 308 | ||
| 300 | - debugger | 309 | + |
| 301 | 310 | ||
| 302 | if (th.data.fir_def_store && th.data.fir_def_store.pickup_id) { | 311 | if (th.data.fir_def_store && th.data.fir_def_store.pickup_id) { |
| 303 | var lock = 0,plist = null; | 312 | var lock = 0,plist = null; |
| @@ -386,6 +395,8 @@ Page({ | @@ -386,6 +395,8 @@ Page({ | ||
| 386 | //------------加入购物车-------------- | 395 | //------------加入购物车-------------- |
| 387 | addCart: function(t) { | 396 | addCart: function(t) { |
| 388 | var th = this; | 397 | var th = this; |
| 398 | + if(this.data.lding) return false; | ||
| 399 | + th.setData({lding:1}) | ||
| 389 | th.add_cart_func(t); | 400 | th.add_cart_func(t); |
| 390 | 401 | ||
| 391 | }, | 402 | }, |
| @@ -393,6 +404,7 @@ Page({ | @@ -393,6 +404,7 @@ Page({ | ||
| 393 | add_cart_func: function(t) { | 404 | add_cart_func: function(t) { |
| 394 | var i = getApp().request; | 405 | var i = getApp().request; |
| 395 | if (oo.user_id == null) { | 406 | if (oo.user_id == null) { |
| 407 | + th.setData({lding:0}) | ||
| 396 | return s.my_warnning("还未登录!", 0, this); | 408 | return s.my_warnning("还未登录!", 0, this); |
| 397 | } | 409 | } |
| 398 | var e = this, | 410 | var e = this, |
| @@ -401,7 +413,7 @@ Page({ | @@ -401,7 +413,7 @@ Page({ | ||
| 401 | o = this.data.data; | 413 | o = this.data.data; |
| 402 | a = o.goods_id; | 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 | if (th.data.g_buy_num != null && th.data.data.viplimited > 0) { | 418 | if (th.data.g_buy_num != null && th.data.data.viplimited > 0) { |
| 407 | if (th.data.goodsInputNum + th.data.g_buy_num.get(th.data.data.goods_id) > th.data.data.viplimited) { | 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,6 +421,7 @@ Page({ | ||
| 409 | title: '提示', | 421 | title: '提示', |
| 410 | content: '超出商品限购' | 422 | content: '超出商品限购' |
| 411 | }); | 423 | }); |
| 424 | + th.setData({lding:0}) | ||
| 412 | return false; | 425 | return false; |
| 413 | } | 426 | } |
| 414 | } | 427 | } |
| @@ -419,16 +432,23 @@ Page({ | @@ -419,16 +432,23 @@ Page({ | ||
| 419 | title: '提示', | 432 | title: '提示', |
| 420 | content: '超出商品活动限购' | 433 | content: '超出商品活动限购' |
| 421 | }); | 434 | }); |
| 435 | + th.setData({lding:0}) | ||
| 422 | return false; | 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 | if (th.data.sto_sele_name == null || th.data.sto_sele_name == undefined) | 444 | if (th.data.sto_sele_name == null || th.data.sto_sele_name == undefined) |
| 428 | this.setData({ | 445 | this.setData({ |
| 429 | sto_sele_name: "" | 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 | var newd = { | 454 | var newd = { |
| @@ -478,12 +498,13 @@ Page({ | @@ -478,12 +498,13 @@ Page({ | ||
| 478 | 498 | ||
| 479 | //-----如果是秒杀,团购,积分购,拼团----- | 499 | //-----如果是秒杀,团购,积分购,拼团----- |
| 480 | if (th.data.data.prom_type != 5) { | 500 | if (th.data.data.prom_type != 5) { |
| 501 | + th.setData({lding:0}) | ||
| 481 | return s.my_warnning("商品不是搭配活动!", 0, th); | 502 | return s.my_warnning("商品不是搭配活动!", 0, th); |
| 482 | }else{ | 503 | }else{ |
| 483 | //---如果是线下门店销售的时候--- | 504 | //---如果是线下门店销售的时候--- |
| 484 | if(th.data.sales_rules>=2){ | 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 | var dw_rq={storageNos:pick.pickup_no,wareIds:encodeURIComponent(th.data.data.erpwareid),storeId:os.stoid,pageSize:2000}; | 509 | var dw_rq={storageNos:pick.pickup_no,wareIds:encodeURIComponent(th.data.data.erpwareid),storeId:os.stoid,pageSize:2000}; |
| 489 | if(th.data.sales_rules == 3){ | 510 | if(th.data.sales_rules == 3){ |
| @@ -499,6 +520,7 @@ Page({ | @@ -499,6 +520,7 @@ Page({ | ||
| 499 | if(res.data.data.pageData.length>0){ | 520 | if(res.data.data.pageData.length>0){ |
| 500 | var CanOutQty=res.data.data.pageData[0].CanOutQty; | 521 | var CanOutQty=res.data.data.pageData[0].CanOutQty; |
| 501 | if(CanOutQty<e.data.goodsInputNum){ | 522 | if(CanOutQty<e.data.goodsInputNum){ |
| 523 | + th.setData({lding:0}) | ||
| 502 | return s.my_warnning("库存不足!", 0, th); | 524 | return s.my_warnning("库存不足!", 0, th); |
| 503 | } | 525 | } |
| 504 | 526 | ||
| @@ -520,6 +542,7 @@ Page({ | @@ -520,6 +542,7 @@ Page({ | ||
| 520 | } | 542 | } |
| 521 | 543 | ||
| 522 | if(CanOutQty<=lock){ | 544 | if(CanOutQty<=lock){ |
| 545 | + th.setData({lding:0}) | ||
| 523 | return s.my_warnning("库存不足!", 0, th); | 546 | return s.my_warnning("库存不足!", 0, th); |
| 524 | } | 547 | } |
| 525 | th.add_cart_next(e,t,a,o,newd,CanOutQty-lock); | 548 | th.add_cart_next(e,t,a,o,newd,CanOutQty-lock); |
| @@ -529,6 +552,7 @@ Page({ | @@ -529,6 +552,7 @@ Page({ | ||
| 529 | } | 552 | } |
| 530 | }) | 553 | }) |
| 531 | }else{ | 554 | }else{ |
| 555 | + th.setData({lding:0}) | ||
| 532 | return s.my_warnning("库存不足!", 0, th); | 556 | return s.my_warnning("库存不足!", 0, th); |
| 533 | } | 557 | } |
| 534 | 558 | ||
| @@ -536,8 +560,14 @@ Page({ | @@ -536,8 +560,14 @@ Page({ | ||
| 536 | } | 560 | } |
| 537 | }) | 561 | }) |
| 538 | }else{ | 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 | th.add_cart_next(e,t,a,o,newd); //加入购物车下一步 | 571 | th.add_cart_next(e,t,a,o,newd); //加入购物车下一步 |
| 542 | } | 572 | } |
| 543 | } | 573 | } |
| @@ -545,39 +575,63 @@ Page({ | @@ -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 | buyNow: function(e) { | 637 | buyNow: function(e) { |
| @@ -849,7 +903,6 @@ Page({ | @@ -849,7 +903,6 @@ Page({ | ||
| 849 | e.his_cate_num=his_cate_num; | 903 | e.his_cate_num=his_cate_num; |
| 850 | 904 | ||
| 851 | 905 | ||
| 852 | - debugger | ||
| 853 | 906 | ||
| 854 | //如果有开启距离的功能,没有设置默认门店,要用最近的门店作为默认门店 | 907 | //如果有开启距离的功能,没有设置默认门店,要用最近的门店作为默认门店 |
| 855 | if(dd.lat && !th.data.def_pick_store && th.data.bconfig && th.data.bconfig.is_sort_storage){ | 908 | if(dd.lat && !th.data.def_pick_store && th.data.bconfig && th.data.bconfig.is_sort_storage){ |
| @@ -1509,44 +1562,59 @@ Page({ | @@ -1509,44 +1562,59 @@ Page({ | ||
| 1509 | }else{ | 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,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 | var th=this; | 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,7 +2022,64 @@ Page({ | ||
| 1884 | choice_sort_store: 0 | 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,17 +143,17 @@ | ||
| 143 | <view class="spec-cart-btns"> | 143 | <view class="spec-cart-btns"> |
| 144 | <!-- 根本就找不到门店 --> | 144 | <!-- 根本就找不到门店 --> |
| 145 | <block wx:if="{{!only_pk && !def_pickpu_list}}"> | 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 | </block> | 147 | </block> |
| 148 | <block wx:else> | 148 | <block wx:else> |
| 149 | 149 | ||
| 150 | 150 | ||
| 151 | <block wx:if="{{only_pk.length && !only_pk.length}}"> | 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 | </block> | 153 | </block> |
| 154 | <block wx:else> | 154 | <block wx:else> |
| 155 | <block wx:if="{{def_pickpu_list && !def_pickpu_list.length}}"> | 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 | </block> | 157 | </block> |
| 158 | <block wx:else> | 158 | <block wx:else> |
| 159 | <block wx:if="{{!def_pick_store}}"> | 159 | <block wx:if="{{!def_pick_store}}"> |
| @@ -164,26 +164,26 @@ | @@ -164,26 +164,26 @@ | ||
| 164 | <block wx:if="{{sales_rules>=2}}"> | 164 | <block wx:if="{{sales_rules>=2}}"> |
| 165 | 165 | ||
| 166 | <block wx:if="{{!def_pick_store.CanOutQty}}"> | 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 | </block> | 168 | </block> |
| 169 | <block wx:else> | 169 | <block wx:else> |
| 170 | <view bindtap="addCart" data-openSpecModal_ind="2" | 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 | </block> | 172 | </block> |
| 173 | </block> | 173 | </block> |
| 174 | <!-- 线上销售 --> | 174 | <!-- 线上销售 --> |
| 175 | <block wx:else> | 175 | <block wx:else> |
| 176 | <block wx:if="{{data.store_count<=0}}"> | 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 | </block> | 178 | </block> |
| 179 | 179 | ||
| 180 | <block wx:elif="{{def_pick_store && def_pick_store.is_no_dis}}"> | 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 | </block> | 182 | </block> |
| 183 | 183 | ||
| 184 | <block wx:else> | 184 | <block wx:else> |
| 185 | <view bindtap="addCart"data-openSpecModal_ind="2" | 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 | </block> | 187 | </block> |
| 188 | </block> | 188 | </block> |
| 189 | 189 |
packageA/pages/prom_list/prom_list.wxss
| @@ -360,4 +360,5 @@ | @@ -360,4 +360,5 @@ | ||
| 360 | width: 58%; background-color: #adadad; | 360 | width: 58%; background-color: #adadad; |
| 361 | } | 361 | } |
| 362 | .no_store{color:#d60021; font-size: 26rpx;} | 362 | .no_store{color:#d60021; font-size: 26rpx;} |
| 363 | -.gray{color: #ccc;} | ||
| 364 | \ No newline at end of file | 363 | \ No newline at end of file |
| 364 | +.gray{color: #ccc;} | ||
| 365 | +.graying{ background-color: gainsboro } | ||
| 365 | \ No newline at end of file | 366 | \ No newline at end of file |
pages/cart/cart2/cart2.js
| @@ -3911,13 +3911,13 @@ Page({ | @@ -3911,13 +3911,13 @@ Page({ | ||
| 3911 | await getApp().request.promiseGet("/api/weshop/goods/getWareStorages", { | 3911 | await getApp().request.promiseGet("/api/weshop/goods/getWareStorages", { |
| 3912 | data: sto_rq | 3912 | data: sto_rq |
| 3913 | }).then(res => { | 3913 | }).then(res => { |
| 3914 | - if (res.data.code == 0) { | 3914 | + if (res.data.code == 0 && res.data.data.total > 0) { |
| 3915 | plist = res.data.data.pageData[0]; | 3915 | plist = res.data.data.pageData[0]; |
| 3916 | } | 3916 | } |
| 3917 | }) | 3917 | }) |
| 3918 | 3918 | ||
| 3919 | var isok = 1; | 3919 | var isok = 1; |
| 3920 | - if (goods_num > plist.CanOutQty - lock) { | 3920 | + if (!plist || goods_num > plist.CanOutQty - lock) { |
| 3921 | isok = 0; | 3921 | isok = 0; |
| 3922 | } | 3922 | } |
| 3923 | func(isok); | 3923 | func(isok); |
pages/cart/cart2/cart2.wxml
| @@ -109,7 +109,7 @@ | @@ -109,7 +109,7 @@ | ||
| 109 | </view> | 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 | is_cart="1" cart_index="{{index}}" | 113 | is_cart="1" cart_index="{{index}}" |
| 114 | all_collocation_list="{{item.collocationList}}" /> | 114 | all_collocation_list="{{item.collocationList}}" /> |
| 115 | 115 | ||
| @@ -377,7 +377,7 @@ | @@ -377,7 +377,7 @@ | ||
| 377 | </block> | 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 | <!-- 如果是等级卡的商品,会员没有注册,要提醒注册 --> |