diff --git a/packageB/components/catch/catch.js b/packageB/components/catch/catch.js index 5d4cd94..453b229 100644 --- a/packageB/components/catch/catch.js +++ b/packageB/components/catch/catch.js @@ -10,9 +10,7 @@ Component({ object:null, index:0, is_fw:0, - - barcode_canvas:null, - qrcode_canvas:null, + }, properties: { // 这里定义了innerText属性,属性值可以在组件使用时指定 @@ -21,23 +19,10 @@ Component({ }, methods: { - //关闭 - close: function (e) { - this.setData({q_show: 0,barcode_canvas:null,qrcode_canvas:null }); - this.triggerEvent('close',{},{bubbles: true}); - }, - - //打开 - open:function (e) { - this.data.index++; - var list=[{index:this.data.index }]; - - this.setData({q_show: 1,object:e,barcode_canvas:list,qrcode_canvas:list,is_fw:e.is_fw }); - var val=e.val; - - // barcode('barcode'+this.data.index,val, 620, 160,this); - qrcode('qrcode'+this.data.index, val, 520, 520,this); - } + go_url:function (e) { + var url=e.currentTarget.dataset.url; + getApp().goto(url); + } }, diff --git a/packageB/components/catch/catch.wxml b/packageB/components/catch/catch.wxml index 2710fdf..bcebe7a 100644 --- a/packageB/components/catch/catch.wxml +++ b/packageB/components/catch/catch.wxml @@ -4,7 +4,7 @@ - + 进店逛逛 diff --git a/packageB/pages/zuhegou/index/index.js b/packageB/pages/zuhegou/index/index.js index 3806d41..ee2ceb0 100644 --- a/packageB/pages/zuhegou/index/index.js +++ b/packageB/pages/zuhegou/index/index.js @@ -125,27 +125,12 @@ Page({ onLoad: function (options) { self = this; this.data.id = options.id; - - //获取活动信息 - var url = "/api/weshop/prom/zhbuy/get/" + os.stoid + "/" + options.id; - getApp().request.get(url, { - success: function (e) { - if (e.data.code == 0 && e.data.data) { - self.setData({act: e.data.data}); - if (e.data.data.is_end == 0) { - //-- 获取商品列表 -- - self.get_list(); - self.countDown(); - } - } else { - wx.showToast({ - title: e.data.msg, - icon: 'none', - duration: 2000 - }) - } - } - }); + //如果有会员的时候 + var userInfo = getApp().globalData.userInfo; + if(!userInfo){ + getApp().goto("/pages/togoin/togoin"); + return false; + } }, /** @@ -158,8 +143,50 @@ Page({ //如果有会员的时候 var userInfo = getApp().globalData.userInfo; if (userInfo) { + if(!th.data.is_get_act){ + //获取活动信息 + var url = "/api/weshop/prom/zhbuy/get/" + os.stoid + "/" + th.data.id+"/"+userInfo.user_id; + getApp().request.get(url, { + success: function (e) { + th.data.is_get_act=1; + if (e.data.code == 0 && e.data.data) { + self.setData({act: e.data.data}); + if(e.data.data.is_show!=1){ + th.setData({error:'活动未开启'}); + return false; + } + + if(ut.gettimestamp()=th.data.act.end_time ) { + return false; + } //获取头像的分享 th.get_head_temp(function () { var txt = th.data.act.zhprice + "元任选" + th.data.act.zhbuyqty + "件"; @@ -172,7 +199,7 @@ Page({ txt = "活动时间:" + start + " - " + end; imgDraw.views[3].text = txt; - var scene = th.data.gid + ""; + var scene = th.data.id + ""; var user_id = getApp().globalData.user_id; scene += "_" + user_id; ///二微码 @@ -187,105 +214,113 @@ Page({ } }) }) - }) - //获取用户的默认门店 - getApp().get_user_store(function (e) { - if (!e) { - th.data.fir_def_store = {}; //赋值空对象 - return false; - } - var ee = JSON.parse(JSON.stringify(e)); - var appd = getApp().globalData; - //-- 等待定位系统的开启 -- - th.waitfor(15, th.data.is_get_local_ok, function () { - var e = JSON.parse(JSON.stringify(ee)); - //如果有开启近距离的话,同时距离优不一样了 - if (that.data.lat != null) { - //如果经纬度有变化的话 - if (e && appd.lat == that.data.lat && appd.lon == that.data.lon && e.distance > 0) { - that.set_def_storage(e); - } else { - //要用接口是获取距离,js的计算不准 - getApp().request.promiseGet("/api/weshop/pickup/list", { - data: { - store_id: os.stoid, - pickup_id: e.pickup_id, - lat: th.data.lat, - lon: th.data.lon - }, - }).then(res => { - if (res.data.code == 0) { - e = res.data.data.pageData[0]; - if (e) { - e.is_no_dis = ee.is_no_dis; - appd.pk_store = e; - that.set_def_storage(e); + + //获取用户的默认门店 + getApp().get_user_store(function (e) { + if (!e) { + th.data.fir_def_store = {}; //赋值空对象 + return false; + } + var ee = JSON.parse(JSON.stringify(e)); + var appd = getApp().globalData; + //-- 等待定位系统的开启 -- + th.waitfor2(15, 'is_get_local_ok', function () { + + if(!th.data.is_get_local_ok) return false; + + var e = JSON.parse(JSON.stringify(ee)); + //如果有开启近距离的话,同时距离优不一样了 + if (that.data.lat != null) { + //如果经纬度有变化的话 + if (e && appd.lat == that.data.lat && appd.lon == that.data.lon && e.distance > 0) { + that.set_def_storage(e); + } else { + //要用接口是获取距离,js的计算不准 + getApp().request.promiseGet("/api/weshop/pickup/list", { + data: { + store_id: os.stoid, + pickup_id: e.pickup_id, + lat: th.data.lat, + lon: th.data.lon + }, + }).then(res => { + if (res.data.code == 0) { + e = res.data.data.pageData[0]; + if (e) { + e.is_no_dis = ee.is_no_dis; + appd.pk_store = e; + that.set_def_storage(e); + } + } + }) + } + appd.lat = that.data.lat; + appd.lon = that.data.lon; + } else { + if (e) { + e.distance = null; + that.set_def_storage(e); + } + } + }) + }); + + //----获取系统参数----- + getApp().getConfig2(function (e) { + ee.setData({ + bconfig: e, + sales_rules: e.sales_rules, + }); + //设置基本参数 + th.wait_for_store_config(e); + + var json_d = JSON.parse(e.switch_list); + ee.setData({ + store_config: e, + sys_switch: json_d, + is_closecoupon: json_d.is_closecoupon, + is_newsales_rules: json_d.is_newsales_rules, + is_open_offline: json_d.is_pricing_open, + sales_rules: e.sales_rules + }); + //-- 计算等级价相关 -- + var swithc_list = e.switch_list; + var sw_arr = JSON.parse(swithc_list); + //---如果后台又开等级卡的开关--- + if (sw_arr.rank_switch && sw_arr.rank_switch == "2") { + th.setData({rank_switch: true}); + //---回调卡的列表--- + th.getPlusCardType(function (ob) { + th.setData({card_list: ob.card_list}); + var user = getApp().globalData.userInfo; + if (!user) return false; + if (user.card_field && user['card_expiredate']) { + var str = user['card_expiredate'].replace(/-/g, '/'); + var end = new Date(str); + end = Date.parse(end) / 1000; + var now = ut.gettimestamp(); + //--- 判断是等级会员,且在有效期范围内 --- + if (user.card_field && now < end) { + var card_name = ob.name_map.get(user.card_field); + th.setData({ + card_field: user.card_field, + card_name: card_name, + card_list: ob.card_list + }); } - }) - } - appd.lat = that.data.lat; - appd.lon = that.data.lon; - } else { - if (e) { - e.distance = null; - that.set_def_storage(e); - } + } + + }) } - }) - }); - } + }, 1); - //----获取系统参数----- - getApp().getConfig2(function (e) { - ee.setData({ - bconfig: e, - sales_rules: e.sales_rules, - }); - //设置基本参数 - th.wait_for_store_config(e); - - var json_d = JSON.parse(e.switch_list); - ee.setData({ - store_config: e, - sys_switch: json_d, - is_closecoupon: json_d.is_closecoupon, - is_newsales_rules: json_d.is_newsales_rules, - is_open_offline: json_d.is_pricing_open, - sales_rules: e.sales_rules - }); + }) + + } - //-- 计算等级价相关 -- - var swithc_list = e.switch_list; - var sw_arr = JSON.parse(swithc_list); - //---如果后台又开等级卡的开关--- - if (sw_arr.rank_switch && sw_arr.rank_switch == "2") { - th.setData({rank_switch: true}); - //---回调卡的列表--- - th.getPlusCardType(function (ob) { - th.setData({card_list: ob.card_list}); - var user = getApp().globalData.userInfo; - if (!user) return false; - if (user.card_field && user['card_expiredate']) { - var str = user['card_expiredate'].replace(/-/g, '/'); - var end = new Date(str); - end = Date.parse(end) / 1000; - var now = ut.gettimestamp(); - //--- 判断是等级会员,且在有效期范围内 --- - if (user.card_field && now < end) { - var card_name = ob.name_map.get(user.card_field); - th.setData({ - card_field: user.card_field, - card_name: card_name, - card_list: ob.card_list - }); - } - } - }) - } - }, 1); }, @@ -426,24 +461,44 @@ Page({ return false; } else { th.setData({is_no_pipei: 0}); - th.add_cart_func(); + th.check_is_in_cart(function () { + th.add_cart_func(); + }) } } else { + + var txt = "list[" + index + "].haveAdded"; + var txt1 = "list[" + index + "].num"; + var txt2 = "list[" + index + "].showNum"; + th.data.sele_g = this.data.list[index]; + + wx.showModal({ title: '温馨提示', content: '确定将该商品移出购物车?', success (res) { if (res.confirm) { console.log('用户点击确定'); - title = '移除购物车成功'; - th.setData({ - [txt1]: 1, - [txt2]: false, - [txt]: !haveAdded, - }); - wx.showToast({ - title: title, - icon: 'success', + + var url = '/api/weshop/cart/del/' + os.stoid + '/' + th.data.sele_g.cart_id; + getApp().request.delete(url, { + success:function (res) { + + if(res.data.code==0) { + title = '移除购物车成功'; + th.setData({ + [txt1]: 1, + [txt2]: false, + [txt]: false, + }); + wx.showToast({ + title: title, + icon: 'success', + }); + + th.re_sum_price(); + } + } }); } else if (res.cancel) { console.log('用户点击取消') @@ -469,6 +524,9 @@ Page({ return false; } + if(this.data.changing) return false; + this.data.changing=1; + var index = e.currentTarget.dataset.index; this.data.sele_g = this.data.list[index]; this.data.sele_index=index; @@ -503,6 +561,8 @@ Page({ return false; } + if(th.data.changing) return false; + th.data.changing=1; th.data.sele_g = item; th.data.sele_index = index; th.data.goodsInputNum = check_num; @@ -510,21 +570,34 @@ Page({ return false; } + var txt = "list[" + index + "].haveAdded"; + var txt1 = "list[" + index + "].num"; + var txt2 = "list[" + index + "].showNum"; + wx.showModal({ title: '温馨提示', content: '确定将该商品移出购物车?', success (res) { if (res.confirm) { - - self.setData({ - showNum: false, - haveAdded: false, - }); - wx.showToast({ - title: '移除购物车成功', - icon: 'success', + var url = '/api/weshop/cart/del/' + os.stoid + '/' + item.cart_id; + getApp().request.delete(url, { + success:function (res) { + if(res.data.code==0) { + var title = '移除购物车成功'; + th.setData({ + [txt1]: 1, + [txt2]: false, + [txt]: false, + }); + wx.showToast({ + title: title, + icon: 'success', + }); + th.re_sum_price();//重新统计数量和总金额 + } + } }); - th.re_sum_price();//重新统计数量和总金额 + } else if (res.cancel) { console.log('用户点击取消') self.setData({ @@ -639,19 +712,19 @@ Page({ //------定时等待某个值,有值才进行运算-------- - waitfor: function (n, pop_value, func) { + waitfor2: function (n, pop_value, func) { var th = this; if (n <= 0) { func() return false } - if (pop_value) { + if (th.data[pop_value]) { func(); return false; } setTimeout(function () { --n; - th.waitfor(n, pop_value, func) + th.waitfor2(n, pop_value, func) }, 1000); }, @@ -808,7 +881,7 @@ Page({ th.data.adding = 0; return getApp().my_warnning("库存不足!", 0, th); } - if (th.data.goodsInputNum > o.buyqty) { + if (th.data.goodsInputNum > o.buyqty && o.buyqty>0) { th.data.adding = 0; return getApp().my_warnning("超出商品活动限购!", 0, th); } @@ -953,10 +1026,11 @@ Page({ //---------拿出门店分类和门店------------ get_sto(e) { var th = this; - this.waitfor(15, th.data.is_get_local_ok, function () { + this.waitfor2(15, 'is_get_local_ok', function () { if (!th.data.sele_g) return false; var dd = null; - var g_distr_type = th.data.sele_g.distr_type; + var g_distr_type =0; + if(th.data.sele_g) g_distr_type=th.data.sele_g.distr_type; if (g_distr_type != 0) { dd = { store_id: os.stoid, @@ -1452,8 +1526,6 @@ Page({ var txt3 = "list[" + index + "].cart_id"; var txt4 = "list[" + index + "].current_price"; - - //----先看会员在购物车中是否加入了该商品----- getApp().request.get("/api/weshop/cart/page", { data: { @@ -1573,12 +1645,17 @@ Page({ } all_price = aprice; } - + this.data.changing=0; this.setData({ all_price: all_price, need_to_buy: need_to_buy, all_num: all_num }) + + if(all_num<=0){ + th.data.sele_store = 0; //什么都没有选,就没有选择了门店 + } + }, go_cart:function () { diff --git a/packageB/pages/zuhegou/index/index.wxml b/packageB/pages/zuhegou/index/index.wxml index 5b59aa2..55fa95d 100644 --- a/packageB/pages/zuhegou/index/index.wxml +++ b/packageB/pages/zuhegou/index/index.wxml @@ -1,5 +1,5 @@ - + 以下商品{{act.zhprice}}元任选{{act.zhbuyqty}}件 规则详情 @@ -149,7 +149,7 @@ - +{{error}} diff --git a/pages/cart/cart/cart.js b/pages/cart/cart/cart.js index 6774178..07e3e73 100644 --- a/pages/cart/cart/cart.js +++ b/pages/cart/cart/cart.js @@ -4,8 +4,9 @@ var t = getApp(), os=oo, app = getApp(), rq = t.request, - ut = require("../../../utils/util.js"); -var regeneratorRuntime = require('../../../utils/runtime.js'); + ut = require("../../../utils/util.js"), + zh_calc = require("zh_calculate.js"); + var regeneratorRuntime = require('../../../utils/runtime.js'); Page({ data: { @@ -32,6 +33,8 @@ Page({ service_data:null, max_sw_height:200, + + zhhe_prom:[], //组合活动需要显示差多少件 }, onLoad: function() { var a = this,ee=a; @@ -49,7 +52,7 @@ Page({ //判断是否有登录 t.auth.hadAuth() && t.getUserInfo(function() { - a.getCardList(); + //a.getCardList(); }); }, @@ -139,7 +142,9 @@ Page({ clearInterval(i); } }, - + onUnLoad(){ + getApp().globalData.cart_zh_act=null; + }, //-------------获取购物车列表,要安装门店进行分类订单----------- getCardList: function() { var th = this; @@ -291,7 +296,42 @@ Page({ } }) if (!isok) continue; - } else if(item.prom_type == 0) { + } + else if (item.prom_type == 7) { + var isok = 1; + //如果有组合购 + var url="/api/weshop/prom/zhbuy/get/"+os.stoid+"/"+item.prom_id+"/"+getApp().globalData.userInfo.user_id; + await getApp().request.promiseGet(url, {}).then(res => { + if(res.data.code==0 && res.data.data){ + if(res.data.data.is_show!=1){ + return false; + } + //如果活动已经结束 + if(res.data.data.is_end==1){ + isok=0; + } + //已经结束 + if(ut.gettimestamp()>res.data.data.end_time){ + isok=0; + } + //还未开始 + if(ut.gettimestamp() { if (res.data.code == 0) { @@ -306,7 +346,6 @@ Page({ } } }) - } all_num += item.goods_num; @@ -351,9 +390,7 @@ Page({ } } - - - if(th.data.is_open_offline && th.data.is_open_offline>0){ + if(th.data.is_open_offline && th.data.is_open_offline>0 && th.data.sales_rules==2){ //-- 此时要实时更新线下取价价格 -- for(var i=0;i { + if (ut.ajax_ok(res)) { + gdlist = res.data.data.pageData; + } + }) + //获取活动需要的商品列表 + u_item.zh_prom_goods[h_item.prom_id]=gdlist; + } + } - th.setData({ + + th.setData({ requestData: arr, all_num: all_num, is_load: 1, @@ -407,8 +474,7 @@ Page({ }); continue; } - - + //如果商品下架了,或者商品是赠品,一开始都要清除 if (good.is_show == 0) { var url = '/api/weshop/cart/del/' + oo.stoid + '/' + item.id; @@ -482,7 +548,7 @@ Page({ var wlist=""; for(var i in list.goods){ //如果商品有促销活动 - if(list.goods[i].prom_type>0) continue; + if(list.goods[i].prom_type>0 || list.goods[i].prom_type==7 ) continue; wlist+= encodeURIComponent(list.goods[i].erpwareid)+","; } wlist=ut.sub_last(wlist); @@ -712,6 +778,7 @@ Page({ if(dda && dda.length>0){ for (var i = 0; i < dda.length; i++) { var item = dda[i].goods; + if (!e.data.checkAllToggle) { var txt = "requestData[" + i + "].selected"; e.setData({ @@ -721,6 +788,12 @@ Page({ var fir = 0; for (var j = 0; j < item.length; j++) { if(item[j].is_gift) continue; + + var obj=JSON.parse(JSON.stringify(item[j])); + //计算之前先移除 + zh_calc.remove_zhprom(dda,i,obj); + + if (fir == 0) { fir = item[j].distr_type; } else { @@ -730,16 +803,24 @@ Page({ break; } } - var txt = "requestData[" + i + "].goods[" + j + "].selected" - e.setData({ + var txt = "requestData[" + i + "].goods[" + j + "].selected"; + + if(e.data.checkAllToggle) obj.goods_num=0; + zh_calc.add_zhprom(dda,i,obj); + + e.setData({ [txt]: !e.data.checkAllToggle, }) + if (!e.data.checkAllToggle) { - tfeel += item[j].goods_num * item[j].goods_price; + //组合购的金额要另外算 + if(item[j].prom_type!=7) + tfeel += item[j].goods_num * item[j].goods_price; t_num += item[j].goods_num; } - } - } + } + } + if (text_arr != "") { wx.showModal({ @@ -748,6 +829,13 @@ Page({ }); return false; } else { + + for (var i = 0; i < dda.length; i++) { + //总的价格,把组合商品的价格拿出来 + var zh_calc_res=zh_calc.calculate_zh(dda,i,this); + tfeel+=zh_calc_res.tfeel; + } + e.setData({ checkAllToggle: !e.data.checkAllToggle, total_fee: tfeel.toFixed(2), @@ -1031,7 +1119,6 @@ Page({ //-- 购物车 -- if(car && car.length>0){ for (var a = 0; a < car.length; a++) { - var c_item=car[a]; var item = car[a].goods, is_s_sele = 1; var offline_price=0; @@ -1039,21 +1126,38 @@ Page({ for (var c = 0; c < item.length; c++) { if(item[c].is_gift) continue; all_num += item[c].goods_num; + + //不管怎么样都要移出去 + var obj=JSON.parse(JSON.stringify(item[c])); + zh_calc.remove_zhprom(car,a,obj); if (item[c].selected == 0) { ischeck = 0; is_s_sele = 0; + if(item[c].prom_type==7) { + obj.goods_num=0; + zh_calc.add_zhprom(car,a,obj); + } } else { - tfeel += item[c].goods_num * item[c].goods_price; + if(item[c].prom_type==7){ + //先把商品放入组合计算的专用的区域 + zh_calc.add_zhprom(car,a,obj); + }else{ + tfeel += item[c].goods_num * item[c].goods_price; + } t_num += item[c].goods_num; } //-- 如果这个商品是线下取价的时候 -- - if(item[c].is_offline){ + if(item[c].is_offline && item[c].prom_type!=7){ offline_price+= (item[c].goods_price-item[c].offline_price)*item[c].goods_num; offline_num+=item[c].goods_num; } - } + //总的价格,把组合商品的价格拿出来 + var zh_calc_res=zh_calc.calculate_zh(car,a,th); + tfeel+=zh_calc_res.tfeel; + offline_price+=zh_calc_res.offline_price; + offline_num+=zh_calc_res.offline_num; var txt = "requestData[" + a + "].selected"; th.setData({ @@ -1358,7 +1462,10 @@ Page({ ob.code=-1;ob.CanOutQty=0;func(ob); return false; } - if( t.goods_num>plist.CanOutQty-lock){ + var c_num=t.goods_num; + if(t.need_downlow_num) c_num=t.need_downlow_num; + + if( c_num>plist.CanOutQty-lock){ ob.code=-1; ob.CanOutQty=plist.CanOutQty-lock if(ob.CanOutQty<0) ob.CanOutQty=0; @@ -1480,7 +1587,7 @@ Page({ glist += i_arr[j].goods_id + ","; ab = 1; //--普通商品,如果有开启线下库存的功能,要调用线下库存进行计算,赠品不要进行调用线下库存--- - if ((i_arr[j].prom_type == 0 || i_arr[j].prom_type == 3 || i_arr[j].prom_type == 5) && th.data.sales_rules == 2 && i_arr[j].is_gift != 1) { + if ((i_arr[j].prom_type == 0 || i_arr[j].prom_type == 3 || i_arr[j].prom_type == 5 || i_arr[j].need_downlow_num ) && th.data.sales_rules == 2 && i_arr[j].is_gift != 1) { //--获取商品的线下商品ID-- var gd = null; await getApp().request.promiseGet("/api/weshop/goods/get/" + oo.stoid + "/" + i_arr[j].goods_id, {}).then(res => { @@ -2072,4 +2179,5 @@ Page({ var url=e.currentTarget.dataset.url; getApp().goto(url); } + }); \ No newline at end of file diff --git a/pages/cart/cart/cart.wxml b/pages/cart/cart/cart.wxml index e48c400..50880fc 100644 --- a/pages/cart/cart/cart.wxml +++ b/pages/cart/cart/cart.wxml @@ -88,6 +88,16 @@ 物流 + + + 还需购买{{items.zhqty-items.goods_num}}件 + + + 需购买{{items.zhqty}}件 + + + + @@ -144,6 +154,15 @@ + + + + {{item.title}} + 去凑单 + + + + 当前{{item.offline_num}}件商品,可使用{{item.offline_price}}元店铺优惠 diff --git a/pages/cart/cart/cart.wxss b/pages/cart/cart/cart.wxss index c792aeb..ad51080 100644 --- a/pages/cart/cart/cart.wxss +++ b/pages/cart/cart/cart.wxss @@ -378,3 +378,10 @@ page { /* background-color: #ddd; */ color: #ccc; } + +.abs2{ + position: absolute; z-index: 1000; + width: 100%;height: 30rpx; background-color: rgba(9,9,9,0.5); + text-align: center; line-height: 30rpx; + left: 0;bottom: 0;color: #fff; font-size: 20rpx; +} diff --git a/pages/cart/cart/zh_calculate.js b/pages/cart/cart/zh_calculate.js new file mode 100644 index 0000000..b55ff21 --- /dev/null +++ b/pages/cart/cart/zh_calculate.js @@ -0,0 +1,295 @@ +module.exports = { + //辅助数组添加元素功能 + find_in_add: function(list, ele) { + for (var i in list) { + var item = list[i]; + if (item.goods_id == ele.goods_id) { + return false; + } + } + list.push(ele); + }, + //辅助数组添加元素功能 + find_in_remove: function(list, ele) { + for (var i in list) { + var item = list[i]; + if (item.goods_id == ele.goods_id) { + list.splice(i, 1); + } + } + }, + + //主要是把组合购的商品分离出来 + add_zhprom: function(car, a, ele) { + var point = car[a]; + if (point.zh_map) { + if (point.zh_map[ele.prom_id]) { + this.find_in_add(point.zh_map[ele.prom_id].goods, ele); + } else { + point.zh_map[ele.prom_id] = { + goods: [], + act: ele.act + }; + point.zh_map[ele.prom_id].goods.push(ele); + } + } else { + point.zh_map = {}; + point.zh_map[ele.prom_id] = { + goods: [], + act: ele.act + }; + point.zh_map[ele.prom_id].goods.push(ele); + } + }, + //未选中的商品,要从中剔除 + remove_zhprom: function(car, a, ele) { + var point = car[a]; + if (point.zh_map) { + if (point.zh_map[ele.prom_id]) { + this.find_in_remove(point.zh_map[ele.prom_id].goods, ele); + } + } + }, + + //把组合购的商品价格计算出来 + calculate_zh: function(car, a, th) { + var car_item = car[a]; + var tfeel = 0, + offline_price = 0, + offline_num = 0; + var txt = "requestData[" + a + "].need_list"; + if (!car_item.zh_map) { + var res = { + tfeel: tfeel, + offline_price: offline_price, + offline_num: offline_num + }; + th.setData({ + [txt]: null + }); + return res; + } + + //活动的列表都存储在这里面,可以快速查询 + var zh_prom_goods=car_item.zh_prom_goods; + //因为可能有多个组合购的活动 + for (var i in car_item.zh_map) { + var bitem = car_item.zh_map[i]; + var act = bitem.act; //获取到组合购的详情 + var all_num = 0; //商品数量之和 + var all_price = 0; + var need_to_buy = 0; + var all_zhqty = 0; //所有商品要求起购数之和 + var no_in_arr = []; //剩余的未加入组合购 + + var title =""; //提示语; + //var goods = bitem.goods; + var goods = zh_prom_goods[act.id]; + //寻找一下 + function get_num(ite) { + for (let v1 in car_item.goods) { + var vh = car_item.goods[v1]; + if (vh.goods_id == ite.goods_id) { + return vh; + } + } + return 0; + } + + for (var i in goods) { + var item = goods[i]; + item.num = get_num(item).goods_num; + item.goods_price=get_num(item).goods_price; + item.offline_price=get_num(item).offline_price; + + if (item.num) { + all_num += item.num; + all_price += item.num * item.goods_price; + //当有起购数的控制的时候 + if (item.zhqty) { + all_zhqty += item.zhqty; + if (item.num < item.zhqty) { + need_to_buy += item.zhqty - item.num; + } + if (item.num > item.zhqty) { + for (var i = 0; i < item.num - item.zhqty; i++) { + no_in_arr.push({ + price: item.goods_price,offline_price:item.offline_price + }) + } + } + } else { + for (var j = 0; j < item.num; j++) { + no_in_arr.push({ + price: item.goods_price,offline_price:item.offline_price + }) + } + } + } else { + if (item.zhqty) { + title="必买商品未加购,下单立享【"+act.zhprice+"元任选"+act.zhbuyqty+"件】"; + need_to_buy += item.zhqty; + } + } + } + + //当满足组合的要求:总数要满足,起购数要满足 + if (all_num >= act.zhbuyqty && !need_to_buy) { + function sortData(a, b) { + return a.price - b.price + } + + no_in_arr.sort(sortData); + var aprice = act.zhprice; + if (act.zhbuyqty > all_zhqty) { + for (var n = 0; n < act.zhbuyqty; n++) { + no_in_arr.pop(); + } + } + //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增 + if (act.is_bz && no_in_arr.length > act.zhbuyqty) { + //看一下是几倍 + var be = parseInt(no_in_arr / act.zhbuyqty); + aprice += be * act.zhprice; + for (var m = 0; m < be * act.zhbuyqty; m++) { + no_in_arr.pop(); + } + } + //算一下剩余的钱 + if (no_in_arr.length) { + for (var ii in no_in_arr) { + var item = no_in_arr[ii]; + var gitem=get_num(item); + if(gitem) { + if (!gitem.need_downlow_num) { + gitem.need_downlow_num = 1; + } + else { + gitem.need_downlow_num++; + } + aprice += item.price; + if (item.offline_price) { + offline_price += item.goods_price - item.offline_price; + offline_num += 1; + } + } + } + } + all_price = aprice; + + //-- 设置还需要购买多少件,享受活动,前段显示 -- + var need_to = car_item.need_list; + var index = this.find_need_to(need_to, act); + if (index > -1) { + need_to.splice(index, 1); + th.setData({ + [txt]: need_to + }); + } + + } else { + for (var ii in goods) { + var item = goods[ii]; + + + var gitem=get_num(item); + if(gitem) { + gitem.need_downlow_num = item.num; + + if (item.offline_price) { + offline_price += (item[ii].goods_price - item[ii].offline_price) * item[ii] + .goods_num; + offline_num += item[ii].goods_num; + } + } + } + if (act.zhbuyqty - all_num > need_to_buy) { + need_to_buy = act.zhbuyqty - all_num; + } + //-- 设置还需要购买多少件,享受活动,前段显示 -- + var need_to = car_item.need_list; + if (all_num <= 0) { + var index = this.find_need_to(need_to, act); + if (index > -1) { + need_to.splice(index, 1); + th.setData({ + [txt]: need_to + }); + } + } else { + var index = this.find_need_to(need_to, act); + if(title=='') + title = "再买" + need_to_buy + "件,下单立享【" + act.zhprice + "元任选" + act.zhbuyqty + "件】"; + if (index != -1) { + need_to[index].title = title; + } else { + if (!need_to) need_to = []; + var it = { + id: act.id, + pickup_id: car_item.pickup_id, + title: title + }; + need_to.push(it); + } + th.setData({ + [txt]: need_to + }); + } + + } + tfeel += all_price; + } + + console.log('nyf111'); + console.log(car_item); + + + var res = { + tfeel: tfeel, + offline_price: offline_price, + offline_num: offline_num + }; + return res; + + + }, + + find_need_to: function(list, iter) { + if (!list || list.length <= 0) return -1; + for (var i in list) { + var item = list[i]; + if (item.id == iter.id) { + return i; + } + } + return -1; + }, + + //筛选组合购,纯粹的数组按活动id分组 + find_split: function(arr) { + //过滤只有团购的商品 + var oarr = arr.goods.filter(function(ele) { + return ele.prom_type == 7 + }) + if(!oarr || oarr.length==0) return null; + //看一下有多少个不同的团购 + var map = {},dest = []; + for (var i = 0; i < oarr.length; i++) { + var ai = oarr[i]; + var index=map[ai.prom_id] + if (!index) { + dest.push({ + prom_id: ai.prom_id, + data: [ai] + }); + map[ai.prom_id]=dest.length; //存储下标 + } else { + var dj = dest[index-1]; + dj.data.push(ai); + } + } + return dest; + } + + +} diff --git a/pages/cart/cart2/cart2.js b/pages/cart/cart2/cart2.js index c30b87a..874de7d 100644 --- a/pages/cart/cart2/cart2.js +++ b/pages/cart/cart2/cart2.js @@ -1,3463 +1,3748 @@ -var t = getApp(),app=t, a = t.request, e = require("../../../utils/common.js"), - s = require("../../../utils/util.js"),ut=s, o = require("../../../utils/md5.js"), to = getApp(); -var oo=t.globalData.setting,os=oo; +var t = getApp(), app = t, a = t.request, e = require("../../../utils/common.js"), + s = require("../../../utils/util.js"), ut = s, o = require("../../../utils/md5.js"), to = getApp(); +var oo = t.globalData.setting, os = oo; var regeneratorRuntime = require('../../../utils/runtime.js'); var util_pay = require("../../../utils/pay.js"); +var zh_calc = require("zh_calculate.js"); + +Page({ + data: { + url: t.globalData.setting.url, + resourceUrl: t.globalData.setting.resourceUrl, + imgUrl: t.globalData.setting.imghost, + goods: null, + order: null, + orderPrices: null, + coupons: null, + coupon: null, + invoiceToggle: !0, + payWithUserMoney: !0, + payWithPoints: !0, + maxWord: 0, + enterAddressPage: !1, + firstEnter: !0, + //页面获取的参数 + param: null, + //提交订单的格式 + formData: { + order_amount: 0,//支付金额 + total_amount: 0,//总价 + all_price: 0,//商品卖的总价 + pay_points: 0,//使用积分 + user_money: 0,//使用余额 + couponCode: "",//使用优惠券(多单就用逗号隔开) + shipping_price: 0,//物流费用 + }, + /*-----------当是购物车结算的时候-------------*/ + cartlist: null, + old_cartlist: null, + cartlist_y: null, //购物车原始列表 + js_use_money: 0, //是否使用余额 + is_all_zt: 1, //是否全部都是自提 + + /*----------------立即购买---------------------*/ + is_b_now: 0, //0是购物车结算 1立即购买 + bn_goods: null, //立即购买时候的调用商品 + bn_use_money: 0,//是否使用余额 + bn_exp_type: 1, //0是物流 1自提 + bn_pick: 0, //选择的门店 + bn_pickname: "", //选择的门店名称 + bn_t_exp_t: 0, //判断商品和门店一起决定的物流自提的方式0 都可以 1自提 2物流 + + bn_plus_cut_price: 0, //显示等级卡会优惠多少钱 + /*------------------------*/ + user_addr: null,//物流 + userinfo: null, //获取会员 + /*----------物流选择--------*/ + wu_arr: null, + index: 0, + w_sele_index: 0, + + //判断页面是返回回来的还是 首次进入的 + isclose: 1, + //申请提现的金额 + txmon: 0, + yuer: 0, + //提交中,不重复提交 + is_summit_ing: 0, + //--更优惠券抵用有关,立即购买的,如果是购物车,就要把相应的值,写入cartlist数组中-- + ckeck_quan_price: 0, + check_quan_price_list: '', + check_quan_ware_list: '', + + // 设计一个数组来存放已经选择了的券编号,coupon_no是券号,money是面值,coupon_price是真正优惠的价格,数组的下标是pickid + //using_quan[11]={coupon_no:"1212121",money:"20",coupon_price:"45"} + using_quan: {}, + open_quan: 0, + //选择的券列表 + selected_quan_list: null, + //选择的券的门店 + selected_quan_pick: null, + is_close_quan: 0, + disabled: 0, + open_express: 0,//控制选择物流名列表 的属性 + + is_express: 0, //选中物流的属性 + expres_name: "", //点击选定 + isopen: 0, //券的说明 + is_coupon: null, //选择券的控制属性 + is_shipping_code: "",//插入用户默认地址 + wu_arr_txt: "", //要更新的物流的字段 + + sales_rules: 1, //默认是显示线上库存 + isget_by_quan: {}, //是否调用了接口获取包邮券 + get_by_quan_list: null, //立即购买的 + get_by_quan_list_cart: {}, //购物车的 + by_quan_list_cart: null, //点击选择的包邮列表 + + //如果是全场包邮了,或者是全场不包邮了,就不要选包邮券 + is_no_by: {}, + is_by: {}, + is_quan_by: {}, + //--购买赠送的商品-- + buy_now_gift_goods: null, + //--订单优惠-- + order_prom: {}, + //-- 购物车优惠活动 -- + prom_goods_map: {}, + //-- order_prom_list -- + order_prom_list_cart: null, + + ispt_goods: 0, //是否平摊至单品,0要平摊 1不平摊 + + rank_switch: 0, //是不是开同等级卡 + show_card: null, //显示的等级卡 + card_name: '', //显示的卡的名称 + card_cut_price: null,//减价多少钱 + + show_submit: 0, //提交按钮变正常显示 + is_get_offline: 1, + + tabs: ['门店自提', '快递邮寄'], + currentTabIndex: 1, + }, + onLoad: function (t) { + wx.setNavigationBarTitle({title: "填写订单",}) + var th = this; + this.setData({is_b_now: t.is_bnow == undefined ? 0 : t.is_bnow,}); + th.data.param = t; + //清理一下,确保最新的系统配置 + getApp().globalData.config2 = null; + //清空is_pick_up + getApp().request.put("/api/weshop/useraddress/updatePickUp", { + data: {user_id: getApp().globalData.user_id, is_pickup: 0}, + success: function (s) { + } + }); + + + }, + onUnload: function () { + this.setData({isclose: 1}) + }, + onHide: function () { + this.setData({ + isget_by_quan: {}, + is_no_by: {}, + is_by: {} + }) + }, + + //----------子页返回父页触发---------- + onShow: function () { + var th = this; + th.setData({show_submit: 0}); //让提交先掩藏 + th.data.g_cart_q_time = null; + + if (th.data.isclose == 0) { + wx.navigateTo({ + url: "/pages/index/index/index" + }) + + } else { + this.getuser_addr(function (ie) { + + console.log("getuser_addr") + console.log(ie) + + //地址切换要把包邮券清空 + if (!th.data.user_addr || !ie || th.data.user_addr.address_id != ie.address_id) { + var using_quan = th.data.using_quan; + for (var i in using_quan) { + var item = using_quan[i]; + if (item.isby == 1) { + var ob = {}, txt = "using_quan[" + i + "]"; + ob[txt] = {}; + th.setData(ob); + } + } + th.data.isget_by_quan = {}; + } + + + th.data.prom_goods_map = {}; + th.data.is_summit_ing = 0; + //更换地址回来要重新调用计算价钱的接口 + if (!th.data.user_addr || th.data.user_addr.address_id != ie.address_id) { + th.setData({user_addr: ie}); + if (th.data.is_b_now == 1) { + if (th.data.bn_goods) { + th.setData({add_back: 1}); + //th.calculatePrice2(); + } + } else { + if (th.data.cartlist) { + th.setData({add_back: 1}); + //th.calculatePrice(); + } + } + } else { + th.setData({user_addr: ie}); + } + var going = 0; + + + //使用计时器,避免空现象 + /*--- + var jishi= setInterval(function () { + if (th.data.is_b_now == 1 && going==0) { + if(th.data.bn_goods) { + th.calculatePrice2();going=1;clearInterval(jishi); + } + }else if(going==0) { + if (th.data.cartlist){ + th.calculatePrice();going = 1; clearInterval(jishi); + } + } + },500)--*/ + + }); + var is_card_back = getApp().globalData.is_card_back; + //--更新默认地址--,看一下是不是跳到地址页面,同时也不是购买等级卡返回的,这里很重要,否则会重新更新收货物流公司 + if (!getApp().globalData.is_cart_old && !is_card_back && !getApp().globalData.plus_buy_back) { + this.update_code(); + } else { + getApp().globalData.is_cart_old = 0; + getApp().globalData.plus_buy_back = 0; + } + } + + //先获取是否有关闭使用优惠券 + getApp().getConfig2(function (ee) { + var json_d = JSON.parse(ee.switch_list); + th.data.json_d = json_d; + th.data.ispt_goods = json_d.ispt_goods; //是不是平摊到单品的控制参数赋值 + var is_default_logistics = json_d.is_default_logistics; + + th.setData({ + is_close_quan: json_d.is_close_quan, + sales_rules: ee.sales_rules, + rank_switch: json_d.rank_switch, + is_default_logistics: is_default_logistics + }); + + var rank_switch = json_d.rank_switch; + var max_price = -1; + var show_card = null; + var name = ""; + //如果有开等级卡的时候, + //因为都是调接口,要返回在计算 + if (rank_switch == 2) { + //-- 获取所有的等级卡, -- + getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?storeId=" + os.stoid, + {}).then(res => { + if (res.data.code == 0) { + var plusCard = res.data.data; + //-- 循环判断,拿到最贵的那张卡 -- + for (var ih in plusCard) { + if (plusCard[ih].IsStopBuy == true) { + continue; + } + if (max_price < 0) { + max_price = plusCard[ih].CardFee; + name = 'card' + plusCard[ih]['CorrPrice']; + show_card = plusCard[ih]; + } else { + if (max_price < plusCard[ih].CardFee) { + max_price = plusCard[ih].CardFee; + name = 'card' + plusCard[ih]['CorrPrice']; + show_card = plusCard[ih]; + } + } + } + + if (show_card) { + name = name.toLowerCase(); + th.setData({card_name: name, show_card: show_card}) + } + } + //-----先获取物流,再获取用户信息,再展示页面----- + th.get_wuliu(th.get_info(th.show_page)); + }) + } else { + //-----先获取物流,再获取用户信息,再展示页面----- + th.get_wuliu(th.get_info(th.show_page)); + } + + }, 1); + + //值在这里换 + getApp().globalData.plus_buy_back = 0; + }, + + //-------------------获取物流--------------- + get_wuliu(func) { + var th = this; + to.getwuliu(function (e) { + //系统是是否开启了默认的物流 + if (th.data.is_default_logistics) { + //如果第一个不是开启默认,说明要让用户自己选 + if (!e[0].is_default) { + th.setData({is_default_logistics: 0}); + } + } + th.setData({wu_arr: e}) + typeof func == "function" && func(); + }) + }, + //------获取会员信息-----先获取用户信息,在进行下一步--- + get_info: function (func) { + var user_id = t.globalData.user_id; + to.auth.get_u(func); + }, + + //------获取会员收货地址----- + getuser_addr: function (func) { + var th = this; + a.get("/api/weshop/useraddress/page", { + data: {user_id: to.globalData.user_id, store_id: oo.stoid, pageSize: 600, t: Math.random()}, + success: function (su) { + /*--- + var user_addr=[ + { 'address_id': 882, 'user_id': 2661, 'consignee': '测试测试测', 'province': 3102, 'city': 3431, 'district': 3466, + 'address': 'ed', 'more_address': '山西-长治市-襄垣县-虎(音si)亭镇', 'mobile': 13012345678,'is_default':1}, + ];---*/ + var item = null; + if (su.data.code == 0 && su.data.data && su.data.data.pageData) { + var user_addr = su.data.data.pageData; + var def_item = null; + for (var i = 0; i < user_addr.length; i++) { + if (user_addr[i]['is_default'] == 1) { + def_item = user_addr[i]; + } + if (user_addr[i]['is_pickup'] == 1) { + item = user_addr[i]; + } + } + + if (item == null) item = def_item; + if (item == null) item = user_addr[0]; + } + + if (item == undefined) item = null; + if (!item) th.setData({user_addr: null}); //地址为空的时候,要清空,因为返回的时候,有缓存 + + func(item); + } + }); + }, + + //----------------展示页面,是再获取用户信息之后-------------- + show_page: function () { + var th = this, ta = this.data.param; + //th.setData({ userinfo: getApp().globalData.userInfo,}); //这个余额被缓存了 + + //会员的信息,要获取最新 + var user = getApp().globalData.userInfo; + getApp().request.get("/api/weshop/users/get/" + oo.stoid + "/" + user.user_id, { + data: {r: Math.random()}, + success: function (e) { + getApp().globalData.userInfo = e.data.data; + th.setData({userinfo: e.data.data}); + + //选获取地址 + th.getuser_addr(function (addr) { + th.setData({user_addr: addr}); + //--------------------------立即购买------------------ + if (ta.is_bnow == 1) { + //读取门店 + to.get_allsto(function (e) { + th.setData({allsto: e}); + //获取立即购买的商品信息 + th.get_buy_goods(ta.goods_id); + }); + } else { + //------------------------购物车结算---------------------- + //读取门店 + to.get_allsto(function (e) { + th.setData({allsto: e}); + //-------获取购物车已经选择的商品-------- + th.get_cart(); + }) + } + }); + + //获取提现金额 + getApp().request.get("/api/weshop/withdrawals/summoney", { + data: {user_id: to.globalData.user_id, store_id: oo.stoid, status: 0}, + success: function (su) { + if (su.data.code == 0) { + var yuer = parseFloat(th.data.userinfo.user_money - + (th.data.userinfo.frozen_money > 0 ? th.data.userinfo.frozen_money : 0) - su.data.data.summoney).toFixed(2); + th.setData({txmon: su.data.data.summoney, yuer: yuer}); + } + } + }); + + }, + }); + + }, + + + //-----真的获取购物车,入口-------- + get_cart: function () { + var th = this, app = getApp(); + a.get("/api/weshop/cart/list", { + data: { + user_id: to.globalData.user_id, selected: 1, state: 0, + store_id: oo.stoid, pageSize: 600 + }, + success: async function (su) { + //按门店分类的数组 + var arr = new Array(); + var carr = su.data.data.pageData; + th.data.cartlist_y = carr; //存储原始购物车列表 + + //---是不是购买等级卡成功的返回---等级卡显示的判断--- + var is_card_back = getApp().globalData.is_card_back; + + for (var i = 0; i < carr.length; i++) { + var item1 = carr[i]; + //要把优惠活动加入,prom_goods_map中,赠品不要运算 + if (item1.prom_type == 3 && item1.is_gift != 1) { + await th.add_prom_goods_map(item1); + } + + //要把组合购的东西拿出来算一下 + if (item1.prom_type == 7) { + var isok = 1; + //如果有组合购 + var url = "/api/weshop/prom/zhbuy/get/" + os.stoid + "/" + item1.prom_id+'/'+getApp().globalData.userInfo.user_id; + await getApp().request.promiseGet(url, {}).then(res => { + if (res.data.code == 0 && res.data.data) { + //如果活动已经结束 + if (res.data.data.is_end == 1) { + isok = 0; + } + if (ut.gettimestamp() > res.data.data.end_time) { + isok = 0; + } + } else { + //未找到商品的活动 + isok = 0; + } + item1.act = res.data.data; + }) + + if (!isok) { + getApp().my_warnning("组合购的活动已经过期", 0, th); + return false; + } + + } + } + + //在分组的时候,就不要再调用接口,await + for (var i = 0; i < carr.length; i++) { + var item = carr[i]; + + //-- 如果是等级会员注册返回 -- + if (is_card_back) { + th.data.card_name = th.data.userinfo.card_field; + //如果是秒杀的返回,就要把活动弄回0 + if (item['prom_type'] == 1) { + item['prom_type'] = 0; + item['prom_id'] = 0; + } + // 拼团,搭配购不计算,赠品也不计算 + if (item['prom_type'] != 5 && item['prom_type'] != 6 && !item.is_gift && !item['is_collocation'] && item.goods_price > item[th.data.card_name]) { + item.goods_price = item[th.data.card_name]; + carr[i].goods_price = item[th.data.card_name]; + + } + } else { + // 拼团,搭配购不计算,赠品也不计算,同时会员还未购买等级会员 + if (item[th.data.card_name] > 0 && item['prom_type'] != 5 && item['prom_type'] != 6 && !th.data.userinfo.card_field + && !item.is_gift && !item['is_collocation'] && item.goods_price > item[th.data.card_name]) { + item.cut_price1 = item.goods_price - item[th.data.card_name]; + carr[i].cut_price1 = (item.goods_price - item[th.data.card_name]) * item.goods_num; + } + + } + + item.original_img = oo.imghost + item.original_img; + /*----接口要弄出来的,先顶着-----*/ + var pcid = item.pick_id; + var find = 0; + //----如果有就加进去,没有就新增一个---- + //-----------循环查找门店------------- + if (arr.length > 0) { + for (var j = 0; j < arr.length; j++) { + if (arr[j].pickup_id == pcid) { + arr[j].goods.push(item); + //if(item.is_gift!=1){ + //确定配送方式 + if (arr[j].distr_t == 0) { + arr[j].distr_t = item.distr_type; + } + var e_t = 0 + switch (arr[j].distr_t) { + case 0: + e_t = 1; + if (th.data.json_d.pickupway && th.data.json_d.pickupway == 1) e_t = 0; + break; + case 1: + e_t = 1; + break; + case 2: + e_t = 0; + break; + } + arr[j].exp_type = e_t; + if (e_t == 0) th.setData({is_all_zt: 0}); + //} + + //-- 把等级卡会优惠多少钱装进去 -- + if (item.cut_price) arr[j].card_cut_price += item.cut_price; + find = 1; + break; + } + } + } + //------如果没有找到----- + if (find == 0) { + var pikname = '', sto = null; + //----找到门店名称----- + for (var k = 0; k < th.data.allsto.length; k++) { + if (pcid == th.data.allsto[k].pickup_id) { + pikname = th.data.allsto[k].pickup_name; + sto = th.data.allsto[k]; + break; + } + } + var e_t = 0, dis_t = 0;//物流方式,配送方式 + if (item.distr_type == 0) { + dis_t = sto.distr_type; + } else { + dis_t = item.distr_type; + } + switch (dis_t) { + case 0: + e_t = 1; + //-- 系统后台有设置要默认的 -- + if (th.data.json_d.pickupway && th.data.json_d.pickupway == 1) e_t = 0; + break; + case 1: + e_t = 1; + break; + case 2: + e_t = 0; + break; + } + //如果是物流的话,全部自提的控制要弄成0 + if (e_t == 0) th.setData({is_all_zt: 0}); + + var narr = new Array(); + narr.push(item); + + //-----------拼装购物车结算的数组,如果有默认物流时要用默认物流编号,计算默认的物流,不管是不是自提都算一下----------------- + var m_wind = 0, def_exp_code = getApp().globalData.userInfo.def_exp_code; + if (def_exp_code) { + for (var k = 0; k < th.data.wu_arr.length; k++) { + var item = th.data.wu_arr[k]; + if (def_exp_code == item.code) { + m_wind = k; + } + } + } + + var ie = { + pickup_id: pcid, + pname: pikname, + goods: narr, + wind: m_wind, + distr_t: dis_t, + card_cut_price: 0, + exp_type: e_t, + goods_price: 0, + shipping_price: 0, + user_money: 0, + total_amount: 0, + order_amount: 0, + user_note: 0 + }; + + //-- 把等级卡会优惠多少钱装进去 -- + if (item.cut_price1) ie.card_cut_price += item.cut_price1; + arr.push(ie); + + } + } + //-- 如果是回退回来的情况 -- + if (th.data.cartlist && th.data.cartlist.length > 0) { + for (var kj in th.data.cartlist) { + for (var ih in arr) { + var ie = arr[ih]; + if (ie.pickup_id == th.data.cartlist[kj].pickup_id) { + ie.exp_type = parseInt(th.data.cartlist[kj].exp_type); + ie.wind = parseInt(th.data.cartlist[kj].wind); + break; + } + } + } + } + + //-- 循环计算一下线下取价 -- + for (var k = 0; k < arr.length; k++) { + var c_item = arr[k]; + var item = arr[k].goods; + var offline_price = 0; + var offline_num = 0; + for (var c = 0; c < item.length; c++) { + //-- 如果这个商品是线下取价的时候 -- + if (item[c].offline_price > 0 && item[c].prom_type != 7) { + offline_price += (item[c].goods_price - item[c].offline_price) * item[c].goods_num; + offline_num += item[c].goods_num; + } + } + if (offline_price > 0) { + c_item.offline_price = offline_price; + c_item.offline_num = offline_num; + c_item.is_offline = 1; + } + } + + //每一个门店内的组合购要进行拆分, + //还得把组合商品的多余商品的线下价格算一算 + for (let var1 in arr) { + var u_item = arr[var1]; + //把组合购进行分组 + var obj = zh_calc.find_split(u_item); + if (!obj) continue; + //存储不同活动的商品列表 + u_item.zh_prom_goods = {}; + for (let var1 in obj) { + var h_item = obj[var1]; + var gdlist = null; + var url1 = "/api/weshop/prom/zhbuyGoods/page"; + var req_data = { + page: 1, + pageSize: 2000, + store_id: os.stoid, + zh_id: h_item.prom_id, + } + await getApp().request.promiseGet(url1, { + data: req_data + }).then(res => { + if (ut.ajax_ok(res)) { + gdlist = res.data.data.pageData; + } + }) + //获取活动需要的商品列表 + u_item.zh_prom_goods[h_item.prom_id] = {gdlist: gdlist, act: h_item.act}; + } + zh_calc.fir_set_arr(u_item, th); + } + //深拷贝 + th.data.old_cartlist = JSON.parse(JSON.stringify(arr)); + th.setData({ + cartlist: arr, + }); + //--- 获取一下看有没有优惠券 ---- + setTimeout(function () { + var frozenQuan = null; + var url0 = "/api/weshop/users/frozenQuan/listFrozenQuan/" + app.globalData.user_id; + app.request.promiseGet(url0, {1: 1}).then(res => { + if (res.data.code == 0) { + frozenQuan = res.data.data; + th.data.frozenQuan = frozenQuan; + } + th.calculatePrice(); + th.get_cart_quan(); + }) + + }, 500) + + } + }); + }, + + //-----获取立即购买的商品信息,入口---- + get_buy_goods: function (e) { + var th = this; + var gg = to.get_b_now(); + //--------如果goods_id一样,就是要立即购买----- + if (e == gg.goods_id) { + a.get("/api/weshop/goods/get/" + oo.stoid + "/" + e, { + success: async function (t) { + var gd = t.data.data; + if (!gd) return false; + + t.data.data.original_img = oo.imghost + t.data.data.original_img; + t.data.data['buynum'] = gg.goods_num; + var distr_t = 0, et = 0 + if (t.data.data.distr_type == 0) { + distr_t = gg.pick_dis; + } else { + distr_t = t.data.data.distr_type; + } + + switch (distr_t) { + case 0: + et = 1; + //-- 系统后台有设置要默认的 -- + if (th.data.json_d.pickupway && th.data.json_d.pickupway == 1) et = 0; + break; + case 1: + et = 1; + break; + case 2: + et = 0; + break; + } + + + var m_wind = 0, def_exp_code = getApp().globalData.userInfo.def_exp_code; + if (et == 0 && def_exp_code) { + for (var k = 0; k < th.data.wu_arr.length; k++) { + var item = th.data.wu_arr[k]; + if (def_exp_code == item.code) { + m_wind = k; + } + } + } + + if (th.data.bn_goods) { + et = th.data.bn_exp_type; + m_wind = th.data.index; + } + + //---是不是购买等级卡成功的返回---等级卡显示的判断--- + var is_card_back = getApp().globalData.is_card_back; + if (is_card_back) { + th.data.card_name = th.data.userinfo.card_field; + gg.goods_price = gd[th.data.card_name]; + getApp().globalData.is_card_back = 0; + th.setData({card_cut_price: 0}); + //如果是秒杀的返回 + if (gd.prom_type == 1) gd.prom_type = 0; + } else { + //--- 商家等级卡开通的情况下, 会员不是等级会员的情况, 商品有设置等级卡价格,同时等级卡价格小于商品的价格 + //-- 搭配购的商品也可以单独购买,所以此时搭配购的商品要进行计算优惠 -- + if (!gg.collocation_goods && gd['prom_type'] != 6 && th.data.card_name && gd[th.data.card_name] > 0 && gg.goods_price > gd[th.data.card_name] && !th.data.userinfo.card_field) { + var cut_p = (gg.goods_price - gd[th.data.card_name]) * gg.goods_num; + th.setData({card_cut_price: cut_p}); + } + } + + switch (gd.prom_type) { + case 0: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + //--此时开始计算商品的使用券相关,如果有等级价还要计算和等级价相关的, + // 如果有优惠促销,还要把促销的部分计算在内,因为促销还有不能使用优惠券-- + t.data.data.shop_price = gg.goods_price; + t.data.data.goods_price = gg.goods_price; + t.data.data.goods_num = gg.goods_num; + th.data.ckeck_quan_price = t.data.data.shop_price * gg.goods_num; + th.data.check_quan_price_list = t.data.data.shop_price * gg.goods_num + ""; + th.data.check_quan_ware_list = t.data.data.erpwareid + ""; + + //-- 如果有线下取价的时候 -- + if (gg.offline_price) { + t.data.data.offline_price = gg.offline_price; + t.data.data.pricing_type = gg.pricing_type; + t.data.data.is_offline = 1; + + th.data.ckeck_quan_price = t.data.data.offline_price * gg.goods_num; + th.data.check_quan_price_list = t.data.data.offline_price * gg.goods_num + ""; + th.data.check_quan_ware_list = t.data.data.erpwareid + ""; + } + + t.data.data.prom_id = 0; + t.data.data.prom_type = 0; + + //如果立即购买那边过来,就要读取接口,查看活动的优惠内容 + if (gg.prom_type == 3) { + t.data.data.prom_id = gg.prom_id; + t.data.data.prom_type = 3; + //如果是优惠活动,就要调用活动,计算价格 + th.buy_now_prom_goods(gg.prom_id, t.data.data, function (data) { + //判断一下购买商品的数量是不是超过 + if (data.gift_goods_id) { + var num = 1; + if (data.is_bz == 1) { + num = data.bs; + if (num > data.gift_limit_num) num = 0; + } + //如果赠品数量超出礼品库存,就取消 + if (num > data['gift_storecount']) num = 0; + if (num > 0) { + var ob = {}; + ob.is_gift = 1; + ob.prom_id = data.prom_id; + ob.goods_id = data.gift_goods_id; + ob.goods_name = data.gift_goods_name; + ob.goods_color = data.gift_goods_color; + ob.goods_spec = data.gift_goods_spec; + ob.original_img = os.imghost + data.gift_original_img; + ob.market_price = data.gift_market_price; + ob.gift_id = data.gift_id; + ob.shop_price = 0; + ob.buynum = num; + ob.weight = data.gift_weight; //商品的重量 + ob.exp_sum_type = data.gift_exp_sum_type; //商品的物流计算方式 + ob.uniform_exp_sum = data.gift_uniform_exp_sum //统一运费的金额 + + th.setData({buy_now_gift_goods: ob}); + } + } + + th.setData({ + bn_goods: data, bn_pickname: gg.pick_name, index: m_wind, + bn_pick: gg.pick_id, bn_t_exp_t: distr_t, bn_exp_type: et + }); + + //计算价格 + th.calculatePrice2(); + //获取优惠券 + th.get_buy_now_quan(); + + }) + } else { + //--看是不是搭配促销-- + if (gg.prom_type == 5) { + t.data.data.prom_id = gg.prom_id; + t.data.data.prom_type = 5; + if (gg.room_id) { + t.data.data.room_id = gg.room_id; + } + //--主商品要有导购id和导购类型-- + if (gg.guide_id) { + t.data.data.guide_id = gg.guide_id; + t.data.data.guide_type = gg.guide_type; + } + th.setData({collocation_goods: gg.collocation_goods}); + + var cart_arr = new Array(); + //var narr=gg.collocation_goods; + //修改成深拷贝,确保返回是数据正确 + var narr = JSON.parse(JSON.stringify(gg.collocation_goods)); + + narr.push(t.data.data); + + //-- 搭配促销的门店配送方式的修复 -- + et = 1; + distr_t = 0; + for (var hi in narr) { + var dis_t = narr[hi].distr_type; + if (dis_t == 2) { + th.setData({is_all_zt: 0}); + et = 0; + } + if (dis_t > 0) { + distr_t = dis_t; + } + } + + //自选的时候,系统配置了默认的配送方式是物流的时候 + if (distr_t == 0 && th.data.json_d.pickupway && th.data.json_d.pickupway == 1) { + et = 0; + } + + + var ie = { + pickup_id: gg.pick_id, + pname: gg.pick_name, + goods: narr, + exp_type: et, + wind: m_wind, + distr_t: distr_t, + bn_t_exp_t: distr_t, + goods_price: 0, + shipping_price: 0, + user_money: 0, + total_amount: 0, + order_amount: 0, + user_note: 0 + }; + cart_arr.push(ie); + th.data.old_cartlist = cart_arr; + } + th.setData({ + bn_goods: t.data.data, bn_pickname: gg.pick_name, index: m_wind, + bn_pick: gg.pick_id, bn_t_exp_t: distr_t, bn_exp_type: et + }); + + + //--搭配促销也是按照购物车的方式来计算优惠券-- + if (gg.prom_type == 5) { + var frozenQuan = null; + var url0 = "/api/weshop/users/frozenQuan/listFrozenQuan/" + app.globalData.user_id; + app.request.promiseGet(url0, {1: 1}).then(res => { + if (res.data.code == 0) { + frozenQuan = res.data.data; + th.data.frozenQuan = frozenQuan; + } + //计算价格 + th.calculatePrice2(); + th.get_cart_quan(); + }); + } else { + //计算价格 + th.calculatePrice2(); + //获取优惠券, + th.get_buy_now_quan(); + } + } + + break; + case 1: //---秒杀----- + var quanlist = null; + getApp().request.get("/api/weshop/activitylist/getSJGoodsPrice/" + gd.store_id + + "/" + gd.goods_id + "/1/" + gd.prom_id, { + success: async function (tt) { + if (tt.data.code == 0) { + t.data.data.shop_price = tt.data.data.prom_price; + } else { + t.data.data.prom_id = 0; + t.data.data.prom_type = 0; + + th.data.ckeck_quan_price = t.data.data.shop_price * gg.goods_num; + th.data.check_quan_price_list = t.data.data.shop_price * gg.goods_num + ""; + th.data.check_quan_ware_list = t.data.data.erpwareid + ""; + } + + th.setData({ + bn_goods: t.data.data, + bn_pickname: gg.pick_name, + bn_exp_type: et, + index: m_wind, + bn_pick: gg.pick_id, + bn_t_exp_t: distr_t, + bn_exp_type: et + }); + + //计算价格 + th.calculatePrice2(); + //获取优惠券 + th.get_buy_now_quan(); + } + }); + + break; + } + }, + }); + } + }, + + //---------------检查是否有收货地址------------------- + checkAddressList: function () { + var t = this; + return !(!this.data.order || null == this.data.order.userAddress) || (wx.showModal({ + title: "请先填写或选择收货地址~", + success: function (a) { + a.confirm ? t.enterAddressPage() : wx.navigateBack(); + }, + fail: function () { + wx.navigateBack(); + } + }), !1); + }, + showInvoice: function () { + this.setData({ + invoiceToggle: !this.data.invoiceToggle + }); + }, + keyUpChangePay1: function (t) { + this.setData({ + payWithUserMoney: !(t.detail.value.length > 0) + }); + }, + keyUpChangePay2: function (t) { + this.setData({ + payWithPoints: !(t.detail.value.length > 0) + }); + }, + keyUpChangeNum: function (t) { + this.setData({ + maxWord: t.detail.value.length + }); + }, + + calc_per: async function (c_arr) { + var th = this; + //-- 循环处理 -- + for (var i in c_arr) { + var cart_item = c_arr[i]; //就是每一单的意思 + var pickid = cart_item.pickup_id; + var ord_goods = c_arr[i].goods; //就是每一单的从表的意思 + var o_price = 0, q_conditin = 0; + //--------循环计算总价----------- + for (var j = 0; j < ord_goods.length; j++) { + o_price += ord_goods[j].goods_price * ord_goods[j].goods_num; + } + + //---如果该门店的相关活动,就要算一下减价-- + if (th.data.prom_goods_map[pickid]) { + var ob = th.data.prom_goods_map[pickid]; + for (var ii in ob) { + var item_map = ob[ii]; + if (item_map.bs == undefined || item_map.bs == null) { + //等待,获取一下优惠活动的信息 + await getApp().request.promiseGet("/api/weshop/goods/getDiscount", { + data: { + price: item_map.price, prom_id: item_map.prom_id, + goods_num: item_map.goods_num, user_id: getApp().globalData.user_id, + is_bz: item_map.is_bz + } + }).then(res => { + if (res.data.code == 0 && res.data.data.condition) { + var get_data = res.data.data; + item_map.is_bz = get_data.is_bz; //是不是倍增 + item_map.bs = get_data.bs; //是不是倍数 + item_map.is_past = get_data.is_past; //是不是包邮 + item_map.prom_price = get_data.price >= 0 ? get_data.price : item_map.price; + item_map.s_intValue = get_data.intValue; + item_map.s_coupon_id = get_data.coupon_id; + item_map.s_coupon_num = get_data.coupon_num; + if (get_data.gift_id && get_data.goodsinfo) { + item_map.gift_id = get_data.gift_id; + item_map.gift_goods_id = get_data.goods_id; + item_map.gift_goods_name = get_data.goods_name; + item_map.gift_goods_color = get_data.goodsinfo.goods_color ? get_data.goodsinfo.goods_color : ''; + item_map.gift_goods_spec = get_data.goodsinfo.goods_spec ? get_data.goodsinfo.goods_spec : ''; + item_map.gift_original_img = get_data.goodsinfo.original_img; + item_map.gift_limit_num = get_data.limit_num; + item_map.gift_storecount = get_data.gift_storecount; + item_map.gift_weight = get_data.goodsinfo.weight; + item_map.gift_exp_sum_type = get_data.goodsinfo.exp_sum_type; + item_map.uniform_exp_sum = get_data.goodsinfo.uniform_exp_sum; + + } + item_map.s_libao = get_data.libao; + item_map.s_lb_num = get_data.lb_num; + } + }) + } + + //有活动,且优惠活动并没有限制使用优惠券,且有减价 + //--看有没有减价-- + //if(item_map.prom_price>=0 && item_map.price-item_map.prom_price){ + if (item_map.price - item_map.prom_price && item_map.prom_price !== null) { + if (cart_item.prom_pt_json) { + cart_item.prom_pt_json.push({ + "prom_id": item_map.prom_id, + "dis": (item_map.price - item_map.prom_price).toFixed(2), + "ispt": 0 + }) + } else { + cart_item.prom_pt_json = [{ + "prom_id": item_map.prom_id, + "dis": (item_map.price - item_map.prom_price).toFixed(2), + "ispt": 0 + }]; + } + + //-- 如果系统要平摊到单品 -- + + var pt_data = { + 'prom_id': item_map.prom_id, + 'dis': parseFloat((item_map.price - item_map.prom_price).toFixed(2)), + 'goods': item_map.goods + } + + var pt_res = null; + await getApp().request.promisePost("/api/weshop/order/getGoodsSplit", { + is_json: 1, + data: pt_data + }).then(res => { + if (res.data.code == 0) { + pt_res = res.data.data; + } + }) + if (pt_res) { + for (var io in item_map.goods) { + //平摊赋值 + item_map.goods[io].account_fir = th.arr_get_goods(item_map.goods[io].goods_id, pt_res).fisrt_account; + item_map.goods[io].account_yu_fir = th.arr_get_goods(item_map.goods[io].goods_id, pt_res).fisrt_account_yu; + if (!th.data.ispt_goods) { + item_map.goods[io].account = item_map.goods[io].account_fir; + item_map.goods[io].account_yu = item_map.goods[io].account_yu_fir; + } + } + } + + + o_price -= (item_map.price - item_map.prom_price); + //如果有限制使用优惠券,就要减掉参与的活动商品的钱 + if (!item_map.is_xz_yh) q_conditin = o_price; + } + + //--------循环计算商品是不是包邮,是不是使用优惠券,此时循环是商品从表----------- + for (var j = 0; j < ord_goods.length; j++) { + if (ord_goods[j].is_gift) continue; + if (ord_goods[j].prom_type == 3 && ord_goods[j].prom_id == item_map.prom_id) { + ord_goods[j].is_xz_yh = item_map.is_xz_yh; + ord_goods[j].is_past = item_map.is_past; + ord_goods[j].account_fir = th.item_map_get_goods(ord_goods[j].goods_id, item_map).account_fir; + ord_goods[j].account_yu_fir = th.item_map_get_goods(ord_goods[j].goods_id, item_map).account_yu_fir; + ord_goods[j].account = th.item_map_get_goods(ord_goods[j].goods_id, item_map).account; + ord_goods[j].account_yu = th.item_map_get_goods(ord_goods[j].goods_id, item_map).account_yu; + } + } + + + //--优惠多少钱-- + if (!cart_item.cut_price) cart_item.cut_price = 0; + //-- -- + if (item_map.price != undefined && item_map.price != null + && item_map.prom_price != undefined && item_map.prom_price != null) + cart_item.cut_price += (item_map.price - item_map.prom_price); + //---如果有送积分--- + if (item_map.s_intValue) { + if (!cart_item.s_intValue) cart_item.s_intValue = 0; + cart_item.s_intValue += item_map.s_intValue; + } + //-- 如果有送优惠券的情况 -- + if (item_map.s_coupon_id) { + if (!cart_item.s_coupon_id) { + cart_item.s_coupon_id = item_map.s_coupon_id + ""; + cart_item.g_coupon_num = [{'c_id': item_map.s_coupon_id, "num": item_map.s_coupon_num}]; + } + else { + cart_item.s_coupon_id += "," + item_map.s_coupon_id; + cart_item.g_coupon_num.push({'c_id': item_map.s_coupon_id, "num": item_map.s_coupon_num}) + } + } + + //-- 如果有送优包邮券的情况 -- + if (item_map.s_libao) { + if (!cart_item.s_libao) { + cart_item.s_libao = item_map.s_libao + ""; + cart_item.g_lb_num = [{'l_id': item_map.s_libao, "num": item_map.s_lb_num}]; + } + else { + cart_item.s_libao += "," + item_map.s_libao; + cart_item.g_lb_num.push({'l_id': item_map.s_libao, "num": item_map.s_lb_num}) + } + } + } + } + } + }, + + //-------------------计算订单价格------------------- + calculatePrice: function (t, s) { + var th = this; + to.getConfig2(function (ee) { + to.getwuliuprice(async function (rs) { + wx.showLoading({ + title: "处理中." + }) + var all_price = 0; //所有的商品总价 + var all_shipping_m = 0; //所有的物流总价 + var all_total_m = 0; //所有的订单应付总价 + var all_order_m = 0; //所有的订单应付总价 + var all_user_m = 0; //所有的订单用户使用金额 + var all_coupon_price_m = 0; //所有的订单用户使用优惠券价格 + var all_cutprice = 0; //所有的优惠减 + var all_zh_cutprice = 0; //所有的组合优惠减 + var all_order_prom = 0; //所有的订单优惠 + + var umoney = th.data.userinfo.user_money - th.data.txmon - (th.data.userinfo.frozen_money ? th.data.userinfo.frozen_money : 0); + var freight_free = ee.freight_free; //全场满多少包邮 + var no_ex_id = ee.no_ex_id; + var no_ex_good = null; + var by_qc = {}; + + if (no_ex_id && freight_free > 0) { + //-----------获取不包邮区域,不包邮商品------- + await getApp().request.promiseGet("/api/weshop/areaFeemail/getAreaGoods", { + data: {store_id: os.stoid, id: no_ex_id} + }).then(res => { + if (res.data.code == 0 && res.data.data && res.data.data.length > 0) { + by_qc = res.data.data[0]; + } + }) + } + ; + var c_arr = JSON.parse(JSON.stringify(th.data.old_cartlist)); + + if (th.data.cartlist && th.data.cartlist.length > 0) { + for (var i = 0; i < c_arr.length; i++) { + c_arr[i].exp_type = th.data.cartlist[i].exp_type; + c_arr[i].wind = th.data.cartlist[i].wind; + } + } + + //调用函数计算每件商品的单价 + await th.calc_per(c_arr); + //调用函数计算每件组合购商品的单价, + await zh_calc.calc_zh_split_price(c_arr,th); + //调用函数计算,优惠券优惠什么商品价格,优惠券优惠什么商品 + await th.get_cart_quan(c_arr); + //---循环购物车--- + for (var i in c_arr) { + //因为搭配购买也是再这里计算,搭配购的is_b_now==1 + if (th.data.is_b_now == 0) { + //此时物流的选择方式要用th.data.cartlist; + c_arr[i].exp_type = th.data.cartlist[i].exp_type; + c_arr[i].wind = th.data.cartlist[i].wind; + if (th.data.cartlist[i].check_quan_price_list) c_arr[i].check_quan_price_list = th.data.cartlist[i].check_quan_price_list; //优惠券优惠什么商品价格 + if (th.data.cartlist[i].check_quan_ware_list) c_arr[i].check_quan_ware_list = th.data.cartlist[i].check_quan_ware_list; //优惠券优惠什么商品 + } else { + c_arr[i].exp_type = th.data.bn_exp_type; //配送方式 + c_arr[i].wind = th.data.index; //立即购买选择的物流 + //c_arr[i].=th.data. //立即购买的使用余额 + if (th.data.cartlist) c_arr[i].check_quan_price_list = th.data.cartlist[i].check_quan_price_list; //优惠券优惠什么商品价格 + if (th.data.cartlist) c_arr[i].check_quan_ware_list = th.data.cartlist[i].check_quan_ware_list; //优惠券优惠什么商品 + } + + var cart_item = c_arr[i]; //就是每一单的意思 + var pickid = cart_item.pickup_id; + var o_price = 0; + var o_price_no_zh=0; //不包含限制优惠叠加组合购的金额汇总 + var o_shipping_price = 0, goods_weight = -1, goods_piece = -1; + var item = c_arr[i].goods; //就是每一单的从表的意思 + + //---如果有选择优惠券的情况下--- + var quan_price = 0; + var coupon_price = 0; + var quan_no = null; + var is_has_zh=c_arr[i].is_has_zh; + var zh_prom_goods=c_arr[i].zh_prom_goods; //组合购计算的原始数据存储空间 + + if (th.data.using_quan[pickid] != null && th.data.using_quan[pickid] != undefined) + quan_no = th.data.using_quan[pickid].coupon_no; + + //普通券的时候 + if (quan_no && th.data.using_quan[pickid].isby != 1) { + //---获取优惠券优惠--- + await getApp().request.promiseGet("/api/weshop/couponList/getUseCouponPrice", { + data: { + storeId: oo.stoid, + CashRepNo: quan_no, + WaresSum: cart_item.check_quan_price_list, + WareIds: cart_item.check_quan_ware_list + } + }).then(res => { + if (res.data.code == 0 && res.data.data && res.data.data.length > 0) { + var q_data = res.data.data; + //--存储商品优惠的内容-- + cart_item.quan_youhui_list = q_data; + for (var k in q_data) + quan_price += q_data[k].WareCashSum; + } + }) + } + + //--------循环计算总价----------- + for (var j = 0; j < item.length; j++) { + if(item[j].prom_type!=7){ + o_price_no_zh += item[j].goods_price * item[j].goods_num; + } + //组合购的商品,且没有订单优惠的叠加,is_orderyh就是优惠叠加 + if(zh_prom_goods[item[j].prom_id] && !zh_prom_goods[item[j].prom_id].act.is_orderyh ) + { + o_price_no_zh += item[j].goods_price * item[j].goods_num; + } + o_price += item[j].goods_price * item[j].goods_num; + } + //判断是不是有组合购的金额 + var f_o_price = o_price; + //如果又优惠的钱,就要减价 + if (c_arr[i].cut_price > 0){ + o_price -= c_arr[i].cut_price; + o_price_no_zh-=c_arr[i].cut_price; + } + //如果有组合购优惠的钱,就要减价 + if (c_arr[i].zh_cut_price > 0){ + o_price -= c_arr[i].zh_cut_price; + if(o_price_no_zh>0){ + //找到那些可以订单优惠叠加的 + for(let ij in zh_prom_goods){ + let kitem=zh_prom_goods[ij]; + if(kitem.act.is_orderyh) continue; + o_price_no_zh-=kitem.cut_price; + } + } + } + + //-- 计算线下取价的功能 -- + if (cart_item.is_offline == 1) { + o_price = o_price - cart_item.offline_price; + o_price_no_zh-=c_arr[i].offline_price; + } + //判断包邮券的钱,组合购的商品不使用优惠券 + var q_conditin = 0; + q_conditin = o_price - quan_price; + if(is_has_zh){ + q_conditin = o_price_no_zh - quan_price; + } + cart_item.goods_price = f_o_price.toFixed(2); //商品总费用,用f_o_price来计算 + //计算物流费用 + cart_item.shipping_price = 0; + + + //--有不包邮区域,且不免运费,全场的计算,要减到优惠金额 和券的金额-- + if (no_ex_id && freight_free > 0 && (o_price - quan_price) >= freight_free && cart_item.exp_type == 0 && (by_qc.region_list || by_qc.goods_list)) { + //如果有设置不包邮区域的时候 + if (by_qc.region_list != "" && by_qc.region_list != null && by_qc.region_list != undefined) { + if (th.check_by_area(by_qc.region_list)) { + freight_free = 0; + th.data.is_no_by[pickid] = 1; + } + } + //如果有设置不包邮区商品 + if (by_qc.goods_list != "" && by_qc.goods_list != undefined && by_qc != null && freight_free > 0) { + freight_free = 0; + no_ex_good = by_qc.goods_list; + } + } + + //--如果是物流,且选择了地址,就要开始显示包邮券,且包邮券也已经优惠了优惠活动的金额-- + if (cart_item.exp_type == 0 && th.data.user_addr != null) { + //看是不是有调用过包邮券 + if (!th.data.isget_by_quan[pickid]) { + //--判断要不要显示包邮券,调用接口,因为有for循环--- + await getApp().request.promiseGet("/api/weshop/userfeemail/pageAndArea", { + data: { + store_id: os.stoid, + isuse: 0, + condition: q_conditin, + user_id: getApp().globalData.user_id, + pageSize: 2000 + } + }).then(res => { + if (res.data.code == 0 && res.data.data.total > 0) { + //此时要循环判断包邮的地区,不包邮商品是不是符合 + var arr = [], quanlist = res.data.data.pageData; + quanlist = th.check_is_frozenQuan(quanlist, th.data.frozenQuan, 1); + for (var i in quanlist) { + var item = quanlist[i]; + var goods = cart_item.goods; + var g_arr = []; + for (var ii in goods) { + g_arr.push(goods[ii].goods_id); + } + if (item.region_list && th.check_by_area(item.region_list)) continue; //如果是不包邮区域 + if (item.goods_list) { + var no_goods_arr = item.goods_list.split(","); + if (ut.isContained(no_goods_arr, g_arr)) continue; //如果是不包邮商品 + } + arr.push(item); + } + if (arr) { + th.data.get_by_quan_list_cart[pickid] = arr; + //th.setData({get_by_quan_list_cart:th.data.get_by_quan_list_cart}); + if (th.data.is_b_now) { + th.setData({get_by_quan_list: arr}); + } + } + th.data.isget_by_quan[pickid] = 1; + } + }) + } + } + + //如果是包邮券的时候,要看看券的情况 + if (quan_no && th.data.using_quan[pickid].isby == 1) { + var quan = th.data.using_quan[pickid]; + if (!quan.goods_list) { + th.data.is_quan_by[pickid] = 1; //专门给券的判断用的 + } else { + th.data.is_quan_by[pickid] = 0; + //看有没有模板的包邮 + if (no_ex_good) { + var arr = no_ex_good.split(","); + var arr2 = quan.goods_list.split(","); + if (ut.isContained(arr, arr2)) { + getApp().my_warnning("全场不包邮商品和包邮券的重复", 0, th); + th.data.using_quan[pickid] = {}; + th.setData({using_quan: th.data.using_quan}) + return false; + } + var n_arr = ut.mergeArray(arr, arr2); + no_ex_good = n_arr.join(","); + } else { + no_ex_good = quan.goods_list; + } + } + } else { + th.data.is_quan_by[pickid] = 0; //专门给券的判断用的 + } + + //--------循环计算总价----------- + for (var j = 0; j < item.length; j++) { + //如果都包邮,都没必要等级数量了 + if (th.data.is_quan_by[pickid]) continue; + //如果是优惠活动是包邮,就不用计算包邮的费用了 + if (item[j].is_past) continue; + //是不是不包邮的商品 + var is_good_no_by = 0; + if (no_ex_good) { + is_good_no_by = th.check_by_goods(no_ex_good, item[j].goods_id); + } + + //如果达到全场包邮的条件,同时,没有地区不包邮,或者商品不包邮 + if (o_price - quan_price >= freight_free && freight_free > 0 && !is_good_no_by && th.data.is_no_by[pickid] != 1) { + continue; + } + + //--如果是包邮券使用的情况下,如果商品是包邮的,那么就不进行计算-- + if (th.data.using_quan[pickid] && th.data.using_quan[pickid].isby == 1 && !is_good_no_by) { + continue; + } + + var no_ex_good_arr = null; + if (no_ex_good) no_ex_good_arr = no_ex_good.split(','); + + //----------------如果是选择了物流--------------------- + if (cart_item.exp_type == 0 && item[j].is_free_shipping == 0 && (!no_ex_good_arr || no_ex_good_arr.indexOf(item[j].goods_id + '') > -1 )) { + + //如果地址不为空 + if (th.data.user_addr != null) { + switch (item[j]['exp_sum_type']) { + case 1: + //统一运费 + o_shipping_price += item[j]['uniform_exp_sum']; + break; + case 2: + +'' + if (goods_weight < 0) goods_weight = 0; + //累积商品重量 每种商品的重量 * 数量 + goods_weight += item[j]['weight'] * item[j]['goods_num']; + + break; + case 3: + if (goods_piece < 0) goods_piece = 0; + //累积商品数量 + goods_piece += item[j]['goods_num']; + break; + } + } + + } + } + + //计算物流价格 + if (cart_item.exp_type == 0) { + //freight_free=0; //后面不在进行判断 + var code = ""; + if (th.data.wu_arr && th.data.wu_arr[cart_item.wind]) + code = th.data.wu_arr[cart_item.wind].code; + cart_item.shipping_price = + th.calculatewuliu(code, o_shipping_price, goods_weight, + goods_piece, th.data.user_addr, freight_free, o_price - quan_price, rs); + + if (!th.data.using_quan[pickid] || th.data.using_quan[pickid].isby != 1) { + if (cart_item.shipping_price == 0) th.data.is_by[pickid] = 1; //已经全场包邮,就不要选择券了 + } + } else { + cart_item.shipping_price = 0; + } + + cart_item.shipping_price = cart_item.shipping_price.toFixed(2); + + //总价计算,总价不包含运费 + cart_item.order_amount = (o_price - quan_price).toFixed(2); + cart_item.total_amount = f_o_price.toFixed(2); + + var order_prom_amount = 0; + var order_prom_id = 0; + var o_condition = cart_item.order_amount; + //看一下是不是不用组合购的订单优惠的叠加 + if(o_price_no_zh>0){ + o_condition=o_price_no_zh-quan_price; + } + + var order_m = 0; + //---判断是不是有订单优惠--- + await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { + data: {store_id: os.stoid, orderAmount: o_condition} + }).then(res => { + if (res.data.code == 0) { + var ord_prom = res.data.data; + order_prom_id = ord_prom['id']; + switch (ord_prom['type']) { + case 0: + order_m = Math.round(o_condition * ord_prom['expression']) / 100;//满额打折 + order_prom_amount = (o_condition - order_m).toFixed(2); + break; + case 1: + //order_m = o_condition - ord_prom['expression'];//满额优惠金额 + order_prom_amount = ord_prom['expression']; + break; + } + } + }) + + cart_item.order_prom_amount = 0; + //--订单优惠的显示-- + if (order_prom_id > 0) { + cart_item.order_amount = (o_price - quan_price - order_prom_amount).toFixed(2); + cart_item.order_prom_id = order_prom_id; + cart_item.order_prom_amount = order_prom_amount; + } + coupon_price = quan_price; + if (cart_item.order_amount < 0) { + cart_item.order_amount = 0; + coupon_price = o_price; + } + + cart_item.total_amount = parseFloat(cart_item.total_amount) + parseFloat(cart_item.shipping_price); //总金额 + cart_item.order_amount = parseFloat(cart_item.order_amount) + parseFloat(cart_item.shipping_price); //总金额 + cart_item.total_amount = cart_item.total_amount.toFixed(2); + cart_item.order_amount = cart_item.order_amount.toFixed(2); + + //搭配购在使用余额 + if (th.data.bn_use_money == 1 && th.data.is_b_now == 1) { + + if (umoney > cart_item.order_amount) { + cart_item.user_money = cart_item.order_amount; + umoney = umoney - cart_item.order_amount; + } else { + cart_item.user_money = umoney; + umoney = 0; + } + + } else { + //--------------如果使用余额,购物车购买--------------------- + if (th.data.js_use_money == 1) { + if (umoney > cart_item.order_amount) { + cart_item.user_money = cart_item.order_amount; + umoney = umoney - cart_item.order_amount; + } else { + cart_item.user_money = umoney; + umoney = 0; + } + } else { + cart_item.user_money = 0; + } + } + + cart_item.user_money = parseFloat(cart_item.user_money).toFixed(2); + if (coupon_price > 0) cart_item.coupon_price = coupon_price.toFixed(2); + else cart_item.coupon_price = coupon_price + if (quan_no) cart_item.quan_no = quan_no; + + + //cart_item.goods_price = o_price.toFixed(2); + cart_item.order_amount = cart_item.order_amount - cart_item.user_money; //会员使用余额 + + + all_price += parseFloat(f_o_price); + all_total_m += parseFloat(cart_item.total_amount); + all_shipping_m += parseFloat(cart_item.shipping_price); + all_order_m += parseFloat(cart_item.order_amount); + all_user_m += parseFloat(cart_item.user_money); + all_coupon_price_m += parseFloat(cart_item.coupon_price); + all_cutprice += parseFloat(cart_item.cut_price); + all_zh_cutprice += parseFloat(cart_item.zh_cut_price); + all_order_prom += parseFloat(cart_item.order_prom_amount); + } + + all_shipping_m = parseFloat(all_shipping_m).toFixed(2); + all_total_m = parseFloat(all_total_m).toFixed(2); + all_order_m = parseFloat(all_order_m).toFixed(2); + all_price = parseFloat(all_price).toFixed(2); + all_user_m = parseFloat(all_user_m).toFixed(2); + all_total_m = parseFloat(all_total_m).toFixed(2); + all_coupon_price_m = parseFloat(all_coupon_price_m).toFixed(2); + all_cutprice = all_cutprice.toFixed(2); + all_order_prom = all_order_prom.toFixed(2); + all_zh_cutprice = parseFloat(all_zh_cutprice).toFixed(2); + + var atxt = "formData.total_amount"; + var atxt1 = "formData.order_amount"; + var atxt2 = "formData.all_price"; + var atxt3 = "formData.user_money"; + var atxt4 = "formData.shipping_price"; + var atxt5 = "formData.coupon_price"; + var atxt6 = "formData.cut_price"; + var atxt7 = "formData.order_prom_amount"; + var atxt8 = "formData.zh_cut_price"; + + th.setData({ + [atxt]: all_total_m, [atxt1]: all_order_m, + [atxt2]: all_price, [atxt3]: all_user_m, [atxt4]: all_shipping_m, + [atxt5]: all_coupon_price_m, [atxt6]: all_cutprice, + [atxt7]: all_order_prom, show_submit: 1, [atxt8]: all_zh_cutprice + }) + th.data.order_prom_list_cart = c_arr; + th.set_can_num(); + wx.hideLoading(); + + }); + }); + }, + + set_can_num: function () { + var th = this; + //-- 这个地方,循环计算几张优惠券可用-- + for (var iter in th.data.cartlist) { + var num = 0; + var c_item = th.data.cartlist[iter]; + var pkid = c_item.pickup_id; + //-- 普通券 -- + if (c_item.quan_list) { + for (var iter1 in c_item.quan_list) { + //判断是不是其他订单有选用 + var is_other_is_use = th.check_other_use(c_item.quan_list[iter1], pkid); + if (!is_other_is_use) num++; + } + } + //-- 包邮券 -- + var by_quan = th.data.get_by_quan_list_cart[pkid]; + if (by_quan) { + for (var iter2 in by_quan) { + //判断是不是其他订单有选用 + var is_other_is_use = th.check_other_use_by(by_quan[iter2], pkid); + if (!is_other_is_use) num++; + } + } + var set_txt = "cartlist[" + iter + "].can_num"; + th.setData({[set_txt]: num}); + } + }, + + + //---------计算立即购买---------- + calculatePrice2: function () { + var th = this, good = this.data.bn_goods; + + if (!good) return false; + + //搭配的计算要用购物的车计算方法 + if (good.prom_type == 5) { + th.calculatePrice(); + return false; + } + + wx.showLoading({ + title: "处理中." + }) + //-----------计算商品总价-------------- + var allpice = good.shop_price * good.buynum; + var cut_price = 0; + var allpice1 = allpice; + + + if (good.prom_type == 3 && good.prom_price !== null) { + cut_price = allpice - good.prom_price; + } + + allpice = parseFloat(allpice).toFixed(2); + var txt = "formData.all_price"; + th.setData({[txt]: allpice,}); + if (cut_price) { + var c_txt = "formData.cut_price"; + th.setData({[c_txt]: cut_price,}); + + } + + //如果有线下取价的时候 + if (good.is_offline) { + allpice = good.offline_price * good.buynum; + } + + + to.getConfig2(function (ee) { + to.getwuliuprice(async function (rs) { + + var o_shipping_price = 0, goods_weight = -1, goods_piece = -1; + + //---如果有选择优惠券的情况下--- + var quan_price = 0, bn_pick = th.data.bn_pick; + var quan_no = null; + if (th.data.using_quan[bn_pick] != null && th.data.using_quan[bn_pick] != undefined) + quan_no = th.data.using_quan[bn_pick].coupon_no; + + if (quan_no) { + if (th.data.using_quan[bn_pick].isby != 1) { + //---获取优惠券优惠--- + await getApp().request.promiseGet("/api/weshop/couponList/getUseCouponPrice", { + data: { + storeId: oo.stoid, + CashRepNo: quan_no, + WaresSum: th.data.ckeck_quan_price, + WareIds: th.data.check_quan_ware_list + } + }).then(res => { + if (res.data.code == 0 && res.data.data && res.data.data.length > 0) { + quan_price = res.data.data[0].WareCashSum; + } + }) + } + } + + //-----------当地址不为空,且是物流时,计算物流费用,并同时商品不是优惠活动的包邮---------- + if (th.data.user_addr != null && th.data.bn_exp_type == 0 && good.is_free_shipping == 0 && good.is_past != 1) { + //看是不是有调用过包邮券 + if (!th.data.isget_by_quan[th.data.bn_pick] && good.is_xz_yh != 1) { + var condition = allpice - cut_price - quan_price; + //--判断要不要显示包邮券,链式调用接口,调取包邮券,已经是减了优惠的金额,见到优惠券的钱--- + getApp().request.promiseGet("/api/weshop/userfeemail/pageAndArea", { + data: { + store_id: os.stoid, + isuse: 0, + condition: condition, + user_id: getApp().globalData.user_id, + pageSize: 2000 + } + }).then(res => { + if (res.data.code == 0 && res.data.data.total > 0) { + //此时要循环判断包邮的地区,不包邮商品是不是符合 + var arr = [], quanlist = res.data.data.pageData; + quanlist = th.check_is_frozenQuan(quanlist, th.data.frozenQuan, 1); + for (var i in quanlist) { + var item = quanlist[i]; + if (item.region_list && th.check_by_area(item.region_list)) continue; //如果是不包邮区域 + if (item.goods_list && th.check_by_goods(item.goods_list)) continue; //如果是不包邮商品 + arr.push(item); + } + if (arr) { + th.setData({get_by_quan_list: arr}); + } + th.data.isget_by_quan[th.data.bn_pick] = 1; + } + }) + } + + switch (good['exp_sum_type']) { + case 1: + //统一运费 + o_shipping_price += good['uniform_exp_sum']; + break; + case 2: + if (goods_weight < 0) goods_weight = 0; + //累积商品重量 每种商品的重量 * 数量 + goods_weight += good['weight'] * good['buynum']; + break; + case 3: + if (goods_piece < 0) goods_piece = 0; + //累积商品数量 + goods_piece += good['buynum']; + break; + } + + var code = ""; + if (th.data.wu_arr && th.data.wu_arr[th.data.index]) code = th.data.wu_arr[th.data.index].code; + var freight_free = ee.freight_free; //全场满多少包邮 + var no_ex_id = ee.no_ex_id; + th.data.is_no_by[th.data.bn_pick] = 0; + + var no_by_data = null; + var gift_freight_free = freight_free; + + + //有不包邮区域,且不免运费 + if (no_ex_id && freight_free > 0 && freight_free <= parseFloat(allpice) - cut_price - quan_price) { + //-----------获取不包邮区域,不包邮商品------- + await getApp().request.promiseGet("/api/weshop/areaFeemail/getAreaGoods", { + data: {store_id: os.stoid, id: no_ex_id} + }).then(res => { + if (res.data.code == 0 && res.data.data && res.data.data.length > 0) { + no_by_data = res.data.data[0]; + //如果有设置不包邮区域的时候 + if (res.data.data[0].region_list) { + if (th.check_by_area(res.data.data[0].region_list)) { + freight_free = 0; + th.data.is_no_by[th.data.bn_pick] = 1; + } + } + //如果有设置不包邮商品 + if (res.data.data[0].goods_list && freight_free) { + if (th.check_by_goods(res.data.data[0].goods_list)) { + freight_free = 0; + th.data.is_no_by[th.data.bn_pick] = 1; + } + } + } + }) + } + + th.data.is_by[th.data.bn_pick] = 0; + //--------------开始计算物流------------------ + var shipping_price = + th.calculatewuliu(code, o_shipping_price, goods_weight, + goods_piece, th.data.user_addr, freight_free, parseFloat(allpice) - cut_price - quan_price, rs); + + //如果有赠品的时候,也要计算赠品的物流费用 + if (th.data.buy_now_gift_goods) { + shipping_price = th.get_now_gift_goods_wuliu(code, o_shipping_price, th.data.user_addr, gift_freight_free, + parseFloat(allpice) - cut_price - quan_price, rs, shipping_price, no_by_data, goods_weight, goods_piece); + } + + if (shipping_price <= 0) { + th.data.is_by[th.data.bn_pick] = 1; //已经是包邮了,就不要选择包邮券 + } + + shipping_price = parseFloat(shipping_price).toFixed(2); + var wl_txt = "formData.shipping_price"; + th.setData({[wl_txt]: shipping_price,}) + + } else { + var wl_txt = "formData.shipping_price"; + th.setData({[wl_txt]: 0,}) + } + + if (quan_no) { + if (th.data.using_quan[bn_pick].isby == 1) { + shipping_price = 0; + var wl_txt = "formData.shipping_price"; + th.setData({[wl_txt]: 0,}) + } + } + //-----------------支付价,优惠券不减物流----------------- + var total_m = (parseFloat(allpice1)).toFixed(2); + var order_m = (parseFloat(allpice - cut_price) - quan_price).toFixed(2); + var coupon_price = quan_price; //优惠券优惠了多少钱 + if (order_m < 0) { + order_m = 0; + coupon_price = parseFloat(order_m).toFixed(2); + } + //--看一下有没有订单优惠-- + var o_condition = parseFloat(order_m); + if (o_condition > 0) { + th.check_is_order_prom(o_condition, function () { + var order_prom_amount = 0; + var order_prom_id = 0; + if (th.data.order_prom[th.data.bn_pick]) { + var ord_prom = th.data.order_prom[th.data.bn_pick]; + order_prom_id = ord_prom['id']; + switch (ord_prom['type']) { + case 0: + order_m = Math.round(o_condition * ord_prom['expression']) / 100;//满额打折 + order_prom_amount = (o_condition - order_m).toFixed(2); + break; + case 1: + order_m = o_condition - ord_prom['expression'];//满额优惠金额 + order_prom_amount = ord_prom['expression']; + break; + } + } + //--订单优惠的显示-- + if (order_prom_id > 0) { + var order_prom_txt1 = "formData.order_prom_id"; + var order_prom_txt2 = "formData.order_prom_amount"; + th.setData({[order_prom_txt1]: order_prom_id, [order_prom_txt2]: order_prom_amount}) + } + + total_m = parseFloat(total_m) + parseFloat(th.data.formData.shipping_price); + order_m = parseFloat(order_m) + parseFloat(th.data.formData.shipping_price); + + total_m = total_m.toFixed(2); + order_m = order_m.toFixed(2); + + var atxt = "formData.total_amount"; + th.setData({[atxt]: total_m,}) + + var txt = "formData.user_money"; + var txt2 = "formData.order_amount"; + var txt3 = "formData.coupon_price"; + var amoney = parseFloat(th.data.userinfo.user_money - th.data.txmon - th.data.userinfo.frozen_money); + //--------------如果使用余额--------------------- + if (th.data.bn_use_money == 1) { + if (amoney > order_m) { + order_m = parseFloat(order_m).toFixed(2); + th.setData({[txt]: order_m, [txt2]: 0, [txt3]: coupon_price, show_submit: 1}) + } else { + order_m = parseFloat(order_m) - parseFloat(amoney); + order_m = order_m.toFixed(2); + th.setData({[txt]: amoney, [txt2]: order_m, [txt3]: coupon_price, show_submit: 1}) + } + } else { + th.setData({[txt]: 0, [txt2]: order_m, [txt3]: coupon_price, show_submit: 1}) + } + //优惠活动送积分 + if (good.s_intValue) { + txt = "formData.give_integral"; + th.setData({[txt]: good.s_intValue}); + } + //优惠送券 + if (good.s_coupon_id) { + var i_txt = "formData.give_coupon_id"; + //这个是json格式的 + var i_txt1 = "formData.g_coupon_num"; + var ob = [{"num": good.s_coupon_num, "c_id": good.s_coupon_id}]; + ob = JSON.stringify(ob); + th.setData({[i_txt]: good.s_coupon_id, [i_txt1]: ob}); + } + //优惠礼包 + if (good.s_libao) { + var l_txt = "formData.give_lb_id"; + //这个是json格式的 + var l_txt1 = "formData.g_lb_num"; + var ob = [{"num": good.s_lb_num, "l_id": good.s_libao}]; + ob = JSON.stringify(ob); + th.setData({[l_txt]: good.s_libao, [l_txt1]: ob}); + } + }) + } else { + total_m = parseFloat(total_m) + parseFloat(th.data.formData.shipping_price); + order_m = parseFloat(order_m) + parseFloat(th.data.formData.shipping_price); + var atxt = "formData.total_amount"; + + total_m = total_m.toFixed(2); + order_m = order_m.toFixed(2); + + th.setData({[atxt]: total_m,}) + + var txt = "formData.user_money"; + var txt2 = "formData.order_amount"; + var txt3 = "formData.coupon_price"; + var amoney = parseFloat(th.data.userinfo.user_money - th.data.txmon - th.data.userinfo.frozen_money); + //--------------如果使用余额--------------------- + if (th.data.bn_use_money == 1) { + if (amoney > order_m) { + order_m = parseFloat(order_m).toFixed(2); + th.setData({[txt]: order_m, [txt2]: 0, [txt3]: coupon_price, show_submit: 1}) + } else { + order_m = parseFloat(order_m) - parseFloat(amoney); + order_m = order_m.toFixed(2); + th.setData({[txt]: amoney, [txt2]: order_m, [txt3]: coupon_price, show_submit: 1}) + } + } else { + th.setData({[txt]: 0, [txt2]: order_m, [txt3]: coupon_price, show_submit: 1}) + } + //优惠活动送积分 + if (good.s_intValue) { + txt = "formData.give_integral"; + th.setData({[txt]: good.s_intValue}); + } + //优惠送券 + if (good.s_coupon_id) { + var i_txt = "formData.give_coupon_id"; + //这个是json格式的 + var i_txt1 = "formData.g_coupon_num"; + var ob = [{"num": good.s_coupon_num, "c_id": good.s_coupon_id}]; + ob = JSON.stringify(ob); + th.setData({[i_txt]: good.s_coupon_id, [i_txt1]: ob}); + } + //优惠礼包 + if (good.s_libao) { + var l_txt = "formData.give_lb_id"; + //这个是json格式的 + var l_txt1 = "formData.g_lb_num"; + var ob = [{"num": good.s_lb_num, "l_id": good.s_libao}]; + ob = JSON.stringify(ob); + th.setData({[l_txt]: good.s_coupon_id, [l_txt1]: ob}); + } + } + + wx.hideLoading(); + + }); + }); + }, + + //--------------------提交订单----------------------- + async submitForm(t){ + var sub_value = t; + + if (this.data.is_summit_ing == 1) return false; //--提交中退出-- + this.data.is_summit_ing = 1; + var th = this, pdata = new Array(); + var ff = true; + //------------立即购买------------- + if (th.data.is_b_now == 1 && th.data.bn_goods.prom_type != 5) { + + if (th.data.bn_exp_type == 0 && th.data.user_addr == null) { + ff = false; + getApp().my_warnning("请选择收货地址", 0, th); + th.data.is_summit_ing = 0; + } + if (!ff) return false; + var addr = th.data.user_addr; + if (th.data.bn_exp_type == 1) addr = null; + + if (th.data.bn_exp_type == 0) + if (th.data.wu_arr == null || th.data.wu_arr.length <= 0) { + getApp().my_warnning("读取物流失败", 0, th); + th.data.is_summit_ing = 0; + return false; + } + + var item = { + 'user_id': to.globalData.user_id, + 'consignee': addr == null ? "" : addr.consignee, + 'province': addr == null ? 0 : addr.province, + 'city': addr == null ? 0 : addr.city, + 'district': addr == null ? 0 : addr.district, + 'twon': addr == null ? 0 : addr.twon, + 'address': addr == null ? "" : addr.address, + 'more_address': addr == null ? "" : addr.more_address, + //'mobile': th.data.userinfo.mobile, + 'mobile': addr == null ? th.data.userinfo.mobile : addr.mobile, + 'email': '', + 'shipping_code': th.data.bn_exp_type == 1 ? 0 : th.data.wu_arr[th.data.index].code, + 'shipping_name': th.data.bn_exp_type == 1 ? '' : th.data.wu_arr[th.data.index].name, + 'invoice_title': '', + 'goods_price': th.data.formData.all_price, //商品总价 + 'shipping_price': th.data.formData.shipping_price, //物流金额 + 'user_money': th.data.formData.user_money, //使用余额 + 'total_amount': th.data.formData.total_amount, //订单总价 + 'order_amount': th.data.formData.order_amount, //应付 + 'user_note': t.detail.value.user_note, //用户备注 + 'store_id': oo.stoid, //商家 + 'pickup_id': th.data.bn_pick, //门店 + 'exp_type': th.data.bn_exp_type, //配送方式 + 'order_goods': new Array(), + }; + //是不是重新提交 + if (th.data.is_continue == 1) item.is_continue = 1; + + //获取立即购买的商品的信息 + var gg = to.get_b_now(); + //--商品的房间号-- + if (gg.room_id && gg.room_id > 0) { + item.room_ids = gg.room_id; + } + + var order_prom_list = {}; + //--判断有没有优惠活动-- + if (th.data.order_prom[item.pickup_id]) { + if (th.data.formData.order_prom_amount > 0) { + order_prom_list.order_prom_id = th.data.formData.order_prom_id; + order_prom_list.order_prom_amount = th.data.formData.order_prom_amount; + } + } + + //--判断优惠活动的提交-- + if (th.data.formData.cut_price > 0) { + order_prom_list.discount_amount = th.data.formData.cut_price.toFixed(2); + var ob = [{ + "prom_id": th.data.bn_goods.prom_id, + "dis": th.data.formData.cut_price.toFixed(2), + "ispt": 0 + }] + order_prom_list.prom_pt_json = JSON.stringify(ob); + } + if (th.data.formData.give_integral > 0) { + order_prom_list.give_integral = th.data.formData.give_integral; + } + if (th.data.formData.give_coupon_id > 0) { + order_prom_list.give_coupon_id = th.data.formData.give_coupon_id; + order_prom_list.g_coupon_num = th.data.formData.g_coupon_num; + } + if (th.data.formData.give_lb_id > 0) { + order_prom_list.give_lb_id = th.data.formData.give_lb_id; + order_prom_list.g_lb_num = th.data.formData.g_lb_num; + } + item.order_prom_list = order_prom_list; + + //组装优惠券的钱 + if (parseFloat(th.data.formData.coupon_price) > 0) { + item.coupon_price = th.data.formData.coupon_price; + item.coupon_no = th.data.using_quan[th.data.bn_pick].coupon_no; + } + if (th.data.using_quan[th.data.bn_pick] && th.data.using_quan[th.data.bn_pick].coupon_no && th.data.using_quan[th.data.bn_pick].isby) { + item.coupon_no = th.data.using_quan[th.data.bn_pick].coupon_no; + item.coupon_price = 0; + } + + //老会员成为分销下线需要的参数 + if (getApp().globalData.first_leader && !getApp().globalData.userInfo.first_leader) { + //判断一下分享人是不是分享商 + await app.request.promiseGet("/api/weshop/users/get/" + os.stoid + "/" + getApp().globalData.first_leader, {}).then(res => { + if (res.data.code == 0) { + var user = res.data.data; + if (user.is_distribut == 1) { + item.first_leader = parseInt(getApp().globalData.first_leader); + } + } + }) + } + + var goods = { + 'goods_id': gg.goods_id, + 'goods_name': gg.goods_name, + 'goods_sn': gg.goods_sn, + 'goods_num': gg.goods_num, + 'market_price': th.data.bn_goods.market_price, + 'goods_price': th.data.bn_goods.shop_price, + 'member_goods_price': th.data.bn_goods.shop_price, + 'store_id': oo.stoid, + 'prom_type': th.data.bn_goods.prom_type, //促销活动类型 + 'prom_id': th.data.bn_goods.prom_id, //促销活动id + }; + + //-- 把导购的信息填入-- + if (gg.guide_id) { + goods.guide_id = gg.guide_id; + goods.guide_type = gg.guide_type; + //调用接口判断是不是会员 + await getApp().request.promiseGet("/api/weshop/shoppingGuide/getId/" + oo.stoid + "/" + gg.guide_id, {}).then(res => { + if (res.data.code == 0) { + goods.guide_name = res.data.data.salesman; + goods.guide_sn = res.data.data.salesman_no; + } + }) + } + + //--商品的房间号-- + if (gg.room_id && gg.room_id > 0) { + goods.room_id = gg.room_id; + } + + //积分购,先要带is_integral_normal=1 + if (gg.is_integral_normal) goods.is_integral_normal = 1; + + //先要带is_pd_normal=1 + if (gg.is_pd_normal) goods.is_pd_normal = 1; + + //如果不立即购买或者秒杀,如果是线下库存购买的时候 + if (goods.prom_type != 1 && goods.prom_type != 6 && th.data.sales_rules == 2) { + var isok = 1; + await th.check_store_num(goods.goods_id, th.data.bn_pick, gg.goods_num, function (res) { + isok = res; + }); + if (!isok) { + getApp().confirmBox("商品的门店库存不足"); + th.data.is_summit_ing = 0; + return false; + } + } + + //-- 如果有线下取价的话 -- + if (th.data.bn_goods.is_offline) { + item.sum_offline_cut = (th.data.bn_goods.shop_price - th.data.bn_goods.offline_price).toFixed(2); + goods.offline_cut = item.sum_offline_cut; + goods.pricing_type = th.data.bn_goods.pricing_type; + goods.goods_price = th.data.bn_goods.offline_price; + goods.member_goods_price = th.data.bn_goods.offline_price; + } + + //--- 如果有优惠促销的金额,要把金额先平摊下去 --- + if (th.data.formData.cut_price > 0 && !th.data.ispt_goods) { + var g_arr = new Array(); + g_arr.push(goods); + var pt_data = { + 'prom_id': goods.prom_id, + 'dis': parseFloat(th.data.formData.cut_price), + 'goods': g_arr, + } + + var pt_res = null; + await getApp().request.promisePost("/api/weshop/order/getGoodsSplit", { + is_json: 1, + data: pt_data + }).then(res => { + if (res.data.code == 0) { + pt_res = res.data.data; + } + }) + if (pt_res) { + //平摊赋值 + goods.account = pt_res[0].fisrt_account; + goods.account_yu = pt_res[0].fisrt_account_yu; + item.is_discount_amount = 1; + } + } + + //--组装优惠券的钱-- + if (th.data.formData.coupon_price) { + item.coupon_price = th.data.formData.coupon_price; + item.coupon_no = th.data.using_quan[th.data.bn_pick].coupon_no; + goods.quan_num = th.data.formData.coupon_price; + goods.quan_no = item.coupon_no; + } + + item.order_goods.push(goods); + + //--如果有赠品的时候,赠品也要提交--- + if (th.data.buy_now_gift_goods) { + var gift_gg = th.data.buy_now_gift_goods; + var g_goods = { + 'goods_id': gift_gg.goods_id, + 'goods_name': gift_gg.goods_name, + 'goods_sn': gift_gg.goods_sn, + 'goods_num': gift_gg.buynum, + 'market_price': gift_gg.market_price, + 'goods_price': 0, + 'member_goods_price': 0, + 'store_id': oo.stoid, + 'is_gift': 1, + 'gift_id': gift_gg.gift_id, + 'prom_id': gift_gg.prom_id, + }; + item.order_goods.push(g_goods); + } + pdata.push(item); + + console.log(pdata); + } else { + //---------购物车的结算--------- + if (th.data.is_all_zt == 0 && th.data.user_addr == null) { + th.data.is_summit_ing = 0; + ff = false; + getApp().confirmBox("请新建收货地址"); + } + if (!ff) return false; + + var addr = th.data.user_addr; + if (th.data.is_all_zt == 1) addr = null; + var val_arr = t.detail.value; + + + if (th.data.is_all_zt != 1) + if (th.data.wu_arr == null || th.data.wu_arr.length <= 0) { + th.data.is_summit_ing = 0; + getApp().confirmBox("读取物流失败"); + return false; + } + + var order_prom_list_cart = th.data.order_prom_list_cart; + + //--组装推送数据-- + for (var i = 0; i < order_prom_list_cart.length; i++) { + var t_item = order_prom_list_cart[i]; + var item = { + 'user_id': to.globalData.user_id, + 'consignee': addr == null ? th.data.userinfo.mobile : addr.consignee, + 'province': addr == null ? 0 : addr.province, + 'city': addr == null ? 0 : addr.city, + 'district': addr == null ? 0 : addr.district, + 'twon': addr == null ? 0 : addr.twon, + 'address': addr == null ? "" : addr.address, + 'more_address': addr == null ? "" : addr.more_address, + 'mobile': addr == null ? th.data.userinfo.mobile : addr.mobile, + 'email': '', + 'shipping_code': th.data.is_all_zt == 1 ? 0 : th.data.wu_arr[t_item.wind].code, + 'shipping_name': th.data.is_all_zt == 1 ? '' : th.data.wu_arr[t_item.wind].name, + 'invoice_title': '', + 'goods_price': t_item.goods_price, //商品总价 + 'shipping_price': t_item.shipping_price, //物流金额 + 'user_money': t_item.user_money, //使用余额 + 'total_amount': t_item.total_amount, //订单总价 + 'order_amount': t_item.order_amount, //应付 + 'user_note': val_arr['user_note_' + t_item.pickup_id], //用户备注 + 'store_id': oo.stoid, //商家 + 'pickup_id': t_item.pickup_id, //门店 + 'exp_type': t_item.exp_type, //配送方式 + 'order_goods': new Array(), + }; + //是不是重新提交 + if (th.data.is_continue == 1) item.is_continue = 1; + //----- 如果有线下取价的话 ---- + if (t_item.is_offline == 1) { + item.sum_offline_cut = t_item.offline_price.toFixed(2); + } + + //组装优惠券的钱 + if (t_item.coupon_price) { + item.coupon_price = t_item.coupon_price; + item.coupon_no = th.data.using_quan[t_item.pickup_id].coupon_no; + } else if (t_item.quan_no) { + item.coupon_no = t_item.quan_no; + item.coupon_price = 0; + } + + var order_prom_list = {}; + //--判断有没有优惠活动-- + if (t_item.order_prom_amount > 0) { + order_prom_list.order_prom_id = t_item.order_prom_id; + order_prom_list.order_prom_amount = t_item.order_prom_amount; + } + + order_prom_list.discount_amount =0; + //--判断优惠活动的提交-- + if (t_item.cut_price > 0) { + order_prom_list.discount_amount += t_item.cut_price.toFixed(2); + order_prom_list.prom_pt_json = JSON.stringify(t_item.prom_pt_json); + } + //--判断组合优惠活动的提交-- + if (t_item.zh_cut_price > 0) { + order_prom_list.discount_amount += t_item.zh_cut_price.toFixed(2); + order_prom_list.zh_pt_json = JSON.stringify(t_item.zh_pt_json); + } + if (t_item.s_intValue > 0) { + order_prom_list.give_integral = t_item.s_intValue; + } + if (t_item.s_coupon_id) { + order_prom_list.give_coupon_id = t_item.s_coupon_id; + order_prom_list.g_coupon_num = JSON.stringify(t_item.g_coupon_num); + } + if (t_item.s_libao) { + order_prom_list.give_lb_id = t_item.s_libao; + order_prom_list.g_lb_num = JSON.stringify(t_item.g_lb_num); + } + if (Object.keys(order_prom_list).length > 0) + item.order_prom_list = order_prom_list; + + //老会员成为分销下线需要的参数 + if (getApp().globalData.first_leader && !getApp().globalData.userInfo.first_leader) { + //判断一下分享人是不是分享商 + await app.request.promiseGet("/api/weshop/users/get/" + os.stoid + "/" + getApp().globalData.first_leader, {}).then(res => { + if (res.data.code == 0) { + var user = res.data.data; + if (user.is_distribut == 1) { + item.first_leader = parseInt(getApp().globalData.first_leader); + } + } + }) + } + + + //房间号的ids + var room_ids = ""; + //-------------让商品添加到商品列表-------------------- + for (var k = 0; k < t_item.goods.length; k++) { + var g_item = t_item.goods[k]; + var goods = { + 'goods_id': g_item.goods_id, + 'goods_name': g_item.goods_name, + 'goods_sn': g_item.goods_sn, + 'goods_num': g_item.goods_num, + 'market_price': g_item.market_price, + 'goods_price': g_item.goods_price, + 'member_goods_price': g_item.goods_price, + 'store_id': oo.stoid, + }; + + //-- 线下取价也要写入 -- + if (g_item.offline_price && t_item.is_offline == 1) { + goods.goods_price = g_item.offline_price; + goods.member_goods_price = g_item.offline_price; + goods.offline_cut = (g_item.goods_price - g_item.offline_price).toFixed(2); + goods.pricing_type = g_item.pricing_type; + } + + //--把券的钱,写入从表--- + if (t_item.quan_youhui_list && t_item.coupon_price) { + for (var kk in t_item.quan_youhui_list) { + var you_item = t_item.quan_youhui_list[kk]; + if (g_item.prom_type!=7 && g_item.erpwareid == you_item.WareId) { + goods.quan_num = you_item.WareCashSum; + goods.quan_no = you_item.CashRepNo; + } + } + } + + //--判断活动的类型-- + switch (g_item.prom_type) { + case 1: + goods.prom_type = g_item.prom_type; + goods.prom_id = g_item.prom_id; + break; + case 3: + goods.prom_type = 3; + goods.prom_id = g_item.prom_id; + if (g_item.is_gift) { + goods.is_gift = g_item.is_gift; + goods.gift_id = g_item.gift_id; + } + break; + case 5: + goods.prom_type = 5; + goods.prom_id = g_item.prom_id; + if (g_item.is_collocation) { + goods.is_collocation = g_item.is_collocation; + } + break + case 7: + goods.prom_type = 7; + goods.prom_id = g_item.prom_id; + break + default: + goods.prom_type = 0; + goods.prom_id = 0; + } + + //如果不立即购买或者秒杀,如果是线下库存购买的时候 + if (goods.prom_type == 0 && th.data.sales_rules == 2) { + var isok = 1; + await th.check_store_num(goods.goods_id, t_item.pickup_id, goods.goods_num, function (res) { + isok = res; + }); + if (!isok) { + getApp().confirmBox(goods.goods_name + "的门店库存不足"); + th.data.is_summit_ing = 0; + return false; + } + } + + //把优惠的平摊结果写进去 + if (g_item.account >= 0 || g_item.account_yu != 0) { + if (g_item.account >= 0) goods.account = g_item.account; + if (g_item.account_yu != 0) goods.account_yu = g_item.account_yu; + item.is_discount_amount = 1; + } + + //导购ID + if (g_item.guide_id) { + goods.guide_id = g_item.guide_id; + goods.guide_type = g_item.guide_type; + //调用接口判断是不是会员 + await getApp().request.promiseGet("/api/weshop/shoppingGuide/getId/" + oo.stoid + "/" + g_item.guide_id, {}).then(res => { + if (res.data.code == 0) { + goods.guide_name = res.data.data.salesman; + goods.guide_sn = res.data.data.salesman_no; + } + }) + } + //如果房间号不为空的时候 + if (g_item.room_id) { + goods.room_id = g_item.room_id; + room_ids += g_item.room_id + ","; + } + item.order_goods.push(goods); + } + + //如果房间号不为空的时候 + if (room_ids != "") item.room_ids = ut.sub_last(room_ids); + pdata.push(item); + } + + + } + + if (pdata.length == 0) return; + var str = JSON.stringify(pdata); + + wx.showLoading({title: "加载中"}); + wx.request({ + url: oo.url + '/api/weshop/order/createWxdOrder', + data: str, + method: 'POST', + header: { + 'content-type': 'application/json' + },// 设置请求的 header + success: function (res) { + + + wx.hideLoading(); + if (res.statusCode == 200) { + var data = res.data; + if (data.code == 0) { + console.log(th.data.is_b_now); + //如果是购物车结算,还要删除购物车 + if (th.data.is_b_now == 0) { + console.log(th.data.cartlist_y); + var list = th.data.cartlist_y; + for (var i = 0; i < list.length; i++) { + //删除购物车 + a.delete("/api/weshop/cart/del/" + oo.stoid + "/" + list[i].id, {}); + } + } + var order_amount = 0; + pdata.forEach(function (em, ind) { + order_amount += em.order_amount; + }) + //要进行判断,如果是用微信支付,就要跳转到支付界面 + if (order_amount > 0) { + th.setData({isclose: 0}); + //void e.jumpToCart4({ + // order_sn: data.data, + //}, 1); + util_pay.pay(data.data, function () { + //app.my_warnning("支付成功",1,th); + //setTimeout(function () { + wx.redirectTo({ + url: "/pages/payment/pay_success/pay_success?type=2&order_sn=" + data.data + }) + //},1000) + + }, function () { + //支付失败 + setTimeout(function () { + wx.navigateBack({delta: 1}) + }, 1000) + }, oo.stoid); + + } else { + var dd = { + parent_sn: data.data, + store_id: oo.stoid, + type: 2, + }; + a.post("/api/weshop/order/pay/createOrder", { + data: dd, + success: function (t) { + //console.log(t); + if (t.data.code == 0) { + //app.my_warnning("支付成功",1,th); + //setTimeout(function () { + th.setData({isclose: 0}); + wx.redirectTo({ + url: "/pages/payment/pay_success/pay_success?type=2&order_sn=" + data.data, + }) + //}, 1000) + } + }, + fail: function () { + + } + }); + } + + } + else { + //--内容换行-- + var msg = data.msg; + //赠品活动已经取消,无法赠送,是否继续买单? + if (msg.indexOf("是否继续买单") > 0) { + wx.showModal({ + title: "提示", + content: data.msg, + cancelText: '取消', + confirmText: '确定', + showCancel: true, + success(res){ + if (res.cancel) { + return; + } else if (res.confirm) { + th.data.is_continue = 1; + th.data.is_summit_ing = 0; //是否提交中 + th.submitForm(sub_value); + } + } + }) + return; + } + if (msg.length > 13) { + msg = msg.slice(0, 13) + "\r\n" + msg.slice(13); + } + getApp().confirmBox(msg); + th.data.is_summit_ing = 0; //是否提交中 + } + } else { + th.data.is_summit_ing = 0; //是否提交中 + console.log("index.js wx.request CheckCallUser statusCode" + res.statusCode); + } + }, + fail: function () { + th.data.is_summit_ing = 0; + wx.hideLoading(); + console.log("index.js wx.request CheckCallUser fail"); + }, + complete: function () { + } + }) + + }, + //---确认线下门店的数量足不足--- + async check_store_num(goods_id, pick, goods_num, func){ + var lock = 0, pick_no, plist, erpwareid; + //先读取门店的lock + await getApp().request.promiseGet("/api/weshop/order/ware/lock/page", { + data: {store_id: os.stoid, wareId: goods_id, storageId: pick, pageSize: 1000} + }).then(res => { + if (res.data.code == 0 && res.data.data.total > 0) { + for (var i in res.data.data.pageData) + lock += res.data.data.pageData[i].outQty; + } + }) + //先获取门店的编号 + await getApp().request.promiseGet("/api/weshop/pickup/get/" + os.stoid + "/" + pick, { + data: {storeId: os.stoid, goodsId: t.goods_id, pickupId: pick} + }).then(res => { + if (res.data.code == 0) { + pick_no = res.data.data.pickup_no; + } + }) + //先获取商品的线下库存 + await getApp().request.promiseGet("/api/weshop/goods/get/" + os.stoid + "/" + goods_id, { + data: {storeId: os.stoid, goodsId: t.goods_id, pickupId: pick} + }).then(res => { + if (res.data.code == 0) { + erpwareid = res.data.data.erpwareid; + } + }) + //读取线下的门店库存 + await getApp().request.promiseGet("/api/weshop/goods/getWareStorages", { + data: {storageNos: pick_no, wareIds: encodeURIComponent(erpwareid), storeId: os.stoid, pageSize: 2000} + }).then(res => { + if (res.data.code == 0) { + plist = res.data.data.pageData[0]; + } + }) + var isok = 1; + if (goods_num > plist.CanOutQty - lock) { + isok = 0; + } + func(isok); + }, + + useCoupon: function () { + if (this.data.order.couponNum <= 0) { + getApp().my_warnning("无可用优惠券", 0, this); + return; + } + + var a = { + lid: this.data.coupon ? this.data.coupon.id : "0" + }; + wx.navigateTo({ + url: "/pages/user/checkcoupon/checkcoupon?" + s.Obj2Str(a) + }); + }, + enterAddressPage: function () { + getApp().globalData.is_cart_old = 1; + this.data.isget_by_quan = {}; + this.data.enterAddressPage = !0, wx.navigateTo({ + url: "/pages/user/address_list/address_list" + }); + }, + + //--------购物车购买时,选择自提和物流----------- + setexptype_w: function (t) { + + var def_exp_code = getApp().globalData.userInfo.def_exp_code, th = this; + var ty = t.currentTarget.dataset.t, txt = t.currentTarget.dataset.txt, + wl_txt = t.currentTarget.dataset.wl_txt, + ont = t.currentTarget.dataset.ont; + + th.setData({[txt]: ty}); + var iszt = 1; + + if (ty == 0) { + th.setData({is_all_zt: 0}); + } else { + for (var i = 0; i < th.data.cartlist.length; i++) { + var item = th.data.cartlist[i]; + if (item.exp_type == 0) { + iszt = 0; + break; + } + } + + th.setData({is_all_zt: iszt}); + + var ind = t.currentTarget.dataset.ind; + var c_item = th.data.cartlist[ind]; + var pickid = c_item.pickup_id; + + if (th.data.using_quan[pickid] && th.data.using_quan[pickid].isby == 1) { + th.data.using_quan[pickid] = {}; + th.setData({using_quan: th.data.using_quan}); + } + + + } + //判断有没有默认的物流地址值 + if (def_exp_code != "" && def_exp_code != null && def_exp_code != undefined) { + var wu_arr = this.data.wu_arr; + if (wu_arr != null && wu_arr != "") { + for (var i = 0; i < wu_arr.length; i++) { + if (wu_arr[i].shipping_code == def_exp_code) { + var set_txt = "cartlist" + th.setData({wl_txt: i}); + } + } + } + } + //----计算此时购物车的价格---- + th.calculatePrice(); + }, + + //--------立即购买时,选择自提和物流---------- + setexptype: function (t) { + var th = this; + var ty = t.currentTarget.dataset.t, def_exp_code = getApp().globalData.userInfo.def_exp_code; + th.setData({bn_exp_type: ty}); + if (ty == 0) { + th.setData({is_all_zt: 0}); + } + + //当物流为空的时候。 + if (ty == 0 && th.data.wu_arr == null) { + th.data.isget_by_quan = {}; + return th.get_wuliu(th.calculatePrice2()); + } -Page({ - data: { - url: t.globalData.setting.url, - resourceUrl: t.globalData.setting.resourceUrl, - imgUrl: t.globalData.setting.imghost, - goods: null, - order: null, - orderPrices: null, - coupons: null, - coupon: null, - invoiceToggle: !0, - payWithUserMoney: !0, - payWithPoints: !0, - maxWord: 0, - enterAddressPage: !1, - firstEnter: !0, - //页面获取的参数 - param:null, - //提交订单的格式 - formData: { - order_amount:0,//支付金额 - total_amount:0,//总价 - all_price:0,//商品卖的总价 - pay_points: 0,//使用积分 - user_money: 0,//使用余额 - couponCode: "",//使用优惠券(多单就用逗号隔开) - shipping_price:0,//物流费用 - }, - /*-----------当是购物车结算的时候-------------*/ - cartlist:null, - old_cartlist:null, - cartlist_y:null, //购物车原始列表 - js_use_money: 0, //是否使用余额 - is_all_zt:1, //是否全部都是自提 - - /*----------------立即购买---------------------*/ - is_b_now:0, //0是购物车结算 1立即购买 - bn_goods:null, //立即购买时候的调用商品 - bn_use_money:0,//是否使用余额 - bn_exp_type:1, //0是物流 1自提 - bn_pick:0, //选择的门店 - bn_pickname: "", //选择的门店名称 - bn_t_exp_t:0, //判断商品和门店一起决定的物流自提的方式0 都可以 1自提 2物流 - - bn_plus_cut_price:0, //显示等级卡会优惠多少钱 - /*------------------------*/ - user_addr:null,//物流 - userinfo:null, //获取会员 - /*----------物流选择--------*/ - wu_arr:null, - index:0, - w_sele_index:0, - - //判断页面是返回回来的还是 首次进入的 - isclose:1, - //申请提现的金额 - txmon:0, - yuer:0, - //提交中,不重复提交 - is_summit_ing:0, - //--更优惠券抵用有关,立即购买的,如果是购物车,就要把相应的值,写入cartlist数组中-- - ckeck_quan_price:0, - check_quan_price_list:'', - check_quan_ware_list:'', - - // 设计一个数组来存放已经选择了的券编号,coupon_no是券号,money是面值,coupon_price是真正优惠的价格,数组的下标是pickid - //using_quan[11]={coupon_no:"1212121",money:"20",coupon_price:"45"} - using_quan:{}, - open_quan:0, - //选择的券列表 - selected_quan_list:null, - //选择的券的门店 - selected_quan_pick:null, - is_close_quan:0, - disabled:0, - open_express:0,//控制选择物流名列表 的属性 - - is_express:0, //选中物流的属性 - expres_name:"", //点击选定 - isopen:0, //券的说明 - is_coupon:null, //选择券的控制属性 - is_shipping_code:"",//插入用户默认地址 - wu_arr_txt:"", //要更新的物流的字段 - - sales_rules:1, //默认是显示线上库存 - isget_by_quan:{}, //是否调用了接口获取包邮券 - get_by_quan_list:null, //立即购买的 - get_by_quan_list_cart:{}, //购物车的 - by_quan_list_cart:null, //点击选择的包邮列表 - - //如果是全场包邮了,或者是全场不包邮了,就不要选包邮券 - is_no_by:{}, - is_by:{}, - is_quan_by:{}, - //--购买赠送的商品-- - buy_now_gift_goods:null, - //--订单优惠-- - order_prom:{}, - //-- 购物车优惠活动 -- - prom_goods_map:{}, - //-- order_prom_list -- - order_prom_list_cart:null, - - ispt_goods:0, //是否平摊至单品,0要平摊 1不平摊 - - rank_switch:0, //是不是开同等级卡 - show_card:null, //显示的等级卡 - card_name:'', //显示的卡的名称 - card_cut_price:null,//减价多少钱 - - show_submit:0, //提交按钮变正常显示 - is_get_offline:1, - - tabs: ['门店自提','快递邮寄'], - currentTabIndex: 1, - }, - onLoad: function(t) { - wx.setNavigationBarTitle({ title: "填写订单",}) - var th = this; this.setData({ is_b_now: t.is_bnow == undefined ? 0 : t.is_bnow,}); - th.data.param=t; - //清理一下,确保最新的系统配置 - getApp().globalData.config2=null; - //清空is_pick_up - getApp().request.put("/api/weshop/useraddress/updatePickUp", { - data: {user_id: getApp().globalData.user_id, is_pickup: 0}, - success: function (s) { - } - }); - - - }, - onUnload: function () { this.setData({ isclose: 1 })}, - onHide: function () { - this.setData({ - isget_by_quan:{}, - is_no_by:{}, - is_by:{} - }) - }, - - //----------子页返回父页触发---------- - onShow: function() { - var th=this; - th.setData({show_submit:0}); //让提交先掩藏 - th.data.g_cart_q_time=null; - - if (th.data.isclose==0){ - wx.navigateTo({ - url: "/pages/index/index/index" - }) - - }else{ - this.getuser_addr(function(ie){ - - console.log("getuser_addr") - console.log(ie) - - //地址切换要把包邮券清空 - if( !th.data.user_addr || !ie || th.data.user_addr.address_id!=ie.address_id){ - var using_quan=th.data.using_quan; - for(var i in using_quan){ - var item=using_quan[i]; - if(item.isby==1){ - var ob={},txt="using_quan["+i+"]";ob[txt]={}; - th.setData(ob); - } - } - th.data.isget_by_quan={}; - } - - - th.data.prom_goods_map={}; - th.data.is_summit_ing=0; - //更换地址回来要重新调用计算价钱的接口 - if(!th.data.user_addr || th.data.user_addr.address_id!=ie.address_id){ - th.setData({user_addr: ie }); - if (th.data.is_b_now == 1) { - if(th.data.bn_goods) { - th.setData({add_back:1}); - //th.calculatePrice2(); - } - }else{ - if (th.data.cartlist){ - th.setData({add_back:1}); - //th.calculatePrice(); - } - } - }else{ - th.setData({user_addr: ie }); - } - var going=0; - - - //使用计时器,避免空现象 - /*--- - var jishi= setInterval(function () { - if (th.data.is_b_now == 1 && going==0) { - if(th.data.bn_goods) { - th.calculatePrice2();going=1;clearInterval(jishi); - } - }else if(going==0) { - if (th.data.cartlist){ - th.calculatePrice();going = 1; clearInterval(jishi); - } - } - },500)--*/ - - }); - var is_card_back=getApp().globalData.is_card_back; - //--更新默认地址--,看一下是不是跳到地址页面,同时也不是购买等级卡返回的,这里很重要,否则会重新更新收货物流公司 - if(!getApp().globalData.is_cart_old && !is_card_back && !getApp().globalData.plus_buy_back){ - this.update_code(); - }else{ - getApp().globalData.is_cart_old=0; - getApp().globalData.plus_buy_back=0; - } - } - - //先获取是否有关闭使用优惠券 - getApp().getConfig2(function (ee) { - var json_d = JSON.parse(ee.switch_list); - th.data.json_d=json_d; - th.data.ispt_goods=json_d.ispt_goods; //是不是平摊到单品的控制参数赋值 - var is_default_logistics=json_d.is_default_logistics; - - th.setData({ is_close_quan: json_d.is_close_quan,sales_rules:ee.sales_rules,rank_switch:json_d.rank_switch,is_default_logistics:is_default_logistics}); - - var rank_switch=json_d.rank_switch; - var max_price=-1; - var show_card=null; - var name=""; - //如果有开等级卡的时候, - //因为都是调接口,要返回在计算 - if(rank_switch==2){ - //-- 获取所有的等级卡, -- - getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?storeId=" + os.stoid, - {}).then(res => { - if(res.data.code==0){ - var plusCard = res.data.data; - //-- 循环判断,拿到最贵的那张卡 -- - for(var ih in plusCard){ - if(plusCard[ih].IsStopBuy == true){ continue; } - if(max_price<0){ - max_price=plusCard[ih].CardFee; - name='card'+plusCard[ih]['CorrPrice']; - show_card=plusCard[ih]; - }else{ - if(max_price0?th.data.userinfo.frozen_money:0) - su.data.data.summoney).toFixed(2); - th.setData({ txmon: su.data.data.summoney, yuer: yuer }); - } - } - }); - - - }, - }); - - }, - - - //-----真的获取购物车,入口-------- - get_cart: function () { - var th = this,app=getApp(); - a.get("/api/weshop/cart/list", { - data: { - user_id: to.globalData.user_id, selected:1,state:0, - store_id: oo.stoid, pageSize: 600 }, - success:async function (su) { - //按门店分类的数组 - var arr = new Array(); - var carr = su.data.data.pageData; - th.data.cartlist_y = carr; //存储原始购物车列表 - - //---是不是购买等级卡成功的返回---等级卡显示的判断--- - var is_card_back=getApp().globalData.is_card_back; - - for (var i = 0; i < carr.length; i++) { - var item1 = carr[i]; - //要把优惠活动加入,prom_goods_map中,赠品不要运算 - if(item1.prom_type==3 && item1.is_gift!=1){ - await th.add_prom_goods_map(item1); - } - - } - - //在分组的时候,就不要再调用接口,await - for (var i = 0; i < carr.length; i++) { - var item = carr[i]; - - //-- 如果是等级会员注册返回 -- - if(is_card_back){ - th.data.card_name=th.data.userinfo.card_field; - //如果是秒杀的返回,就要把活动弄回0 - if(item['prom_type']==1){ - item['prom_type']=0; - item['prom_id']=0; - } - // 拼团,搭配购不计算,赠品也不计算 - if( item['prom_type']!=5 && item['prom_type']!=6 && !item.is_gift && !item['is_collocation'] && item.goods_price>item[th.data.card_name] ){ - item.goods_price=item[th.data.card_name]; - carr[i].goods_price=item[th.data.card_name]; - - } - }else{ - // 拼团,搭配购不计算,赠品也不计算,同时会员还未购买等级会员 - if(item[th.data.card_name]>0 && item['prom_type']!=5 && item['prom_type']!=6 && !th.data.userinfo.card_field - && !item.is_gift && !item['is_collocation'] && item.goods_price>item[th.data.card_name] ){ - item.cut_price1= item.goods_price-item[th.data.card_name]; - carr[i].cut_price1=(item.goods_price-item[th.data.card_name])*item.goods_num; - } - - } - - item.original_img = oo.imghost + item.original_img; - /*----接口要弄出来的,先顶着-----*/ - var pcid = item.pick_id; - var find = 0; - //----如果有就加进去,没有就新增一个---- - //-----------循环查找门店------------- - if (arr.length > 0) { - for (var j = 0; j < arr.length; j++) { - if (arr[j].pickup_id == pcid) { - arr[j].goods.push(item); - //if(item.is_gift!=1){ - //确定配送方式 - if(arr[j].distr_t==0){ - arr[j].distr_t=item.distr_type; - } - var e_t=0 - switch (arr[j].distr_t) { - case 0: - e_t = 1; - if(th.data.json_d.pickupway && th.data.json_d.pickupway==1) e_t=0; - break; - case 1: e_t = 1; break; - case 2: e_t = 0; break; - } - arr[j].exp_type=e_t; - if (e_t == 0) th.setData({ is_all_zt:0}); - //} - - //-- 把等级卡会优惠多少钱装进去 -- - if(item.cut_price) arr[j].card_cut_price+=item.cut_price; - find = 1;break; - } - } - } - //------如果没有找到----- - if (find == 0) { - var pikname = '',sto=null; - //----找到门店名称----- - for (var k = 0; k < th.data.allsto.length; k++) { - if (pcid == th.data.allsto[k].pickup_id) { - pikname = th.data.allsto[k].pickup_name; sto = th.data.allsto[k]; break; - } - } - var e_t=0,dis_t=0;//物流方式,配送方式 - if (item.distr_type == 0) { - dis_t = sto.distr_type; + //--自提就要把包邮券清理掉-- + if (ty == 1) { + th.data.isget_by_quan = {}; + if (th.data.using_quan[th.data.bn_pick] && th.data.using_quan[th.data.bn_pick].isby == 1) { + th.setData({using_quan: {}}); + } + } + + //判断有没有默认的物流地址值 + if (def_exp_code != "" && def_exp_code != null && def_exp_code != undefined) { + var wu_arr = this.data.wu_arr; + if (wu_arr != null && wu_arr != "") { + for (var i = 0; i < wu_arr.length; i++) { + if (wu_arr[i].shipping_code == def_exp_code) { + th.setData({index: i}); + } + } + } + } + th.calculatePrice2() + + }, + + //--------立即购买时,使用余额-------- + set_bn_useyuer: function () { + var th = this; + th.setData({bn_use_money: !th.data.bn_use_money}); + th.calculatePrice2(); + }, + set_js_useyuer: function () { + var th = this; + th.setData({js_use_money: !th.data.js_use_money}); + th.calculatePrice(); + }, + //-------------------计算物流--------------- + calculatewuliu: function (code, o_shipping_price, goods_weight, + goods_piece, user_addr, freight_free, o_price, rs) { + var price = 0, th = this; + price += parseFloat(o_shipping_price); + //如果是包邮 + if (freight_free > 0 && o_price >= freight_free) { + return 0; + } + if (user_addr == null) { + return 0; + } + //计算物流的config item; + var item = null; + //先根据 镇 县 区找计算的config + item = th.get_wuliu_config(user_addr.district, code, rs); + if (item == null) item = th.get_wuliu_config(user_addr.city, code, rs); + if (item == null) item = th.get_wuliu_config(user_addr.province, code, rs); + if (item == null) item = th.get_wuliu_default(code, rs); + if (item == null) return o_shipping_price; + var fw_price = 0, fp_price = 0; + item = item.config; + if (item == null) return o_shipping_price; + //------按重量---------- + if (goods_weight >= 0 && item['money']) { + fw_price = parseFloat(item['money']); + if (goods_weight > item['first_weight']) { + var fw = goods_weight - item['first_weight']; + var n = Math.ceil(fw / item['second_weight']) + fw_price = fw_price + n * parseFloat(item['add_money']); + } + } + //------按件数---------- + if (goods_piece > 0 && item['piecemoney']) { + fp_price = parseFloat(item['piecemoney']); + if (goods_piece > item['first_piece']) { + var fp = goods_piece - item['first_piece']; + var m = Math.ceil(fp / item['second_piece']) + fp_price = fp_price + m * parseFloat(item['add_piecemoney']); + } + } + var rspice = parseFloat(price + fw_price + fp_price); + return rspice; + }, + + //------------循环获取config----------- + get_wuliu_config: function (region_id, code, rs) { + var item = null, rslist = rs.pageData; + for (var i = 0; i < rslist.length; i++) { + if (rslist[i].code == code && rslist[i].region_id == region_id) { + item = rslist[i]; + } + } + return item; + }, + //-------循环获取config,code default------- + get_wuliu_default: function (code, rs) { + var item = null, rslist = rs.pageData; + for (var i = 0; i < rslist.length; i++) { + if (rslist[i].shipping_code == code && rslist[i].is_default == 1) { + item = rslist[i]; + } + } + return item; + }, + + //----------立即购买,选择物流------------- + bindPickerChange: function (e) { + var ind = e.detail.value + this.setData({index: ind}); + this.calculatePrice2(); + }, + //----------购物车结算,选择物流------------- + bindPickerChange_w: function (e) { + var ind = e.detail.value, txt = e.currentTarget.dataset.txt; + this.setData({[txt]: ind}); + this.calculatePrice(); + }, + + /*----券的所有操作----*/ + open_coupon_list: function (e) { + var th = this; + var pickid = e.currentTarget.dataset.pickid; + var bn = e.currentTarget.dataset.bn; + var cindx = e.currentTarget.dataset.cind; + var get_by_quan_list_cart = th.data.get_by_quan_list_cart[pickid]; + + + if (bn == 1) { + th.setData({open_quan: 1, selected_quan_pick: pickid, disabled: 1}); + } else { + //---多单打开券的时候,就要判断券在其他门店是否有使用--- + var quanlist = th.data.cartlist[cindx].quan_list; + var exp_type = th.data.cartlist[cindx].exp_type; + + + //对于在其他门店已经选择了的券 要判断是否显示到界面 + var t_user = th.data.using_quan[pickid]; + + for (var i in quanlist) { + quanlist[i].is_using = th.check_in_sele(quanlist[i].CashRepNo, pickid); + if (t_user && quanlist[i].CashRepNo == t_user.coupon_no) + quanlist[i].show_red = 1; + else + quanlist[i].show_red = 0; + } + + if (get_by_quan_list_cart) { + for (var i in get_by_quan_list_cart) { + get_by_quan_list_cart[i].is_using = th.check_in_sele(get_by_quan_list_cart[i].no, pickid); + if (t_user && get_by_quan_list_cart[i].no == t_user.coupon_no) + get_by_quan_list_cart[i].show_red = 1; + else + get_by_quan_list_cart[i].show_red = 0; + } + th.setData({by_quan_list_cart: get_by_quan_list_cart}); } else { - dis_t = item.distr_type ; - } - switch (dis_t) { - case 0: - e_t = 1; - //-- 系统后台有设置要默认的 -- - if(th.data.json_d.pickupway && th.data.json_d.pickupway==1) e_t=0; - break; - case 1: e_t = 1; break; - case 2: e_t = 0; break; - } - //如果是物流的话,全部自提的控制要弄成0 - if (e_t == 0) th.setData({ is_all_zt:0}); - - var narr = new Array(); narr.push(item); - - //-----------拼装购物车结算的数组,如果有默认物流时要用默认物流编号,计算默认的物流,不管是不是自提都算一下----------------- - var m_wind=0,def_exp_code=getApp().globalData.userInfo.def_exp_code; - if(def_exp_code){ - for(var k=0;k0) { - for(var kj in th.data.cartlist){ - for(var ih in arr){ - var ie=arr[ih]; - if(ie.pickup_id==th.data.cartlist[kj].pickup_id){ - ie.exp_type=parseInt(th.data.cartlist[kj].exp_type); - ie.wind=parseInt(th.data.cartlist[kj].wind); - break; - } - } - } - } - - //-- 循环计算一下线下取价 -- - for (var k = 0; k < arr.length; k++) { - var c_item=arr[k]; - var item = arr[k].goods; - var offline_price=0; - var offline_num=0; - for (var c = 0; c < item.length; c++) { - //-- 如果这个商品是线下取价的时候 -- - if(item[c].offline_price>0){ - offline_price+= (item[c].goods_price-item[c].offline_price)*item[c].goods_num; - offline_num+=item[c].goods_num; - } - } - if(offline_price>0){ - c_item.offline_price=offline_price; - c_item.offline_num=offline_num; - c_item.is_offline=1; - } - } - - //深拷贝 - th.data.old_cartlist= JSON.parse(JSON.stringify(arr)); - th.setData({ - cartlist: arr, - }); - //--- 获取一下看有没有优惠券 ---- - setTimeout(function () { - var frozenQuan=null; - var url0="/api/weshop/users/frozenQuan/listFrozenQuan/"+app.globalData.user_id; - app.request.promiseGet(url0,{1:1}).then(res=>{ - if(res.data.code==0){ frozenQuan=res.data.data; th.data.frozenQuan=frozenQuan; } - th.calculatePrice(); - th.get_cart_quan(); - }) + console.log("2222222券的列表", quanlist); + th.setData({ + sele_cart_ind: cindx, + sele_exp_type: exp_type, + open_quan: 1, + selected_quan_pick: pickid, + selected_quan_list: quanlist, + disabled: 1 + }); + } + }, + close_coupon: function (e) { + var th = this; + th.setData({open_quan: 0, disabled: 0}); + }, - },500) - - } - }); - }, - - //-----获取立即购买的商品信息,入口---- - get_buy_goods: function (e){ - var th=this; - var gg = to.get_b_now(); - //--------如果goods_id一样,就是要立即购买----- - if(e==gg.goods_id){ - a.get("/api/weshop/goods/get/" + oo.stoid+"/"+e, { - success:async function (t) { - var gd = t.data.data; - if(!gd) return false; - - t.data.data.original_img = oo.imghost + t.data.data.original_img; - t.data.data['buynum'] = gg.goods_num; - var distr_t=0,et=0 - if (t.data.data.distr_type==0){ - distr_t = gg.pick_dis; - }else{ - distr_t = t.data.data.distr_type; - } - - switch (distr_t){ - case 0: - et=1; - //-- 系统后台有设置要默认的 -- - if(th.data.json_d.pickupway && th.data.json_d.pickupway==1) et=0; - break; - case 1: et = 1; break; - case 2: et = 0; break; - } - - - var m_wind=0,def_exp_code=getApp().globalData.userInfo.def_exp_code; - if(et==0 && def_exp_code){ - for(var k=0;k0 && gg.goods_price>gd[th.data.card_name] && !th.data.userinfo.card_field){ - var cut_p= (gg.goods_price-gd[th.data.card_name])*gg.goods_num; - th.setData({card_cut_price:cut_p}); - } - } - - - - switch (gd.prom_type){ - case 0: - case 2: - case 3: - case 4: - case 5: - case 6: - //--此时开始计算商品的使用券相关,如果有等级价还要计算和等级价相关的, - // 如果有优惠促销,还要把促销的部分计算在内,因为促销还有不能使用优惠券-- - t.data.data.shop_price=gg.goods_price; - t.data.data.goods_price=gg.goods_price; - t.data.data.goods_num=gg.goods_num; - th.data.ckeck_quan_price=t.data.data.shop_price*gg.goods_num; - th.data.check_quan_price_list=t.data.data.shop_price*gg.goods_num+""; - th.data.check_quan_ware_list=t.data.data.erpwareid+""; - - //-- 如果有线下取价的时候 -- - if(gg.offline_price){ - t.data.data.offline_price=gg.offline_price; - t.data.data.pricing_type=gg.pricing_type; - t.data.data.is_offline=1; - - th.data.ckeck_quan_price=t.data.data.offline_price*gg.goods_num; - th.data.check_quan_price_list=t.data.data.offline_price*gg.goods_num+""; - th.data.check_quan_ware_list=t.data.data.erpwareid+""; - } - - t.data.data.prom_id = 0; - t.data.data.prom_type = 0; - - //如果立即购买那边过来,就要读取接口,查看活动的优惠内容 - if(gg.prom_type==3){ - t.data.data.prom_id = gg.prom_id ; - t.data.data.prom_type =3; - //如果是优惠活动,就要调用活动,计算价格 - th.buy_now_prom_goods(gg.prom_id, t.data.data,function (data) { - //判断一下购买商品的数量是不是超过 - if(data.gift_goods_id){ - var num=1; - if(data.is_bz==1){ - num=data.bs; - if (num > data.gift_limit_num) num = 0; - } - //如果赠品数量超出礼品库存,就取消 - if(num>data['gift_storecount']) num=0; - if(num>0){ - var ob={}; - ob.is_gift=1; - ob.prom_id=data.prom_id; - ob.goods_id=data.gift_goods_id; - ob.goods_name=data.gift_goods_name; - ob.goods_color=data.gift_goods_color; - ob.goods_spec=data.gift_goods_spec; - ob.original_img=os.imghost+data.gift_original_img; - ob.market_price=data.gift_market_price; - ob.gift_id=data.gift_id; - ob.shop_price=0; - ob.buynum=num; - ob.weight=data.gift_weight; //商品的重量 - ob.exp_sum_type=data.gift_exp_sum_type; //商品的物流计算方式 - ob.uniform_exp_sum=data.gift_uniform_exp_sum //统一运费的金额 - - th.setData({buy_now_gift_goods:ob}); - } - } - - th.setData({ - bn_goods: data, bn_pickname: gg.pick_name,index:m_wind, - bn_pick: gg.pick_id, bn_t_exp_t: distr_t,bn_exp_type: et - }); - - //计算价格 - th.calculatePrice2(); - //获取优惠券 - th.get_buy_now_quan(); - - }) - }else{ - //--看是不是搭配促销-- - if(gg.prom_type==5){ - t.data.data.prom_id = gg.prom_id ; - t.data.data.prom_type =5; - if(gg.room_id){ - t.data.data.room_id=gg.room_id; - } - //--主商品要有导购id和导购类型-- - if(gg.guide_id){ - t.data.data.guide_id=gg.guide_id; - t.data.data.guide_type=gg.guide_type; - } - th.setData({collocation_goods:gg.collocation_goods}); - - var cart_arr=new Array(); - //var narr=gg.collocation_goods; - //修改成深拷贝,确保返回是数据正确 - var narr=JSON.parse(JSON.stringify(gg.collocation_goods)); - - narr.push(t.data.data); - - //-- 搭配促销的门店配送方式的修复 -- - et=1;distr_t=0; - for(var hi in narr){ - var dis_t=narr[hi].distr_type; - if(dis_t==2){ - th.setData({ is_all_zt:0});et=0; - } - if(dis_t>0){ - distr_t=dis_t; - } - } - - //自选的时候,系统配置了默认的配送方式是物流的时候 - if(distr_t==0 && th.data.json_d.pickupway && th.data.json_d.pickupway==1 ){ - et=0; - } - - - var ie = { - pickup_id: gg.pick_id, pname: gg.pick_name, goods: narr, exp_type: et, wind: m_wind, distr_t: distr_t,bn_t_exp_t: distr_t, - goods_price: 0, shipping_price: 0, user_money: 0, total_amount: 0, order_amount: 0, user_note:0}; - cart_arr.push(ie); - th.data.old_cartlist=cart_arr; + //---判断券时候在已经选择的列表中--- + check_in_sele: function (no, pick_id) { + var th = this; + if (th.data.using_quan.length <= 0) return false; + for (var i in th.data.using_quan) { + //--如果键值等于本身就要跳出-- + if (parseInt(i) == parseInt(pick_id)) continue; + var item = th.data.using_quan[i]; + if (item.coupon_no == no) { + return true; + } + } + return false; + }, + + /*--点击选择券--*/ + sele_quan_item: function (e) { + + var ind = e.currentTarget.dataset.ind; + var quan_item = this.data.selected_quan_list[ind]; + var pickid = this.data.selected_quan_pick; //现在选择的是哪一个门店 + //--如果券是单品使用的时候-- + if (quan_item && quan_item.UseObjectType && quan_item.UseObjectType == "20") { + //---只有多件购买的时候才要计算,//购物车购买和搭配勾的时候--- + var gg = getApp().get_b_now(); + if (this.data.is_b_now == 0 || gg.prom_type == 5) { + var arr = this.data.order_prom_list_cart; + var t_pk_item = null; + for (var ii in arr) { + var ep = arr[ii]; + if (pickid == ep.pickup_id) { + t_pk_item = ep; + break; + } + } + //--寻找券指定的商品-- + var gd = null; + if (t_pk_item) { + var goods = t_pk_item.goods; + for (var gid in goods) { + if (quan_item.UseObjectID == goods[gid].erpwareid) { + gd = goods[gid]; + } + } + } + if (!gd) { + getApp().my_warnning("未找到指定商品使用", 0, this, 600); + return false; + } + //计算价格,如果有平摊的实收要计算实收的金额 + var item_price = gd.goods_price * gd.goods_num; + //-- 如果有平摊下去,有实收价格的时候,就要用account_fir来计算价格 -- + if (gd.account_fir != null && gd.account_fir != undefined) { + item_price = gd.account_fir * gd.goods_num; } - th.setData({ - bn_goods: t.data.data, bn_pickname: gg.pick_name,index:m_wind, - bn_pick: gg.pick_id, bn_t_exp_t: distr_t,bn_exp_type: et - }); - - - //--搭配促销也是按照购物车的方式来计算优惠券-- - if(gg.prom_type==5){ - var frozenQuan=null; - var url0="/api/weshop/users/frozenQuan/listFrozenQuan/"+app.globalData.user_id; - app.request.promiseGet(url0,{1:1}).then(res=> { - if(res.data.code==0){ frozenQuan=res.data.data; th.data.frozenQuan=frozenQuan; } - //计算价格 - th.calculatePrice2(); - th.get_cart_quan(); - }); - }else{ - //计算价格 - th.calculatePrice2(); - //获取优惠券, - th.get_buy_now_quan(); - } - } - - break; - case 1: //---秒杀----- - var quanlist=null; - getApp().request.get("/api/weshop/activitylist/getSJGoodsPrice/"+gd.store_id - + "/" + gd.goods_id + "/1/" + gd.prom_id,{ - success: async function (tt) { - if(tt.data.code==0){ - t.data.data.shop_price=tt.data.data.prom_price; - }else{ - t.data.data.prom_id = 0; t.data.data.prom_type = 0; - - th.data.ckeck_quan_price=t.data.data.shop_price*gg.goods_num; - th.data.check_quan_price_list=t.data.data.shop_price*gg.goods_num+""; - th.data.check_quan_ware_list=t.data.data.erpwareid+""; - } - - th.setData({ - bn_goods: t.data.data, bn_pickname: gg.pick_name, bn_exp_type: et,index:m_wind, - bn_pick: gg.pick_id, bn_t_exp_t: distr_t,bn_exp_type: et - }); - - //计算价格 - th.calculatePrice2(); - //获取优惠券 - th.get_buy_now_quan(); - } - }); - - break; - } - }, - }); - } - }, - - //---------------检查是否有收货地址------------------- - checkAddressList: function() { - var t = this; - return !(!this.data.order || null == this.data.order.userAddress) || (wx.showModal({ - title: "请先填写或选择收货地址~", - success: function(a) { - a.confirm ? t.enterAddressPage() : wx.navigateBack(); - }, - fail: function() { - wx.navigateBack(); - } - }), !1); - }, - showInvoice: function() { - this.setData({ - invoiceToggle: !this.data.invoiceToggle - }); - }, - keyUpChangePay1: function(t) { - this.setData({ - payWithUserMoney: !(t.detail.value.length > 0) - }); - }, - keyUpChangePay2: function(t) { - this.setData({ - payWithPoints: !(t.detail.value.length > 0) - }); - }, - keyUpChangeNum: function(t) { - this.setData({ - maxWord: t.detail.value.length - }); - }, - - calc_per:async function(c_arr){ - var th=this; - //-- 循环处理 -- - for(var i in c_arr){ - var cart_item=c_arr[i]; //就是每一单的意思 - var pickid=cart_item.pickup_id; - var ord_goods=c_arr[i].goods; //就是每一单的从表的意思 - var o_price=0,q_conditin=0; - //--------循环计算总价----------- - for(var j=0;j { - if (res.data.code == 0 && res.data.data.condition) { - var get_data = res.data.data; - item_map.is_bz = get_data.is_bz; //是不是倍增 - item_map.bs = get_data.bs; //是不是倍数 - item_map.is_past = get_data.is_past; //是不是包邮 - item_map.prom_price = get_data.price>=0?get_data.price:item_map.price; - item_map.s_intValue = get_data.intValue; - item_map.s_coupon_id = get_data.coupon_id; - item_map.s_coupon_num = get_data.coupon_num; - if(get_data.gift_id && get_data.goodsinfo) { - item_map.gift_id = get_data.gift_id; - item_map.gift_goods_id = get_data.goods_id; - item_map.gift_goods_name = get_data.goods_name; - item_map.gift_goods_color = get_data.goodsinfo.goods_color ? get_data.goodsinfo.goods_color : ''; - item_map.gift_goods_spec = get_data.goodsinfo.goods_spec ? get_data.goodsinfo.goods_spec : ''; - item_map.gift_original_img = get_data.goodsinfo.original_img; - item_map.gift_limit_num = get_data.limit_num; - item_map.gift_storecount = get_data.gift_storecount; - item_map.gift_weight = get_data.goodsinfo.weight; - item_map.gift_exp_sum_type = get_data.goodsinfo.exp_sum_type; - item_map.uniform_exp_sum = get_data.goodsinfo.uniform_exp_sum; - - } - item_map.s_libao = get_data.libao; - item_map.s_lb_num = get_data.lb_num; - } - }) - } - - //有活动,且优惠活动并没有限制使用优惠券,且有减价 - //--看有没有减价-- - //if(item_map.prom_price>=0 && item_map.price-item_map.prom_price){ - if(item_map.price-item_map.prom_price && item_map.prom_price!==null){ - if(cart_item.prom_pt_json){ - cart_item.prom_pt_json.push({"prom_id":item_map.prom_id,"dis":(item_map.price-item_map.prom_price).toFixed(2),"ispt":0}) - }else{ - cart_item.prom_pt_json=[{"prom_id":item_map.prom_id,"dis":(item_map.price-item_map.prom_price).toFixed(2),"ispt":0}]; - } - - //-- 如果系统要平摊到单品 -- - //if(!th.data.ispt_goods){ - var pt_data={ - 'prom_id':item_map.prom_id, - 'dis': parseFloat((item_map.price-item_map.prom_price).toFixed(2)), - 'goods':item_map.goods - } - - var pt_res=null; - await getApp().request.promisePost("/api/weshop/order/getGoodsSplit",{is_json:1,data:pt_data}).then(res=>{ - if(res.data.code==0){ pt_res=res.data.data; } - }) - if(pt_res){ - for (var io in item_map.goods){ - //平摊赋值 - item_map.goods[io].account_fir=th.arr_get_goods(item_map.goods[io].goods_id,pt_res).fisrt_account; - item_map.goods[io].account_yu_fir=th.arr_get_goods(item_map.goods[io].goods_id,pt_res).fisrt_account_yu; - if(!th.data.ispt_goods){ - item_map.goods[io].account=item_map.goods[io].account_fir; - item_map.goods[io].account_yu=item_map.goods[io].account_yu_fir; - } - } - } - // } - - o_price-=(item_map.price-item_map.prom_price); - //如果有限制使用优惠券,就要减掉参与的活动商品的钱 - if(!item_map.is_xz_yh) q_conditin=o_price; - } - - //--------循环计算商品是不是包邮,是不是使用优惠券,此时循环是商品从表----------- - for(var j=0;j0){ - //-----------获取不包邮区域,不包邮商品------- - await getApp().request.promiseGet("/api/weshop/areaFeemail/getAreaGoods",{ - data:{store_id:os.stoid,id:no_ex_id} - }).then(res=>{ - if(res.data.code==0 && res.data.data && res.data.data.length>0){ - by_qc=res.data.data[0]; - } - }) - }; - var c_arr=JSON.parse(JSON.stringify(th.data.old_cartlist)); - - - if(th.data.cartlist && th.data.cartlist.length>0){ - for(var i =0;i { - if (res.data.code == 0 && res.data.data && res.data.data.length > 0) { - var q_data = res.data.data; - //--存储商品优惠的内容-- - cart_item.quan_youhui_list = q_data; - for (var k in q_data) - quan_price += q_data[k].WareCashSum; - } - }) - } - - - //--------循环计算总价----------- - for(var j=0;j0) o_price-=c_arr[i].cut_price; - - //-- 计算线下取价的功能 -- - if(cart_item.is_offline==1){ - o_price=o_price-cart_item.offline_price; - } - - //判断包邮券的钱 - var q_conditin=0; - q_conditin=o_price-quan_price; - - cart_item.goods_price = f_o_price.toFixed(2); //商品总费用,用f_o_price来计算 - //计算物流费用 - cart_item.shipping_price = 0; - - - - //--有不包邮区域,且不免运费,全场的计算,要减到优惠金额 和券的金额-- - if(no_ex_id && freight_free>0 && (o_price-quan_price)>=freight_free && cart_item.exp_type == 0 && (by_qc.region_list || by_qc.goods_list) ){ - //如果有设置不包邮区域的时候 - if(by_qc.region_list!="" && by_qc.region_list!=null && by_qc.region_list!=undefined ){ - if(th.check_by_area(by_qc.region_list)){ - freight_free=0; - th.data.is_no_by[pickid]=1; - } - } - //如果有设置不包邮区商品 - if(by_qc.goods_list!="" && by_qc.goods_list!=undefined && by_qc!=null && freight_free>0){ - freight_free=0; - no_ex_good=by_qc.goods_list; - } - } - - //--如果是物流,且选择了地址,就要开始显示包邮券,且包邮券也已经优惠了优惠活动的金额-- - if (cart_item.exp_type == 0 && th.data.user_addr != null) { - //看是不是有调用过包邮券 - if(!th.data.isget_by_quan[pickid]){ - //--判断要不要显示包邮券,调用接口,因为有for循环--- - await getApp().request.promiseGet("/api/weshop/userfeemail/pageAndArea",{ - data:{store_id:os.stoid,isuse:0,condition:q_conditin,user_id:getApp().globalData.user_id,pageSize:2000} - }).then(res=>{ - if(res.data.code==0 && res.data.data.total>0){ - //此时要循环判断包邮的地区,不包邮商品是不是符合 - var arr=[],quanlist=res.data.data.pageData; - quanlist = th.check_is_frozenQuan(quanlist, th.data.frozenQuan,1); - for(var i in quanlist){ - var item=quanlist[i]; - var goods=cart_item.goods; - var g_arr=[]; - for(var ii in goods){ - g_arr.push(goods[ii].goods_id); - } - if(item.region_list && th.check_by_area(item.region_list)) continue; //如果是不包邮区域 - if(item.goods_list){ - var no_goods_arr=item.goods_list.split(","); - if(ut.isContained(no_goods_arr,g_arr)) continue; //如果是不包邮商品 - } - arr.push(item); - } - if(arr){ - th.data.get_by_quan_list_cart[pickid]=arr; - //th.setData({get_by_quan_list_cart:th.data.get_by_quan_list_cart}); - if(th.data.is_b_now){ - th.setData({get_by_quan_list:arr}); - } - } - th.data.isget_by_quan[pickid]=1; - } - }) - } - } - - //如果是包邮券的时候,要看看券的情况 - if(quan_no && th.data.using_quan[pickid].isby==1){ - var quan=th.data.using_quan[pickid]; - if(!quan.goods_list){ - th.data.is_quan_by[pickid]=1; //专门给券的判断用的 - }else{ - th.data.is_quan_by[pickid]=0; - //看有没有模板的包邮 - if(no_ex_good){ - var arr=no_ex_good.split(","); - var arr2=quan.goods_list.split(","); - if(ut.isContained(arr,arr2)){ - getApp().my_warnning("全场不包邮商品和包邮券的重复",0,th); - th.data.using_quan[pickid]={}; - th.setData({using_quan:th.data.using_quan}) - return false; - } - var n_arr=ut.mergeArray(arr,arr2); - no_ex_good=n_arr.join(","); - }else{ - no_ex_good=quan.goods_list; - } - } - }else{ - th.data.is_quan_by[pickid]=0; //专门给券的判断用的 - } - - //--------循环计算总价----------- - for(var j=0;j=freight_free && freight_free>0 && !is_good_no_by && th.data.is_no_by[pickid]!=1){ - continue; - } - - //--如果是包邮券使用的情况下,如果商品是包邮的,那么就不进行计算-- - if(th.data.using_quan[pickid] && th.data.using_quan[pickid].isby==1 && !is_good_no_by){ - continue; - } - - - var no_ex_good_arr=null; - if(no_ex_good) no_ex_good_arr=no_ex_good.split(','); - - //----------------如果是选择了物流--------------------- - if(cart_item.exp_type == 0 && item[j].is_free_shipping==0 && (!no_ex_good_arr || no_ex_good_arr.indexOf(item[j].goods_id+'')>-1 )){ - - - //如果地址不为空 - if (th.data.user_addr!=null){ - switch (item[j]['exp_sum_type']) { - case 1: - //统一运费 - o_shipping_price += item[j]['uniform_exp_sum'];break; - case 2:+'' - if (goods_weight < 0) goods_weight = 0; - //累积商品重量 每种商品的重量 * 数量 - goods_weight += item[j]['weight'] * item[j]['goods_num']; - - break; - case 3: - if (goods_piece < 0) goods_piece = 0; - //累积商品数量 - goods_piece += item[j]['goods_num']; - break; - } - } - - } - } - - //计算物流价格 - if (cart_item.exp_type == 0) { - //freight_free=0; //后面不在进行判断 - var code = ""; - if(th.data.wu_arr && th.data.wu_arr[cart_item.wind]) - code=th.data.wu_arr[cart_item.wind].code; - cart_item.shipping_price = - th.calculatewuliu(code, o_shipping_price, goods_weight, - goods_piece,th.data.user_addr, freight_free, o_price-quan_price, rs); - - if(!th.data.using_quan[pickid] || th.data.using_quan[pickid].isby!=1){ - if( cart_item.shipping_price ==0) th.data.is_by[pickid]=1; //已经全场包邮,就不要选择券了 - } - }else{ - cart_item.shipping_price=0; - } - - cart_item.shipping_price=cart_item.shipping_price.toFixed(2); - - //总价计算,总价不包含运费 - cart_item.order_amount= (o_price -quan_price).toFixed(2); - cart_item.total_amount= f_o_price.toFixed(2); - - var order_prom_amount=0; var order_prom_id=0; var o_condition=cart_item.order_amount; - var order_m=0; - //---判断是不是有订单优惠--- - await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion",{ - data:{store_id:os.stoid,orderAmount:cart_item.order_amount} - }).then(res=>{ - if(res.data.code==0){ - var ord_prom=res.data.data; - order_prom_id = ord_prom['id']; - switch (ord_prom['type']) { - case 0: - order_m = Math.round(o_condition * ord_prom['expression'])/100;//满额打折 - order_prom_amount=(o_condition -order_m).toFixed(2); - break; - case 1: - //order_m = o_condition - ord_prom['expression'];//满额优惠金额 - order_prom_amount= ord_prom['expression']; - break; - } - } - }) - - cart_item.order_prom_amount=0; - //--订单优惠的显示-- - if(order_prom_id>0){ - cart_item.order_amount= (o_price -quan_price-order_prom_amount).toFixed(2); - cart_item.order_prom_id=order_prom_id; - cart_item.order_prom_amount=order_prom_amount; - } - coupon_price=quan_price; - if( cart_item.order_amount<0){ - cart_item.order_amount=0; - coupon_price=o_price; - } - - cart_item.total_amount= parseFloat(cart_item.total_amount)+parseFloat(cart_item.shipping_price); //总金额 - cart_item.order_amount=parseFloat(cart_item.order_amount)+parseFloat(cart_item.shipping_price); //总金额 - cart_item.total_amount= cart_item.total_amount.toFixed(2); - cart_item.order_amount=cart_item.order_amount.toFixed(2); - - //搭配购在使用余额 - if(th.data.bn_use_money==1 && th.data.is_b_now==1){ - - if (umoney > cart_item.order_amount) { - cart_item.user_money = cart_item.order_amount; - umoney = umoney - cart_item.order_amount; - }else { - cart_item.user_money = umoney; - umoney=0; - } - - }else{ - //--------------如果使用余额,购物车购买--------------------- - if (th.data.js_use_money == 1) { - if (umoney > cart_item.order_amount) { - cart_item.user_money = cart_item.order_amount; - umoney = umoney - cart_item.order_amount; - }else { - cart_item.user_money = umoney; - umoney=0; - } - }else{ - cart_item.user_money=0; - } - } - - - - cart_item.user_money = parseFloat(cart_item.user_money).toFixed(2); - - if (coupon_price>0) cart_item.coupon_price=coupon_price.toFixed(2); - else cart_item.coupon_price = coupon_price - if(quan_no) cart_item.quan_no = quan_no; - - - //cart_item.goods_price = o_price.toFixed(2); - cart_item.order_amount= cart_item.order_amount- cart_item.user_money; //会员使用余额 - - - all_price += parseFloat(f_o_price); - all_total_m += parseFloat(cart_item.total_amount); - all_shipping_m += parseFloat(cart_item.shipping_price); - all_order_m += parseFloat(cart_item.order_amount); - all_user_m += parseFloat(cart_item.user_money); - all_coupon_price_m+= parseFloat(cart_item.coupon_price); - all_cutprice+=parseFloat(cart_item.cut_price); - all_order_prom+=parseFloat(cart_item.order_prom_amount); - } - - all_shipping_m=parseFloat(all_shipping_m).toFixed(2); - all_total_m = parseFloat(all_total_m).toFixed(2); - all_order_m = parseFloat(all_order_m).toFixed(2); - all_price = parseFloat(all_price).toFixed(2); - all_user_m = parseFloat(all_user_m).toFixed(2); - all_total_m = parseFloat(all_total_m).toFixed(2); - all_coupon_price_m = parseFloat(all_coupon_price_m).toFixed(2); - all_cutprice=all_cutprice.toFixed(2); - all_order_prom=all_order_prom.toFixed(2); - - var atxt = "formData.total_amount"; - var atxt1 = "formData.order_amount"; - var atxt2 = "formData.all_price"; - var atxt3 = "formData.user_money"; - var atxt4 = "formData.shipping_price"; - var atxt5 = "formData.coupon_price"; - var atxt6 = "formData.cut_price"; - var atxt7 = "formData.order_prom_amount"; - - th.setData({ [atxt]: all_total_m, [atxt1]: all_order_m, - [atxt2]: all_price, [atxt3]: all_user_m, [atxt4]: all_shipping_m, - [atxt5]: all_coupon_price_m,[atxt6]: all_cutprice, - [atxt7]: all_order_prom, show_submit:1 - }) - th.data.order_prom_list_cart=c_arr; - th.set_can_num(); - wx.hideLoading(); - - }); - }); - }, - - set_can_num:function(){ - var th=this; - //-- 这个地方,循环计算几张优惠券可用-- - for ( var iter in th.data.cartlist){ - var num=0; - var c_item=th.data.cartlist[iter]; - var pkid=c_item.pickup_id; - //-- 普通券 -- - if(c_item.quan_list){ - for (var iter1 in c_item.quan_list){ - //判断是不是其他订单有选用 - var is_other_is_use=th.check_other_use(c_item.quan_list[iter1],pkid); - if(!is_other_is_use) num++; - } - } - //-- 包邮券 -- - var by_quan=th.data.get_by_quan_list_cart[pkid]; - if(by_quan){ - for (var iter2 in by_quan){ - //判断是不是其他订单有选用 - var is_other_is_use=th.check_other_use_by(by_quan[iter2],pkid); - if(!is_other_is_use) num++; - } - } - var set_txt="cartlist["+iter+"].can_num"; - th.setData({ [set_txt]: num}); - } - }, - - - //---------计算立即购买---------- - calculatePrice2: function () { - var th = this, good = this.data.bn_goods; - - if(!good) return false; - - //搭配的计算要用购物的车计算方法 - if(good.prom_type==5){ - th.calculatePrice(); - return false; - } - - wx.showLoading({ - title:"处理中." - }) - //-----------计算商品总价-------------- - var allpice = good.shop_price * good.buynum; - var cut_price=0; - var allpice1=allpice; - - - if(good.prom_type==3 && good.prom_price!==null){ - cut_price=allpice-good.prom_price; - } - - allpice=parseFloat(allpice).toFixed(2); - var txt = "formData.all_price"; - th.setData({ [txt]: allpice, }); - if(cut_price){ - var c_txt="formData.cut_price"; - th.setData({ [c_txt]: cut_price, }); - - } - - //如果有线下取价的时候 - if(good.is_offline){ - allpice = good.offline_price * good.buynum; - } - - - to.getConfig2(function (ee) { - to.getwuliuprice(async function (rs) { - - var o_shipping_price = 0, goods_weight = -1, goods_piece = -1; - - //---如果有选择优惠券的情况下--- - var quan_price=0,bn_pick=th.data.bn_pick; - var quan_no=null; - if(th.data.using_quan[bn_pick]!=null && th.data.using_quan[bn_pick]!=undefined) - quan_no=th.data.using_quan[bn_pick].coupon_no; - - if(quan_no){ - if(th.data.using_quan[bn_pick].isby!=1){ - //---获取优惠券优惠--- - await getApp().request.promiseGet("/api/weshop/couponList/getUseCouponPrice",{ - data:{storeId:oo.stoid,CashRepNo:quan_no, WaresSum:th.data.ckeck_quan_price, WareIds:th.data.check_quan_ware_list} - }).then(res=>{ - if(res.data.code==0 && res.data.data && res.data.data.length>0 ){ - quan_price=res.data.data[0].WareCashSum; - } - }) - } - } - - //-----------当地址不为空,且是物流时,计算物流费用,并同时商品不是优惠活动的包邮---------- - if (th.data.user_addr != null && th.data.bn_exp_type == 0 && good.is_free_shipping == 0 && good.is_past!=1 ){ - //看是不是有调用过包邮券 - if(!th.data.isget_by_quan[th.data.bn_pick] && good.is_xz_yh!=1){ - var condition=allpice-cut_price-quan_price; - //--判断要不要显示包邮券,链式调用接口,调取包邮券,已经是减了优惠的金额,见到优惠券的钱--- - getApp().request.promiseGet("/api/weshop/userfeemail/pageAndArea",{ - data:{store_id:os.stoid,isuse:0,condition:condition,user_id:getApp().globalData.user_id,pageSize:2000} - }).then(res=>{ - if(res.data.code==0 && res.data.data.total>0){ - //此时要循环判断包邮的地区,不包邮商品是不是符合 - var arr=[],quanlist=res.data.data.pageData; - quanlist = th.check_is_frozenQuan(quanlist, th.data.frozenQuan,1); - for(var i in quanlist){ - var item=quanlist[i]; - if(item.region_list && th.check_by_area(item.region_list)) continue; //如果是不包邮区域 - if(item.goods_list && th.check_by_goods(item.goods_list)) continue; //如果是不包邮商品 - arr.push(item); - } - if(arr){ - th.setData({get_by_quan_list:arr}); - } - th.data.isget_by_quan[th.data.bn_pick]=1; - } - }) - } - - switch (good['exp_sum_type']) { - case 1: - //统一运费 - o_shipping_price += good['uniform_exp_sum']; break; - case 2: - if (goods_weight < 0) goods_weight = 0; - //累积商品重量 每种商品的重量 * 数量 - goods_weight += good['weight'] * good['buynum'];break; - case 3: - if (goods_piece < 0) goods_piece = 0; - //累积商品数量 - goods_piece += good['buynum']; break; - } - - var code =""; - if(th.data.wu_arr && th.data.wu_arr[th.data.index]) code=th.data.wu_arr[th.data.index].code; - var freight_free = ee.freight_free; //全场满多少包邮 - var no_ex_id=ee.no_ex_id; - th.data.is_no_by[th.data.bn_pick]=0; - - var no_by_data=null; - var gift_freight_free=freight_free; - - - //有不包邮区域,且不免运费 - if(no_ex_id && freight_free>0 && freight_free<= parseFloat(allpice)-cut_price-quan_price){ - //-----------获取不包邮区域,不包邮商品------- - await getApp().request.promiseGet("/api/weshop/areaFeemail/getAreaGoods",{ - data:{store_id:os.stoid,id:no_ex_id} - }).then(res=>{ - if(res.data.code==0 && res.data.data && res.data.data.length>0){ - no_by_data=res.data.data[0]; - //如果有设置不包邮区域的时候 - if(res.data.data[0].region_list){ - if(th.check_by_area(res.data.data[0].region_list)){ - freight_free=0; - th.data.is_no_by[th.data.bn_pick]=1; - } - } - //如果有设置不包邮商品 - if(res.data.data[0].goods_list && freight_free){ - if(th.check_by_goods(res.data.data[0].goods_list)){ - freight_free=0; - th.data.is_no_by[th.data.bn_pick]=1; - } - } - } - }) - } - - th.data.is_by[th.data.bn_pick]=0; - //--------------开始计算物流------------------ - var shipping_price= - th.calculatewuliu(code, o_shipping_price, goods_weight, - goods_piece, th.data.user_addr, freight_free, parseFloat(allpice)-cut_price-quan_price, rs); - - //如果有赠品的时候,也要计算赠品的物流费用 - if(th.data.buy_now_gift_goods){ - shipping_price=th.get_now_gift_goods_wuliu(code, o_shipping_price, th.data.user_addr, gift_freight_free, - parseFloat(allpice)-cut_price-quan_price, rs,shipping_price,no_by_data,goods_weight,goods_piece); - } - - if(shipping_price<=0){ - th.data.is_by[th.data.bn_pick]=1; //已经是包邮了,就不要选择包邮券 - } - - shipping_price = parseFloat(shipping_price).toFixed(2); - var wl_txt = "formData.shipping_price"; - th.setData({ [wl_txt]: shipping_price, }) - - }else{ - var wl_txt = "formData.shipping_price"; - th.setData({ [wl_txt]: 0, }) - } - - if(quan_no){ - if(th.data.using_quan[bn_pick].isby==1){ - shipping_price=0; - var wl_txt = "formData.shipping_price"; - th.setData({ [wl_txt]: 0, }) - } - } - //-----------------支付价,优惠券不减物流----------------- - var total_m = (parseFloat(allpice1)).toFixed(2); - var order_m = (parseFloat(allpice-cut_price)-quan_price).toFixed(2); - var coupon_price=quan_price; //优惠券优惠了多少钱 - if(order_m<0) { - order_m=0;coupon_price=parseFloat(order_m).toFixed(2); - } - //--看一下有没有订单优惠-- - var o_condition=parseFloat(order_m); - if(o_condition>0){ - th.check_is_order_prom(o_condition,function () { - var order_prom_amount=0; var order_prom_id=0; - if(th.data.order_prom[th.data.bn_pick]){ - var ord_prom=th.data.order_prom[th.data.bn_pick]; - order_prom_id = ord_prom['id']; - switch (ord_prom['type']) { - case 0: - order_m = Math.round(o_condition * ord_prom['expression'])/100;//满额打折 - order_prom_amount=(o_condition -order_m).toFixed(2); - break; - case 1: - order_m = o_condition - ord_prom['expression'];//满额优惠金额 - order_prom_amount= ord_prom['expression']; - break; - } - } - //--订单优惠的显示-- - if(order_prom_id>0){ - var order_prom_txt1="formData.order_prom_id"; - var order_prom_txt2="formData.order_prom_amount"; - th.setData({ [order_prom_txt1]: order_prom_id,[order_prom_txt2]: order_prom_amount}) - } - - total_m= parseFloat( total_m)+ parseFloat( th.data.formData.shipping_price); - order_m = parseFloat(order_m)+ parseFloat( th.data.formData.shipping_price); - - total_m=total_m.toFixed(2); - order_m=order_m.toFixed(2); - - var atxt= "formData.total_amount"; - th.setData({ [atxt]: total_m, }) - - var txt = "formData.user_money"; - var txt2 = "formData.order_amount"; - var txt3="formData.coupon_price"; - var amoney = parseFloat(th.data.userinfo.user_money - th.data.txmon - th.data.userinfo.frozen_money); - //--------------如果使用余额--------------------- - if (th.data.bn_use_money == 1) { - if (amoney> order_m) { - order_m = parseFloat(order_m).toFixed(2); - th.setData({ [txt]: order_m, [txt2]:0,[txt3]:coupon_price,show_submit:1 }) - }else{ - order_m =parseFloat(order_m) - parseFloat(amoney); - order_m = order_m.toFixed(2); - th.setData({ [txt]: amoney, [txt2]: order_m,[txt3]:coupon_price,show_submit:1 }) - } - }else{ - th.setData({ [txt]: 0, [txt2]: order_m,[txt3]:coupon_price,show_submit:1}) - } - //优惠活动送积分 - if(good.s_intValue){ - txt = "formData.give_integral"; - th.setData({ [txt]:good.s_intValue }); - } - //优惠送券 - if(good.s_coupon_id){ - var i_txt = "formData.give_coupon_id"; - //这个是json格式的 - var i_txt1 = "formData.g_coupon_num"; - var ob=[{"num":good.s_coupon_num,"c_id":good.s_coupon_id}]; - ob=JSON.stringify(ob); - th.setData({ [i_txt]:good.s_coupon_id,[i_txt1]:ob }); - } - //优惠礼包 - if(good.s_libao){ - var l_txt = "formData.give_lb_id"; - //这个是json格式的 - var l_txt1 = "formData.g_lb_num"; - var ob=[{"num":good.s_lb_num,"l_id":good.s_libao}]; - ob=JSON.stringify(ob); - th.setData({ [l_txt]:good.s_libao,[l_txt1]:ob }); - } - }) - }else{ - total_m= parseFloat( total_m)+ parseFloat( th.data.formData.shipping_price); - order_m = parseFloat(order_m)+ parseFloat( th.data.formData.shipping_price); - var atxt= "formData.total_amount"; - - total_m=total_m.toFixed(2); - order_m=order_m.toFixed(2); - - th.setData({ [atxt]: total_m, }) - - var txt = "formData.user_money"; - var txt2 = "formData.order_amount"; - var txt3="formData.coupon_price"; - var amoney = parseFloat(th.data.userinfo.user_money - th.data.txmon - th.data.userinfo.frozen_money); - //--------------如果使用余额--------------------- - if (th.data.bn_use_money == 1) { - if (amoney> order_m) { - order_m = parseFloat(order_m).toFixed(2); - th.setData({ [txt]: order_m, [txt2]:0,[txt3]:coupon_price,show_submit:1 }) - }else{ - order_m =parseFloat(order_m) - parseFloat(amoney); - order_m = order_m.toFixed(2); - th.setData({ [txt]: amoney, [txt2]: order_m,[txt3]:coupon_price,show_submit:1 }) - } - }else{ - th.setData({ [txt]: 0, [txt2]: order_m,[txt3]:coupon_price, show_submit:1 }) - } - //优惠活动送积分 - if(good.s_intValue){ - txt = "formData.give_integral"; - th.setData({ [txt]:good.s_intValue }); - } - //优惠送券 - if(good.s_coupon_id){ - var i_txt = "formData.give_coupon_id"; - //这个是json格式的 - var i_txt1 = "formData.g_coupon_num"; - var ob=[{"num":good.s_coupon_num,"c_id":good.s_coupon_id}]; - ob=JSON.stringify(ob); - th.setData({ [i_txt]:good.s_coupon_id,[i_txt1]:ob }); - } - //优惠礼包 - if(good.s_libao){ - var l_txt = "formData.give_lb_id"; - //这个是json格式的 - var l_txt1 = "formData.g_lb_num"; - var ob=[{"num":good.s_lb_num,"l_id":good.s_libao}]; - ob=JSON.stringify(ob); - th.setData({ [l_txt]:good.s_coupon_id,[l_txt1]:ob }); - } - } - - wx.hideLoading(); - - }); - }); - }, - - //--------------------提交订单----------------------- - async submitForm(t){ - var sub_value=t; - - if(this.data.is_summit_ing==1) return false; //--提交中退出-- - this.data.is_summit_ing=1; - var th=this,pdata=new Array(); - var ff=true; - //------------立即购买------------- - if (th.data.is_b_now==1 && th.data.bn_goods.prom_type!=5){ - - if(th.data.bn_exp_type == 0 && th.data.user_addr==null ){ - ff = false; getApp().my_warnning("请选择收货地址",0,th); - th.data.is_summit_ing = 0; - } - if (!ff) return false; - var addr = th.data.user_addr; - if (th.data.bn_exp_type == 1) addr=null; - - if(th.data.bn_exp_type==0) - if(th.data.wu_arr==null || th.data.wu_arr.length<=0){ - getApp().my_warnning("读取物流失败",0,th); - th.data.is_summit_ing = 0; - return false; - } - - var item={ - 'user_id': to.globalData.user_id, - 'consignee': addr == null ? "" : addr.consignee, - 'province': addr == null ? 0 : addr.province, - 'city': addr == null ? 0 : addr.city, - 'district': addr == null ? 0 : addr.district, - 'twon': addr == null ? 0 : addr.twon, - 'address': addr == null ? "": addr.address, - 'more_address': addr == null ? "" : addr.more_address, - //'mobile': th.data.userinfo.mobile, - 'mobile': addr == null ? th.data.userinfo.mobile : addr.mobile, - 'email':'', - 'shipping_code': th.data.bn_exp_type == 1 ? 0 : th.data.wu_arr[th.data.index].code, - 'shipping_name': th.data.bn_exp_type == 1 ? '' : th.data.wu_arr[th.data.index].name, - 'invoice_title':'', - 'goods_price': th.data.formData.all_price, //商品总价 - 'shipping_price': th.data.formData.shipping_price, //物流金额 - 'user_money': th.data.formData.user_money, //使用余额 - 'total_amount': th.data.formData.total_amount, //订单总价 - 'order_amount': th.data.formData.order_amount, //应付 - 'user_note': t.detail.value.user_note, //用户备注 - 'store_id':oo.stoid, //商家 - 'pickup_id': th.data.bn_pick, //门店 - 'exp_type': th.data.bn_exp_type, //配送方式 - 'order_goods':new Array(), - }; - //是不是重新提交 - if(th.data.is_continue==1) item.is_continue=1; - - //获取立即购买的商品的信息 - var gg = to.get_b_now(); - //--商品的房间号-- - if(gg.room_id && gg.room_id>0){ - item.room_ids=gg.room_id; - } - - var order_prom_list={}; - //--判断有没有优惠活动-- - if(th.data.order_prom[item.pickup_id]){ - if(th.data.formData.order_prom_amount>0){ - order_prom_list.order_prom_id=th.data.formData.order_prom_id; - order_prom_list.order_prom_amount=th.data.formData.order_prom_amount; - } - } - - //--判断优惠活动的提交-- - if(th.data.formData.cut_price>0){ - order_prom_list.discount_amount=th.data.formData.cut_price.toFixed(2); - var ob=[{"prom_id":th.data.bn_goods.prom_id,"dis":th.data.formData.cut_price.toFixed(2),"ispt":0}] - order_prom_list.prom_pt_json=JSON.stringify(ob); - } - if(th.data.formData.give_integral>0){ - order_prom_list.give_integral=th.data.formData.give_integral; - } - if(th.data.formData.give_coupon_id>0){ - order_prom_list.give_coupon_id=th.data.formData.give_coupon_id; - order_prom_list.g_coupon_num=th.data.formData.g_coupon_num; - } - if(th.data.formData.give_lb_id>0){ - order_prom_list.give_lb_id=th.data.formData.give_lb_id; - order_prom_list.g_lb_num=th.data.formData.g_lb_num; - } - item.order_prom_list=order_prom_list; - - //组装优惠券的钱 - if(parseFloat(th.data.formData.coupon_price)>0){ - item.coupon_price=th.data.formData.coupon_price; - item.coupon_no=th.data.using_quan[th.data.bn_pick].coupon_no; - } - if(th.data.using_quan[th.data.bn_pick] && th.data.using_quan[th.data.bn_pick].coupon_no && th.data.using_quan[th.data.bn_pick].isby){ - item.coupon_no=th.data.using_quan[th.data.bn_pick].coupon_no; - item.coupon_price=0; - } - - //老会员成为分销下线需要的参数 - if(getApp().globalData.first_leader && !getApp().globalData.userInfo.first_leader){ - //判断一下分享人是不是分享商 - await app.request.promiseGet("/api/weshop/users/get/" + os.stoid+"/"+getApp().globalData.first_leader,{}).then(res=>{ - if(res.data.code==0){ - var user= res.data.data; - if(user.is_distribut==1){ - item.first_leader=parseInt(getApp().globalData.first_leader); - } - } - }) - } - - var goods={ - 'goods_id': gg.goods_id, - 'goods_name': gg.goods_name, - 'goods_sn': gg.goods_sn, - 'goods_num': gg.goods_num, - 'market_price': th.data.bn_goods.market_price, - 'goods_price': th.data.bn_goods.shop_price, - 'member_goods_price': th.data.bn_goods.shop_price, - 'store_id': oo.stoid, - 'prom_type':th.data.bn_goods.prom_type, //促销活动类型 - 'prom_id': th.data.bn_goods.prom_id, //促销活动id - }; - - //-- 把导购的信息填入-- - if(gg.guide_id){ - goods.guide_id=gg.guide_id; - goods.guide_type=gg.guide_type; - //调用接口判断是不是会员 - await getApp().request.promiseGet("/api/weshop/shoppingGuide/getId/"+oo.stoid+"/"+gg.guide_id,{}).then(res=>{ - if(res.data.code==0){ - goods.guide_name=res.data.data.salesman; - goods.guide_sn=res.data.data.salesman_no; - } - }) - } - - //--商品的房间号-- - if(gg.room_id && gg.room_id>0){ - goods.room_id=gg.room_id; - } - - //积分购,先要带is_integral_normal=1 - if(gg.is_integral_normal) goods.is_integral_normal=1; - - //先要带is_pd_normal=1 - if(gg.is_pd_normal) goods.is_pd_normal=1; - - //如果不立即购买或者秒杀,如果是线下库存购买的时候 - if(goods.prom_type!=1 && goods.prom_type!=6 && th.data.sales_rules==2){ - var isok=1; - await th.check_store_num(goods.goods_id,th.data.bn_pick, gg.goods_num,function(res){ - isok=res; - }); - if(!isok){ - getApp().confirmBox("商品的门店库存不足"); - th.data.is_summit_ing=0; - return false; - } - } - - //-- 如果有线下取价的话 -- - if(th.data.bn_goods.is_offline){ - item.sum_offline_cut= (th.data.bn_goods.shop_price- th.data.bn_goods.offline_price).toFixed(2); - goods.offline_cut=item.sum_offline_cut; - goods.pricing_type=th.data.bn_goods.pricing_type; - goods.goods_price=th.data.bn_goods.offline_price; - goods.member_goods_price=th.data.bn_goods.offline_price; - } - - //--- 如果有优惠促销的金额,要把金额先平摊下去 --- - if(th.data.formData.cut_price>0 && !th.data.ispt_goods){ - var g_arr=new Array(); - g_arr.push(goods); - var pt_data={ - 'prom_id':goods.prom_id, - 'dis': parseFloat(th.data.formData.cut_price), - 'goods':g_arr, - } - - var pt_res=null; - await getApp().request.promisePost("/api/weshop/order/getGoodsSplit",{is_json:1,data:pt_data}).then(res=>{ - if(res.data.code==0){ pt_res=res.data.data; } - }) - if(pt_res){ - //平摊赋值 - goods.account=pt_res[0].fisrt_account; - goods.account_yu=pt_res[0].fisrt_account_yu; - item.is_discount_amount=1; - } - } - - //--组装优惠券的钱-- - if(th.data.formData.coupon_price){ - item.coupon_price=th.data.formData.coupon_price; - item.coupon_no=th.data.using_quan[th.data.bn_pick].coupon_no; - goods.quan_num=th.data.formData.coupon_price; - goods.quan_no= item.coupon_no; - } - - item.order_goods.push(goods); - - //--如果有赠品的时候,赠品也要提交--- - if(th.data.buy_now_gift_goods){ - var gift_gg=th.data.buy_now_gift_goods; - var g_goods={ - 'goods_id': gift_gg.goods_id, - 'goods_name': gift_gg.goods_name, - 'goods_sn': gift_gg.goods_sn, - 'goods_num': gift_gg.buynum, - 'market_price': gift_gg.market_price, - 'goods_price': 0, - 'member_goods_price': 0, - 'store_id': oo.stoid, - 'is_gift':1, - 'gift_id':gift_gg.gift_id, - 'prom_id':gift_gg.prom_id, - }; - item.order_goods.push(g_goods); - } - pdata.push(item); - - console.log(pdata); - }else{ - //---------购物车的结算--------- - if (th.data.is_all_zt == 0 && th.data.user_addr == null) { - th.data.is_summit_ing = 0; - ff = false; getApp().confirmBox("请新建收货地址");} - if (!ff) return false; - - var addr = th.data.user_addr; - if (th.data.is_all_zt == 1) addr = null; - var val_arr= t.detail.value; - - - if(th.data.is_all_zt !=1) - if(th.data.wu_arr==null || th.data.wu_arr.length<=0 ){ - th.data.is_summit_ing = 0; - getApp().confirmBox("读取物流失败"); - return false; - } - - var order_prom_list_cart=th.data.order_prom_list_cart; - - //--组装推送数据-- - for (var i = 0; i < order_prom_list_cart.length;i++){ - var t_item = order_prom_list_cart[i]; - var item = { - 'user_id': to.globalData.user_id, - 'consignee': addr == null ? th.data.userinfo.mobile : addr.consignee, - 'province': addr == null ? 0 : addr.province, - 'city': addr == null ? 0 : addr.city, - 'district': addr == null ? 0 : addr.district, - 'twon': addr == null ? 0 : addr.twon, - 'address': addr == null ? "" : addr.address, - 'more_address': addr == null ? "" : addr.more_address, - 'mobile': addr == null ? th.data.userinfo.mobile : addr.mobile, - 'email': '', - 'shipping_code': th.data.is_all_zt == 1 ? 0 : th.data.wu_arr[t_item.wind].code, - 'shipping_name': th.data.is_all_zt == 1 ? '' : th.data.wu_arr[t_item.wind].name, - 'invoice_title': '', - 'goods_price': t_item.goods_price, //商品总价 - 'shipping_price': t_item.shipping_price, //物流金额 - 'user_money': t_item.user_money, //使用余额 - 'total_amount': t_item.total_amount, //订单总价 - 'order_amount': t_item.order_amount, //应付 - 'user_note': val_arr['user_note_' + t_item.pickup_id], //用户备注 - 'store_id': oo.stoid, //商家 - 'pickup_id': t_item.pickup_id, //门店 - 'exp_type': t_item.exp_type, //配送方式 - 'order_goods': new Array(), - }; - //是不是重新提交 - if(th.data.is_continue==1) item.is_continue=1; - //----- 如果有线下取价的话 ---- - if(t_item.is_offline==1){ - item.sum_offline_cut=t_item.offline_price.toFixed(2); - } - - //组装优惠券的钱 - if(t_item.coupon_price) { - item.coupon_price = t_item.coupon_price; - item.coupon_no = th.data.using_quan[t_item.pickup_id].coupon_no; - }else if(t_item.quan_no) { - item.coupon_no = t_item.quan_no; - item.coupon_price = 0; - } - - var order_prom_list={}; - //--判断有没有优惠活动-- - if(t_item.order_prom_amount>0){ - order_prom_list.order_prom_id=t_item.order_prom_id; - order_prom_list.order_prom_amount=t_item.order_prom_amount; - } - //--判断优惠活动的提交-- - if(t_item.cut_price>0){ - order_prom_list.discount_amount=t_item.cut_price.toFixed(2); - order_prom_list.prom_pt_json=JSON.stringify(t_item.prom_pt_json); - } - if(t_item.s_intValue>0){ - order_prom_list.give_integral=t_item.s_intValue; - } - if(t_item.s_coupon_id){ - order_prom_list.give_coupon_id=t_item.s_coupon_id; - order_prom_list.g_coupon_num= JSON.stringify(t_item.g_coupon_num); - } - if(t_item.s_libao){ - order_prom_list.give_lb_id=t_item.s_libao; - order_prom_list.g_lb_num=JSON.stringify(t_item.g_lb_num); - } - if(Object.keys(order_prom_list).length>0) - item.order_prom_list=order_prom_list; - - //老会员成为分销下线需要的参数 - if(getApp().globalData.first_leader && !getApp().globalData.userInfo.first_leader){ - //判断一下分享人是不是分享商 - await app.request.promiseGet("/api/weshop/users/get/" + os.stoid+"/"+getApp().globalData.first_leader,{}).then(res=>{ - if(res.data.code==0){ - var user= res.data.data; - if(user.is_distribut==1){ - item.first_leader=parseInt(getApp().globalData.first_leader); - } - } - }) - } - - - //房间号的ids - var room_ids=""; - //-------------让商品添加到商品列表-------------------- - for (var k = 0; k < t_item.goods.length;k++){ - var g_item = t_item.goods[k]; - var goods = { - 'goods_id': g_item.goods_id, - 'goods_name': g_item.goods_name, - 'goods_sn': g_item.goods_sn, - 'goods_num': g_item.goods_num, - 'market_price': g_item.market_price, - 'goods_price': g_item.goods_price, - 'member_goods_price': g_item.goods_price, - 'store_id': oo.stoid, - }; - - //-- 线下取价也要写入 -- - if(g_item.offline_price && t_item.is_offline==1){ - goods.goods_price=g_item.offline_price; - goods.member_goods_price=g_item.offline_price; - goods.offline_cut=(g_item.goods_price-g_item.offline_price).toFixed(2); - goods.pricing_type=g_item.pricing_type; - } - - //--把券的钱,写入从表--- - if(t_item.quan_youhui_list && t_item.coupon_price ){ - for(var kk in t_item.quan_youhui_list ){ - var you_item=t_item.quan_youhui_list[kk]; - if(g_item.erpwareid==you_item.WareId){ - goods.quan_num=you_item.WareCashSum; - goods.quan_no=you_item.CashRepNo; - } - } - } - - //--判断活动的类型-- - switch (g_item.prom_type) { - case 1: - goods.prom_type = g_item.prom_type; - goods.prom_id = g_item.prom_id; - break; - case 3: - goods.prom_type=3; - goods.prom_id=g_item.prom_id; - if(g_item.is_gift){ - goods.is_gift=g_item.is_gift; - goods.gift_id=g_item.gift_id; - } - break; - case 5: - goods.prom_type=5; - goods.prom_id=g_item.prom_id; - if(g_item.is_collocation){ - goods.is_collocation=g_item.is_collocation; - } - break - default: - goods.prom_type = 0;goods.prom_id =0; - } - - //如果不立即购买或者秒杀,如果是线下库存购买的时候 - if(goods.prom_type==0 && th.data.sales_rules==2){ - var isok=1; - await th.check_store_num(goods.goods_id, t_item.pickup_id,goods.goods_num,function(res){ - isok=res; - }); - if(!isok){ - getApp().confirmBox( goods.goods_name+"的门店库存不足"); - th.data.is_summit_ing=0; - return false; - } - } - - //把优惠的平摊结果写进去 - if(g_item.account>=0 || g_item.account_yu!=0){ - if(g_item.account>=0) goods.account=g_item.account; - if(g_item.account_yu!=0) goods.account_yu=g_item.account_yu; - item.is_discount_amount=1; - } - - //导购ID - if(g_item.guide_id){ - goods.guide_id=g_item.guide_id; - goods.guide_type=g_item.guide_type; - //调用接口判断是不是会员 - await getApp().request.promiseGet("/api/weshop/shoppingGuide/getId/"+oo.stoid+"/"+g_item.guide_id,{}).then(res=>{ - if(res.data.code==0){ - goods.guide_name=res.data.data.salesman; - goods.guide_sn=res.data.data.salesman_no; - } - }) - } - //如果房间号不为空的时候 - if(g_item.room_id){ - goods.room_id=g_item.room_id; - room_ids+=g_item.room_id+","; - } - item.order_goods.push(goods); - } - - //如果房间号不为空的时候 - if(room_ids!="") item.room_ids= ut.sub_last(room_ids); - pdata.push(item); - } - - - } - - if (pdata.length==0) return; - var str = JSON.stringify(pdata); - - wx.showLoading({title: "加载中"}); - wx.request({ - url: oo.url + '/api/weshop/order/createWxdOrder', - data: str, - method: 'POST', - header: { - 'content-type': 'application/json' - },// 设置请求的 header - success: function (res) { - - - wx.hideLoading(); - if (res.statusCode == 200) { - var data=res.data; - if(data.code==0){ - console.log(th.data.is_b_now); - //如果是购物车结算,还要删除购物车 - if (th.data.is_b_now == 0) { - console.log(th.data.cartlist_y); - var list = th.data.cartlist_y; - for (var i = 0; i < list.length; i++) { - //删除购物车 - a.delete("/api/weshop/cart/del/" + oo.stoid + "/" + list[i].id, {}); - } - } - var order_amount = 0; - pdata.forEach(function (em, ind) { - order_amount += em.order_amount; - }) - //要进行判断,如果是用微信支付,就要跳转到支付界面 - if (order_amount > 0) { - th.setData({ isclose: 0 }); - //void e.jumpToCart4({ - // order_sn: data.data, - //}, 1); - util_pay.pay(data.data, function() { - //app.my_warnning("支付成功",1,th); - //setTimeout(function () { - wx.redirectTo({ - url: "/pages/payment/pay_success/pay_success?type=2&order_sn="+data.data - }) - //},1000) - }, function () { - //支付失败 - setTimeout(function () { - wx.navigateBack({ delta: 1 }) - },1000) - },oo.stoid); + if (item_price < parseFloat(quan_item.BuySum)) { + getApp().my_warnning("该单品金额没有大于等于" + quan_item.BuySum + "元时不能使用优惠券", 0, this, 600); + return false; + } + } + } - } else { - var dd = { - parent_sn: data.data, - store_id: oo.stoid, - type: 2, - }; - a.post("/api/weshop/order/pay/createOrder", { - data: dd, - success: function (t) { - //console.log(t); - if(t.data.code==0){ - //app.my_warnning("支付成功",1,th); - //setTimeout(function () { - th.setData({ isclose: 0 }); - wx.redirectTo({ - url: "/pages/payment/pay_success/pay_success?type=2&order_sn="+data.data, - }) - //}, 1000) - } - }, - fail:function () { - - } - }); - } - - } - else{ - //--内容换行-- - var msg=data.msg; - //赠品活动已经取消,无法赠送,是否继续买单? - if(msg.indexOf("是否继续买单")>0){ - wx.showModal({ - title:"提示", - content: data.msg, - cancelText:'取消', - confirmText:'确定', - showCancel: true, - success(res){ - if(res.cancel){ - return; - }else if(res.confirm){ - th.data.is_continue=1; - th.data.is_summit_ing=0; //是否提交中 - th.submitForm(sub_value); - } - } - }) - return; - } - if(msg.length>13){ - msg=msg.slice(0, 13) + "\r\n"+ msg.slice(13); - } - getApp().confirmBox(msg); - th.data.is_summit_ing=0; //是否提交中 - } - }else{ - th.data.is_summit_ing=0; //是否提交中 - console.log("index.js wx.request CheckCallUser statusCode" + res.statusCode); - } - }, - fail: function () { - th.data.is_summit_ing=0; - wx.hideLoading(); - console.log("index.js wx.request CheckCallUser fail"); - }, - complete: function () {} - }) - - }, - //---确认线下门店的数量足不足--- - async check_store_num(goods_id,pick,goods_num,func){ - var lock=0,pick_no,plist,erpwareid; - //先读取门店的lock - await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{ - data:{store_id:os.stoid,wareId:goods_id,storageId:pick,pageSize:1000} - }).then(res=>{ - if(res.data.code==0 && res.data.data.total>0){ - for(var i in res.data.data.pageData) - lock+=res.data.data.pageData[i].outQty; - } - }) - //先获取门店的编号 - await getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+pick,{ - data:{storeId:os.stoid,goodsId:t.goods_id,pickupId:pick} - }).then(res=>{ - if(res.data.code==0){ - pick_no=res.data.data.pickup_no; - } - }) - //先获取商品的线下库存 - await getApp().request.promiseGet("/api/weshop/goods/get/"+os.stoid+"/"+goods_id,{ - data:{storeId:os.stoid,goodsId:t.goods_id,pickupId:pick} - }).then(res=>{ - if(res.data.code==0){ - erpwareid=res.data.data.erpwareid; - } - }) - //读取线下的门店库存 - await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{ - data:{storageNos:pick_no,wareIds:encodeURIComponent(erpwareid),storeId:os.stoid,pageSize:2000} - }).then(res=>{ - if(res.data.code==0){ - plist=res.data.data.pageData[0]; - } - }) - var isok=1; - if(goods_num>plist.CanOutQty-lock){ - isok=0; - } - func(isok); - }, - - useCoupon: function() { - if (this.data.order.couponNum <= 0) { - getApp().my_warnning("无可用优惠券",0,this); - return; - } - - var a = { - lid: this.data.coupon ? this.data.coupon.id : "0" - }; - wx.navigateTo({ - url: "/pages/user/checkcoupon/checkcoupon?" + s.Obj2Str(a) - }); - }, - enterAddressPage: function() { - getApp().globalData.is_cart_old=1; - this.data.isget_by_quan={}; - this.data.enterAddressPage = !0, wx.navigateTo({ - url: "/pages/user/address_list/address_list" - }); - }, - - //--------购物车购买时,选择自提和物流----------- - setexptype_w:function(t){ - - var def_exp_code= getApp().globalData.userInfo.def_exp_code,th=this; - var ty = t.currentTarget.dataset.t, txt = t.currentTarget.dataset.txt, - wl_txt = t.currentTarget.dataset.wl_txt, - ont = t.currentTarget.dataset.ont; - - th.setData({ [txt]: ty }); - var iszt=1; - - if(ty==0){ - th.setData({ is_all_zt: 0 }); - }else{ - for(var i=0;i 0 && o_price >= freight_free){ return 0;} - if (user_addr==null) { return 0; } - //计算物流的config item; - var item=null; - //先根据 镇 县 区找计算的config - item = th.get_wuliu_config(user_addr.district,code,rs); - if (item==null) item = th.get_wuliu_config(user_addr.city, code, rs); - if (item==null) item = th.get_wuliu_config(user_addr.province, code, rs); - if (item == null) item = th.get_wuliu_default(code,rs); - if (item == null) return o_shipping_price; - var fw_price = 0, fp_price=0; - item=item.config; - if (item == null) return o_shipping_price; - //------按重量---------- - if (goods_weight>=0 && item['money']) { - fw_price =parseFloat(item['money']); - if (goods_weight > item['first_weight']){ - var fw = goods_weight - item['first_weight']; - var n = Math.ceil(fw/item['second_weight']) - fw_price = fw_price + n * parseFloat(item['add_money']); - } - } - //------按件数---------- - if (goods_piece > 0 && item['piecemoney']) { - fp_price = parseFloat(item['piecemoney']); - if (goods_piece > item['first_piece']) { - var fp = goods_piece - item['first_piece']; - var m = Math.ceil(fp / item['second_piece']) - fp_price = fp_price + m * parseFloat(item['add_piecemoney']); - } - } - var rspice =parseFloat(price + fw_price + fp_price); - return rspice; - }, - - //------------循环获取config----------- - get_wuliu_config:function(region_id,code,rs){ - var item=null,rslist = rs.pageData; - for (var i = 0; i < rslist.length;i++){ - if (rslist[i].code == code && rslist[i].region_id == region_id) { item = rslist[i];} - } - return item; - }, - //-------循环获取config,code default------- - get_wuliu_default: function (code, rs) { - var item = null, rslist=rs.pageData; - for (var i = 0; i < rslist.length; i++) { - if (rslist[i].shipping_code == code && rslist[i].is_default == 1) { item = rslist[i]; } - } - return item; - }, - - //----------立即购买,选择物流------------- - bindPickerChange:function(e){ - var ind = e.detail.value - this.setData({ index: ind }); - this.calculatePrice2(); - }, - //----------购物车结算,选择物流------------- - bindPickerChange_w: function (e) { - var ind=e.detail.value, txt = e.currentTarget.dataset.txt; - this.setData({ [txt]: ind }); - this.calculatePrice(); - }, - - /*----券的所有操作----*/ - open_coupon_list:function (e) { - var th=this; - var pickid=e.currentTarget.dataset.pickid; - var bn=e.currentTarget.dataset.bn; - var cindx=e.currentTarget.dataset.cind; - var get_by_quan_list_cart=th.data.get_by_quan_list_cart[pickid]; - - - if(bn==1){ - th.setData({open_quan:1,selected_quan_pick:pickid, disabled:1}); - }else{ - //---多单打开券的时候,就要判断券在其他门店是否有使用--- - var quanlist=th.data.cartlist[cindx].quan_list; - var exp_type=th.data.cartlist[cindx].exp_type; - - - //对于在其他门店已经选择了的券 要判断是否显示到界面 - var t_user=th.data.using_quan[pickid]; - - for(var i in quanlist){ - quanlist[i].is_using= th.check_in_sele(quanlist[i].CashRepNo,pickid); - if(t_user && quanlist[i].CashRepNo==t_user.coupon_no) - quanlist[i].show_red=1; - else - quanlist[i].show_red=0; - } - - if(get_by_quan_list_cart){ - for(var i in get_by_quan_list_cart){ - get_by_quan_list_cart[i].is_using= th.check_in_sele(get_by_quan_list_cart[i].no,pickid); - if(t_user && get_by_quan_list_cart[i].no==t_user.coupon_no) - get_by_quan_list_cart[i].show_red=1; - else - get_by_quan_list_cart[i].show_red=0; - } - th.setData({by_quan_list_cart:get_by_quan_list_cart}); - }else { - th.setData({by_quan_list_cart:null}); - } - - console.log("2222222券的列表", quanlist); - th.setData({ sele_cart_ind:cindx,sele_exp_type:exp_type,open_quan:1,selected_quan_pick:pickid,selected_quan_list:quanlist,disabled:1}); - } - }, - close_coupon:function (e) { - var th=this; - th.setData({open_quan:0,disabled:0}); - }, - - //---判断券时候在已经选择的列表中--- - check_in_sele:function (no,pick_id) { - var th=this; - if(th.data.using_quan.length<=0) return false; - for(var i in th.data.using_quan){ - //--如果键值等于本身就要跳出-- - if(parseInt(i)==parseInt(pick_id)) continue; - var item=th.data.using_quan[i]; - if(item.coupon_no==no){ - return true; - } - } - return false; - }, - - /*--点击选择券--*/ - sele_quan_item:function(e) { - - var ind = e.currentTarget.dataset.ind; - var quan_item=this.data.selected_quan_list[ind]; - var pickid=this.data.selected_quan_pick; //现在选择的是哪一个门店 - //--如果券是单品使用的时候-- - if( quan_item && quan_item.UseObjectType && quan_item.UseObjectType=="20"){ - //---只有多件购买的时候才要计算,//购物车购买和搭配勾的时候--- - var gg=getApp().get_b_now(); - if(this.data.is_b_now==0 || gg.prom_type==5){ - var arr=this.data.order_prom_list_cart; - var t_pk_item=null; - for(var ii in arr){ - var ep=arr[ii]; - if(pickid==ep.pickup_id){ - t_pk_item=ep; break; - } - } - //--寻找券指定的商品-- - var gd=null; - if(t_pk_item){ - var goods=t_pk_item.goods; - for(var gid in goods){ - if(quan_item.UseObjectID==goods[gid].erpwareid){ gd=goods[gid]; } - } - } - if(!gd){ - getApp().my_warnning("未找到指定商品使用",0,this,600); - return false; - } - //计算价格,如果有平摊的实收要计算实收的金额 - var item_price=gd.goods_price*gd.goods_num; - //-- 如果有平摊下去,有实收价格的时候,就要用account_fir来计算价格 -- - if(gd.account_fir!=null && gd.account_fir!=undefined){ - item_price=gd.account_fir*gd.goods_num; - } - - if(item_price< parseFloat(quan_item.BuySum)){ - getApp().my_warnning("该单品金额没有大于等于"+quan_item.BuySum+"元时不能使用优惠券",0,this,600); - return false; - } - } - } - - var no_use=e.currentTarget.dataset.no, quanlist=this.data.selected_quan_list; - //---所有的券的显示红色选择都清理一遍--- - for(var i in quanlist){ - quanlist[i].show_red=0; - } - this.setData({selected_quan_list:quanlist}); - var by_quanlist=this.data.get_by_quan_list; - if(by_quanlist){ - //---所有的券的显示红色选择都清理一遍--- - for(var inb in by_quanlist){ - by_quanlist[inb].show_red=0; - } - this.setData({get_by_quan_list:by_quanlist}); - } - - var by_cart_list=this.data.by_quan_list_cart; - if(by_cart_list){ - //---所有的券的显示红色选择都清理一遍--- - for(var inc in by_cart_list){ - by_cart_list[inc].show_red=0; - } - this.setData({by_quan_list_cart:by_cart_list}); - } - - var using_quan=this.data.using_quan; - var th=this; - //---如果是不使用优惠券--- - if(no_use==1){ - console.log("有进来吗券", no_use); - if(using_quan[th.data.selected_quan_pick]){ - using_quan[th.data.selected_quan_pick].is_nouse_red=1; - } - else{ - using_quan[th.data.selected_quan_pick] ={is_nouse_red:1}; - } - this.setData({ using_quan: using_quan, is_coupon:2222}); - return; - } - - - - var txt = "selected_quan_list[" + ind + "].show_red"; - var obj = {}; - obj[txt] = 1; - if (quan_item.show_red) { - obj[txt] = 0; - } - this.setData(obj); - console.log(this.data.selected_quan_list, "选中的券的下标", quan_item, "数据都在这里", txt); - if(using_quan[th.data.selected_quan_pick]){ - using_quan[th.data.selected_quan_pick].is_nouse_red=0; - } - else{ - using_quan[th.data.selected_quan_pick] ={is_nouse_red:0}; - } - this.setData({using_quan:using_quan}); - - }, - - - /*----- 点击选择包邮券 -----*/ - sele_quan_item_by:function(e) { - var no_use=e.currentTarget.dataset.no; - //立即购买的包邮券 - var by_quanlist=this.data.get_by_quan_list; - if(by_quanlist) { - //---所有的券的显示红色选择都清理一遍--- - for (var ind in by_quanlist) { - by_quanlist[ind].show_red = 0; - } - this.setData({get_by_quan_list: by_quanlist}); - } - - //--购物车过来的包邮券-- - var by_cart_list=this.data.by_quan_list_cart; - if(by_cart_list){ - //---所有的券的显示红色选择都清理一遍--- - for(var ind in by_cart_list){ - by_cart_list[ind].show_red=0; - } - this.setData({by_quan_list_cart:by_cart_list}); - } - //普通券 - var quanlist=this.data.selected_quan_list; - if(quanlist){ - //---所有的券的显示红色选择都清理一遍--- - for(var ind in quanlist){ - quanlist[ind].show_red=0; - } - this.setData({selected_quan_list:quanlist}); - } - - var th=this; - var using_quan=this.data.using_quan; - //---如果是不使用优惠券--- - if(no_use==1){ - if(using_quan[th.data.selected_quan_pick]){ - using_quan[th.data.selected_quan_pick].is_nouse_red=1; - } - else{ - using_quan[th.data.selected_quan_pick] ={is_nouse_red:1}; - } - this.setData({ using_quan: using_quan, is_coupon:2222}); - return; - } - - var pickid=th.data.selected_quan_pick; //现在选择的是哪一个门店 - var ind = e.currentTarget.dataset.ind; - //--如果是立即购买的部分-- - var txt="";var txt1=""; var quan_item=null; - if(th.data.is_b_now){ - quan_item = this.data.get_by_quan_list[ind]; - txt = "get_by_quan_list[" + ind + "].show_red"; - var obj = {}; obj[txt] = 1; - this.setData(obj); - }else{ - txt= "by_quan_list_cart[" + ind + "].show_red"; - quan_item = th.data.by_quan_list_cart[ind]; - var obj = {}; obj[txt] = 1; + var no_use = e.currentTarget.dataset.no, quanlist = this.data.selected_quan_list; + //---所有的券的显示红色选择都清理一遍--- + for (var i in quanlist) { + quanlist[i].show_red = 0; + } + this.setData({selected_quan_list: quanlist}); + var by_quanlist = this.data.get_by_quan_list; + if (by_quanlist) { + //---所有的券的显示红色选择都清理一遍--- + for (var inb in by_quanlist) { + by_quanlist[inb].show_red = 0; + } + this.setData({get_by_quan_list: by_quanlist}); + } + + var by_cart_list = this.data.by_quan_list_cart; + if (by_cart_list) { + //---所有的券的显示红色选择都清理一遍--- + for (var inc in by_cart_list) { + by_cart_list[inc].show_red = 0; + } + this.setData({by_quan_list_cart: by_cart_list}); + } + + var using_quan = this.data.using_quan; + var th = this; + //---如果是不使用优惠券--- + if (no_use == 1) { + console.log("有进来吗券", no_use); + if (using_quan[th.data.selected_quan_pick]) { + using_quan[th.data.selected_quan_pick].is_nouse_red = 1; + } + else { + using_quan[th.data.selected_quan_pick] = {is_nouse_red: 1}; + } + this.setData({using_quan: using_quan, is_coupon: 2222}); + return; + } + + + var txt = "selected_quan_list[" + ind + "].show_red"; + var obj = {}; + obj[txt] = 1; + if (quan_item.show_red) { + obj[txt] = 0; + } this.setData(obj); - th.data.get_by_quan_list_cart[pickid]=JSON.parse(JSON.stringify(th.data.by_quan_list_cart)); //要把选中的弄回数组 - } - - if(using_quan[th.data.selected_quan_pick]){ - using_quan[th.data.selected_quan_pick].is_nouse_red=0; - } - else{ - using_quan[th.data.selected_quan_pick] ={is_nouse_red:0}; - } - this.setData({using_quan:using_quan}); - }, - - //--确认使用券--- - confirm_quan:function () { - var using_quan=this.data.using_quan; //正在使用中的券列表 - var pickid=this.data.selected_quan_pick; //选中的门店ID - var th=this; - var selected_quan_list=this.data.selected_quan_list; //选择了那个门店的券列表 - var get_by_quan_list=this.data.get_by_quan_list; //立即购买的包邮券列表 - var by_quan_list_cart=this.data.by_quan_list_cart; //购物车购买的包邮券列表 - //选择了的券 - var sele_quan=null; - - //循环普通的券 - for(var i in selected_quan_list){ - var item=selected_quan_list[i]; - if(item.show_red) { - th.insert_into_using_quan(item,using_quan,pickid); - return; - } - } - //循环包邮的券,立即购买的 - for(var i in get_by_quan_list){ - var item=get_by_quan_list[i]; - if(item.show_red) { - if(th.data.is_no_by[pickid]==1){ - getApp().my_warnning("已全场不能包邮,不能选择包邮券",0,th);return false; - } - if(th.data.is_by[pickid]==1){ - getApp().my_warnning("已全场包邮,不能选择包邮券",0,th);return false; - } - - th.insert_into_using_quan(item,using_quan,pickid,1); - return; - } - } - - //循环包邮的券 - for(var i in by_quan_list_cart){ - var item=by_quan_list_cart[i]; - if(item.show_red) { - if(th.data.is_no_by[pickid]==1){ - getApp().my_warnning("已全场不能包邮,不能选择包邮券",0,th);return false; - } - if(th.data.is_by[pickid]==1){ - getApp().my_warnning("已全场包邮,不能选择包邮券",0,th);return false; - } - th.insert_into_using_quan(item,using_quan,pickid,1); - return; - } - } - - //选择了的券,看是不是点击了不使用券,点击了不使用优惠券 - if(using_quan[pickid]){ - if(using_quan[pickid].is_nouse_red==1){ - using_quan[pickid] ={is_nouse_red:1}; - th.setData({using_quan:using_quan}); - if(th.data.is_b_now==1){ + console.log(this.data.selected_quan_list, "选中的券的下标", quan_item, "数据都在这里", txt); + if (using_quan[th.data.selected_quan_pick]) { + using_quan[th.data.selected_quan_pick].is_nouse_red = 0; + } + else { + using_quan[th.data.selected_quan_pick] = {is_nouse_red: 0}; + } + this.setData({using_quan: using_quan}); + + }, + + + /*----- 点击选择包邮券 -----*/ + sele_quan_item_by: function (e) { + var no_use = e.currentTarget.dataset.no; + //立即购买的包邮券 + var by_quanlist = this.data.get_by_quan_list; + if (by_quanlist) { + //---所有的券的显示红色选择都清理一遍--- + for (var ind in by_quanlist) { + by_quanlist[ind].show_red = 0; + } + this.setData({get_by_quan_list: by_quanlist}); + } + + //--购物车过来的包邮券-- + var by_cart_list = this.data.by_quan_list_cart; + if (by_cart_list) { + //---所有的券的显示红色选择都清理一遍--- + for (var ind in by_cart_list) { + by_cart_list[ind].show_red = 0; + } + this.setData({by_quan_list_cart: by_cart_list}); + } + //普通券 + var quanlist = this.data.selected_quan_list; + if (quanlist) { + //---所有的券的显示红色选择都清理一遍--- + for (var ind in quanlist) { + quanlist[ind].show_red = 0; + } + this.setData({selected_quan_list: quanlist}); + } + + var th = this; + var using_quan = this.data.using_quan; + //---如果是不使用优惠券--- + if (no_use == 1) { + if (using_quan[th.data.selected_quan_pick]) { + using_quan[th.data.selected_quan_pick].is_nouse_red = 1; + } + else { + using_quan[th.data.selected_quan_pick] = {is_nouse_red: 1}; + } + this.setData({using_quan: using_quan, is_coupon: 2222}); + return; + } + + var pickid = th.data.selected_quan_pick; //现在选择的是哪一个门店 + var ind = e.currentTarget.dataset.ind; + //--如果是立即购买的部分-- + var txt = ""; + var txt1 = ""; + var quan_item = null; + if (th.data.is_b_now) { + quan_item = this.data.get_by_quan_list[ind]; + txt = "get_by_quan_list[" + ind + "].show_red"; + var obj = {}; + obj[txt] = 1; + this.setData(obj); + } else { + txt = "by_quan_list_cart[" + ind + "].show_red"; + quan_item = th.data.by_quan_list_cart[ind]; + var obj = {}; + obj[txt] = 1; + this.setData(obj); + th.data.get_by_quan_list_cart[pickid] = JSON.parse(JSON.stringify(th.data.by_quan_list_cart)); //要把选中的弄回数组 + } + + if (using_quan[th.data.selected_quan_pick]) { + using_quan[th.data.selected_quan_pick].is_nouse_red = 0; + } + else { + using_quan[th.data.selected_quan_pick] = {is_nouse_red: 0}; + } + this.setData({using_quan: using_quan}); + }, + + //--确认使用券--- + confirm_quan: function () { + var using_quan = this.data.using_quan; //正在使用中的券列表 + var pickid = this.data.selected_quan_pick; //选中的门店ID + var th = this; + var selected_quan_list = this.data.selected_quan_list; //选择了那个门店的券列表 + var get_by_quan_list = this.data.get_by_quan_list; //立即购买的包邮券列表 + var by_quan_list_cart = this.data.by_quan_list_cart; //购物车购买的包邮券列表 + //选择了的券 + var sele_quan = null; + + //循环普通的券 + for (var i in selected_quan_list) { + var item = selected_quan_list[i]; + if (item.show_red) { + th.insert_into_using_quan(item, using_quan, pickid); + return; + } + } + //循环包邮的券,立即购买的 + for (var i in get_by_quan_list) { + var item = get_by_quan_list[i]; + if (item.show_red) { + if (th.data.is_no_by[pickid] == 1) { + getApp().my_warnning("已全场不能包邮,不能选择包邮券", 0, th); + return false; + } + if (th.data.is_by[pickid] == 1) { + getApp().my_warnning("已全场包邮,不能选择包邮券", 0, th); + return false; + } + + th.insert_into_using_quan(item, using_quan, pickid, 1); + return; + } + } + + //循环包邮的券 + for (var i in by_quan_list_cart) { + var item = by_quan_list_cart[i]; + if (item.show_red) { + if (th.data.is_no_by[pickid] == 1) { + getApp().my_warnning("已全场不能包邮,不能选择包邮券", 0, th); + return false; + } + if (th.data.is_by[pickid] == 1) { + getApp().my_warnning("已全场包邮,不能选择包邮券", 0, th); + return false; + } + th.insert_into_using_quan(item, using_quan, pickid, 1); + return; + } + } + + //选择了的券,看是不是点击了不使用券,点击了不使用优惠券 + if (using_quan[pickid]) { + if (using_quan[pickid].is_nouse_red == 1) { + using_quan[pickid] = {is_nouse_red: 1}; + th.setData({using_quan: using_quan}); + if (th.data.is_b_now == 1) { th.calculatePrice2(); - }else{ - th.calculatePrice(); + } else { + th.calculatePrice(); } - th.setData({open_quan:0}); + th.setData({open_quan: 0}); return; - } - } - }, - - //----把券插入之后的操作,同时还要重新计算价格---- - insert_into_using_quan:function (item,using_quan,pickid,isby) { - var th=this; - if(isby==1){ - using_quan[pickid]={coupon_no:item.no,money:0,is_nouse_red:0,region_list:item.region_list,goods_list:item.goods_list}; - using_quan[pickid].isby=1; - }else{ - using_quan[pickid]={coupon_no:item.CashRepNo,money:item.Sum,is_nouse_red:0}; - using_quan[pickid].isby=0; - } - this.setData({using_quan:using_quan}); - if(th.data.is_b_now==1){ - th.calculatePrice2(); - }else{ - th.calculatePrice(); - } - th.setData({open_quan:0}); - }, - - cart_set_err:function(e){ - var txt = e.currentTarget.dataset.err; - var ob={}; - ob[txt] = this.data.imgUrl + "/miniapp/images/default_g_img.gif"; - this.setData(ob); - }, - //--验证是否已经冻结-- - check_is_frozenQuan:function(quanlist,frozenQuan,isby){ - console.log("券列表",quanlist); - if(!quanlist) return null; - if(!frozenQuan) return quanlist; - var arr=[]; - for(var i=0;i{ - if (res.data.code == 0) { - var quan_list = res.data.data.pageData; - arr[ind].quan_list = th.check_is_frozenQuan(quan_list, th.data.frozenQuan); - } - }) - } - } - - //如果是搭配购的立即购买的时候 - if(th.data.is_b_now){ - if(arr && arr.length>0){ - var quanlist=arr[0].quan_list; - th.setData({selected_quan_list:quanlist,cartlist:arr}) - } - }else{ - th.setData({cartlist:arr }) - th.set_can_num(); - } - - //}) - }, - - //------ 获取立即购买的购物车的劵 -------- - get_buy_now_quan:function () { - var quanlist=null,th=this,frozenQuan = null; - var good = this.data.bn_goods; - if(good.prom_price){ - th.data.ckeck_quan_price=good.prom_price; //如果有优惠价,就用优惠价 - }else if(good.is_offline){ - th.data.ckeck_quan_price=good.offline_price; //如果有线下取价,就用线下价 - } - //--如果商家后台没有限制使用优惠券,同时商品的优惠活动没有限制使用优惠券-- - if(th.data.is_close_quan != 1 && th.data.bn_goods.is_xz_yh!=1) - { - var url0 = "/api/weshop/users/frozenQuan/listFrozenQuan/" + app.globalData.user_id; - var url="/api/weshop/couponList/getUseCouponList"; - app.request.promiseGet(url0, {1: 1}).then(res => { - if (res.data.code == 0) { - frozenQuan = res.data.data;th.data.frozenQuan=frozenQuan; - } - app.request.time_limit_get(6, url, { - data: { - storeId: oo.stoid, - userId: app.globalData.user_id, - BuySum: th.data.ckeck_quan_price, - WareIds: encodeURIComponent(th.data.check_quan_ware_list), - pageSize: 100 - }, - success: function (res) { - if (res.data.code == 0) { - quanlist = res.data.data.pageData; - if (quanlist) { - quanlist = th.check_is_frozenQuan(quanlist, frozenQuan); - th.setData({selected_quan_list:quanlist }) - } - } - } - }) - }) - } - }, - - //检查区域是不是包邮 - check_area:function(arr){ - var user_addr=this.data.user_addr; - if(!user_addr) return 0; - for(var i in arr){ - var item=arr[i]; - if(user_addr.twon==item || user_addr.district==item - || user_addr.city==item|| user_addr.province==item ){ - return 0; - } - } - return 1; - }, - - //检查立即购买的商品是不是不包邮 - check_good:function(arr,goods_id){ - if(!goods_id) goods_id=this.data.bn_goods.goods_id; - for(var i in arr){ - var item=arr[i]; - if(goods_id==item) return 0; - } - return 1; - }, - check_by_area:function(region_list){ - var arr=region_list.split(","); - var check=this.check_area(arr); - return !check; - }, - check_by_goods:function(goods_list,goods_id){ - var arr=goods_list.split(","); - var check=this.check_good(arr,goods_id); - return !check; - }, - //立即购买获取优惠活动的内容 - buy_now_prom_goods:function (prom_id,arr,func) { - var price=arr.shop_price*arr.goods_num; - var prom=null; - getApp().request.promiseGet("/api/weshop/promgoods/get/"+os.stoid+"/"+prom_id,{}).then(res=>{ - if(res.data.code==0){ - prom=res.data.data; - return getApp().request.promiseGet("/api/weshop/goods/getDiscount", { - data: { - price: price, - prom_id: prom_id, - goods_num: arr.goods_num, - user_id: getApp().globalData.user_id, - is_bz: prom.is_bz - } - }) - }else { - func(arr); - } - }).then(res=>{ - if(res.data.code==0){ - var get_data=res.data.data; - arr.is_bz=prom.is_bz; //是不是倍增 - arr.is_xz_yh=prom.is_xz_yh; //是不是优惠 - arr.bs=get_data.bs; //是不是倍数 - arr.is_past=get_data.is_past; //是不是包邮 - arr.prom_price=get_data.price>=0?get_data.price:price; - arr.s_intValue=get_data.intValue; - arr.s_coupon_id=get_data.coupon_id; - arr.s_coupon_num=get_data.coupon_num; - //-- 看是不是有赠品 -- - if(get_data.gift_id) { - arr.gift_id = get_data.gift_id; - arr.gift_goods_id = get_data.goods_id; - arr.gift_goods_name = get_data.goods_name; - arr.gift_goods_color = get_data.goodsinfo.goods_color; - arr.gift_goods_spec = get_data.goodsinfo.goods_spec; - arr.gift_original_img = get_data.goodsinfo.original_img; - arr.gift_weight = get_data.goodsinfo.weight; - arr.gift_exp_sum_type = get_data.goodsinfo.exp_sum_type; - arr.gift_uniform_exp_sum = get_data.goodsinfo.uniform_exp_sum; - arr.gift_limit_num = get_data.limit_num; - arr.gift_storecount = get_data.gift_storecount; - } - arr.s_libao=get_data.libao; - arr.s_lb_num=get_data.lb_num; - arr.prom_id=prom_id; - } - func(arr); - }) - }, - //--检查订单优惠-- - check_is_order_prom:function (condition,func,pick) { - var th=this; - if(this.data.is_b_now==1) pick=this.data.bn_pick; - //---获取订单优惠--- - getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion",{ - data:{store_id:os.stoid,orderAmount:condition} - }).then(res=>{ - if(res.data.code==0) { - var data = res.data.data; - th.data.order_prom[pick]=data; - } - func(); - }) - }, - - //--- 加入优惠活动的映射中,同时要有一个good列表 --- - add_prom_goods_map:async function (item) { - var th=this; - var pickid=item.pick_id; - var map=th.data.prom_goods_map; - var obj=map[pickid]; - - if(map[pickid]){ - if(map[pickid][item.prom_id]){ - var ob=map[pickid][item.prom_id]; - ob.price+=item.goods_price*item.goods_num; - ob.goods_num+=item.goods_num; - ob.goods.push({goods_id:item.goods_id,goods_price:item.goods_price,goods_num:item.goods_num}); - - }else{ - var prom=null; - await getApp().request.promiseGet("/api/weshop/promgoods/get/"+os.stoid+"/"+item.prom_id,{}).then(res=>{ - if(res.data.code==0){ prom=res.data.data; } + determine_expres: function (e) { + this.setData({open_express: 0}); + if (this.data.is_b_now == 1) + this.calculatePrice2(); + else + this.calculatePrice(); + }, + + //点击打开优惠券使用说明 + clik_coupons: function (e) { + var ind = e.currentTarget.dataset.idx; + var is_open = this.data.selected_quan_list[ind].is_open; + + if (is_open == 1) is_open = 0; + else is_open = 1; + + var txt = "selected_quan_list[" + ind + "].is_open" + var obj = {}; + obj[txt] = is_open; + + this.setData(obj); + this.setData({disabled: 1}) + }, + + clik_coupons2: function (e) { + var ind = e.currentTarget.dataset.idx; + var is_open = this.data.get_by_quan_list[ind].is_open; + + if (is_open == 1) is_open = 0; + else is_open = 1; + + var txt = "get_by_quan_list[" + ind + "].is_open" + var obj = {}; + obj[txt] = is_open; + + this.setData(obj); + this.setData({disabled: 1}) + }, + + + //设置默认物流 + select_default_logistics: function () { + var th = this; + var is_shipping_code = this.data.is_shipping_code + getApp().request.put("/api/weshop/users/update", { + data: {user_id: getApp().globalData.user_id, store_id: oo.stoid, def_exp_code: is_shipping_code}, + success: function (rse) { + if (rse.data.code == 0) { + getApp().globalData.userInfo.def_exp_code = is_shipping_code; + th.setData({open_express: 0}); + //----计算此时购物车的价格---- + if (th.data.is_b_now == 1) th.calculatePrice2(); + else th.calculatePrice(); + } + } + }) + }, + + //更新下默认,在onshow里面 + update_code(){ + var th = this, m_wind = 0, def_exp_code = getApp().globalData.userInfo.def_exp_code; + //--定时器,判断wu_arr不未空-- + var uii = setInterval(function () { + if (th.data.wu_arr) { + clearInterval(uii); + for (var k = 0; k < th.data.wu_arr.length; k++) { + var item = th.data.wu_arr[k]; + if (def_exp_code == item.code) { + m_wind = k; + } + } + //--如果是立即购买-- + if (th.data.is_b_now == 1) { + th.setData({index: m_wind, is_express: m_wind}); + } else { + var ui = setInterval(function () { + if (th.data.cartlist) { + var c_arr = th.data.cartlist; + for (var i in c_arr) { + c_arr[i].wind = m_wind; + } + th.setData({cartlist: c_arr, is_express: m_wind}) + clearInterval(ui); + } + }, 500) + } + } + }, 500); + }, + //-----获取购物车进来的劵------- + get_cart_quan: async function (order_prom_list_cart) { + var th = this; + var is_xz_yh = 1; + //等待值的出现 + //getApp().waitfor2(this,"g_cart_q_time","order_prom_list_cart",async function () { + //var arr=th.data.order_prom_list_cart; + var arr = order_prom_list_cart; + if (!arr) arr = []; + //如果系统有限制使用优惠券 + if (th.data.is_close_quan) return false; + + //------------开始计算使用优惠券相关------------ + for (var ind in arr) { + var ep = arr[ind]; + var goodlist = ep.goods; + var pickup_id = ep.pickup_id; + //--更优惠券抵用有关,立即购买的,如果是购物车,如果有等级价还有考虑等级价的东西 + //就要把相应的值,写入cartlist数组中-- + var ckeck_quan_price = 0, + check_quan_price_list = '', + check_quan_ware_list = ''; + + for (var i in goodlist) { + var gd = goodlist[i]; + //--如果是秒杀就跳出,如果是赠品,如果是组合购,如果是限制使用优惠券-- + if (gd.prom_type == 1 || gd.is_gift || gd.prom_type == 7) { + continue; + } + //如果有限制使用优惠券,就要返回 + if (gd.prom_type == 3) { + if (th.data.prom_goods_map[pickup_id][gd.prom_id].is_xz_yh) continue; + th.data.prom_goods_map[pickup_id][gd.prom_id].coupon_sele = 1; + } + is_xz_yh = 0; + var item_price = gd.goods_price * gd.goods_num; + //-- 如果有平摊下去,有实收价格的时候,就要用account来计算价格 -- + if (gd.account_fir != null && gd.account_fir != undefined) { + item_price = gd.account_fir * gd.goods_num; + } + ckeck_quan_price += item_price; + + //--组装价格list-- + if (check_quan_price_list) { + check_quan_price_list += "," + item_price; + } else { + check_quan_price_list = item_price; + } + //--组装商品的线下erpwareid-- + if (check_quan_ware_list) { + check_quan_ware_list += "," + encodeURIComponent(gd['erpwareid']); + } else { + check_quan_ware_list = encodeURIComponent(gd['erpwareid']); + } + } + //优惠券优惠的金额要控制到优惠券的选择条件 + var cut_price = 0; + for (var i in th.data.prom_goods_map[pickup_id]) { + var obj = th.data.prom_goods_map[pickup_id][i]; + if (obj.coupon_sele) { + cut_price += obj.price - obj.prom_price; + } + } + + arr[ind].ckeck_quan_price = ckeck_quan_price - cut_price; + arr[ind].check_quan_ware_list = check_quan_ware_list; + arr[ind].check_quan_price_list = check_quan_price_list; + + //是否关闭使用优惠券 + if (th.data.is_close_quan != 1 && !is_xz_yh) { + //--调用接口,获取优惠券的列表,3秒钟内控制接口请求-- + var url = "/api/weshop/couponList/getUseCouponList"; + await app.request.promiseGet(url, { + data: { + storeId: oo.stoid, + userId: app.globalData.user_id, + BuySum: ckeck_quan_price, + WareIds: check_quan_ware_list, + pageSize: 100 + } + }).then(res => { + if (res.data.code == 0) { + var quan_list = res.data.data.pageData; + arr[ind].quan_list = th.check_is_frozenQuan(quan_list, th.data.frozenQuan); + } + }) + } + } + + //如果是搭配购的立即购买的时候 + if (th.data.is_b_now) { + if (arr && arr.length > 0) { + var quanlist = arr[0].quan_list; + th.setData({selected_quan_list: quanlist, cartlist: arr}) + } + } else { + th.setData({cartlist: arr}) + th.set_can_num(); + } + + //}) + }, + + //------ 获取立即购买的购物车的劵 -------- + get_buy_now_quan: function () { + var quanlist = null, th = this, frozenQuan = null; + var good = this.data.bn_goods; + if (good.prom_price) { + th.data.ckeck_quan_price = good.prom_price; //如果有优惠价,就用优惠价 + } else if (good.is_offline) { + th.data.ckeck_quan_price = good.offline_price; //如果有线下取价,就用线下价 + } + //--如果商家后台没有限制使用优惠券,同时商品的优惠活动没有限制使用优惠券-- + if (th.data.is_close_quan != 1 && th.data.bn_goods.is_xz_yh != 1) { + var url0 = "/api/weshop/users/frozenQuan/listFrozenQuan/" + app.globalData.user_id; + var url = "/api/weshop/couponList/getUseCouponList"; + app.request.promiseGet(url0, {1: 1}).then(res => { + if (res.data.code == 0) { + frozenQuan = res.data.data; + th.data.frozenQuan = frozenQuan; + } + app.request.time_limit_get(6, url, { + data: { + storeId: oo.stoid, + userId: app.globalData.user_id, + BuySum: th.data.ckeck_quan_price, + WareIds: encodeURIComponent(th.data.check_quan_ware_list), + pageSize: 100 + }, + success: function (res) { + if (res.data.code == 0) { + quanlist = res.data.data.pageData; + if (quanlist) { + quanlist = th.check_is_frozenQuan(quanlist, frozenQuan); + th.setData({selected_quan_list: quanlist}) + } + } + } }) - var ob={}; - ob.prom_id=item.prom_id; - ob.price=item.goods_price*item.goods_num; - ob.goods_num=item.goods_num; - ob.is_bz=prom.is_bz; - ob.is_xz_yh=prom.is_xz_yh; - ob.goods=new Array(); - ob.goods.push({goods_id:item.goods_id,goods_price:item.goods_price,goods_num:item.goods_num}); - map[pickid][item.prom_id]=ob; - } - }else{ - var ob={}; - var prom=null; - await getApp().request.promiseGet("/api/weshop/promgoods/get/"+os.stoid+"/"+item.prom_id,{}).then(res=>{ - if(res.data.code==0){ prom=res.data.data; } }) - ob.prom_id=item.prom_id; - ob.price=item.goods_price*item.goods_num; - ob.goods_num=item.goods_num; - ob.is_bz=prom.is_bz; - ob.is_xz_yh=prom.is_xz_yh; - ob.goods=new Array(); - ob.goods.push({goods_id:item.goods_id,goods_price:item.goods_price,goods_num:item.goods_num}); + } + }, + + //检查区域是不是包邮 + check_area: function (arr) { + var user_addr = this.data.user_addr; + if (!user_addr) return 0; + for (var i in arr) { + var item = arr[i]; + if (user_addr.twon == item || user_addr.district == item + || user_addr.city == item || user_addr.province == item) { + return 0; + } + } + return 1; + }, + + //检查立即购买的商品是不是不包邮 + check_good: function (arr, goods_id) { + if (!goods_id) goods_id = this.data.bn_goods.goods_id; + for (var i in arr) { + var item = arr[i]; + if (goods_id == item) return 0; + } + return 1; + }, + check_by_area: function (region_list) { + var arr = region_list.split(","); + var check = this.check_area(arr); + return !check; + }, + check_by_goods: function (goods_list, goods_id) { + var arr = goods_list.split(","); + var check = this.check_good(arr, goods_id); + return !check; + }, + //立即购买获取优惠活动的内容 + buy_now_prom_goods: function (prom_id, arr, func) { + var price = arr.shop_price * arr.goods_num; + var prom = null; + getApp().request.promiseGet("/api/weshop/promgoods/get/" + os.stoid + "/" + prom_id, {}).then(res => { + if (res.data.code == 0) { + prom = res.data.data; + return getApp().request.promiseGet("/api/weshop/goods/getDiscount", { + data: { + price: price, + prom_id: prom_id, + goods_num: arr.goods_num, + user_id: getApp().globalData.user_id, + is_bz: prom.is_bz + } + }) + } else { + func(arr); + } + }).then(res => { + if (res.data.code == 0) { + var get_data = res.data.data; + arr.is_bz = prom.is_bz; //是不是倍增 + arr.is_xz_yh = prom.is_xz_yh; //是不是优惠 + arr.bs = get_data.bs; //是不是倍数 + arr.is_past = get_data.is_past; //是不是包邮 + arr.prom_price = get_data.price >= 0 ? get_data.price : price; + arr.s_intValue = get_data.intValue; + arr.s_coupon_id = get_data.coupon_id; + arr.s_coupon_num = get_data.coupon_num; + //-- 看是不是有赠品 -- + if (get_data.gift_id) { + arr.gift_id = get_data.gift_id; + arr.gift_goods_id = get_data.goods_id; + arr.gift_goods_name = get_data.goods_name; + arr.gift_goods_color = get_data.goodsinfo.goods_color; + arr.gift_goods_spec = get_data.goodsinfo.goods_spec; + arr.gift_original_img = get_data.goodsinfo.original_img; + arr.gift_weight = get_data.goodsinfo.weight; + arr.gift_exp_sum_type = get_data.goodsinfo.exp_sum_type; + arr.gift_uniform_exp_sum = get_data.goodsinfo.uniform_exp_sum; + arr.gift_limit_num = get_data.limit_num; + arr.gift_storecount = get_data.gift_storecount; + } + arr.s_libao = get_data.libao; + arr.s_lb_num = get_data.lb_num; + arr.prom_id = prom_id; + } + func(arr); + }) + }, + //--检查订单优惠-- + check_is_order_prom: function (condition, func, pick) { + var th = this; + if (this.data.is_b_now == 1) pick = this.data.bn_pick; + //---获取订单优惠--- + getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { + data: {store_id: os.stoid, orderAmount: condition} + }).then(res => { + if (res.data.code == 0) { + var data = res.data.data; + th.data.order_prom[pick] = data; + } + func(); + }) + }, + + //--- 加入优惠活动的映射中,同时要有一个good列表 --- + add_prom_goods_map: async function (item) { + var th = this; + var pickid = item.pick_id; + var map = th.data.prom_goods_map; + var obj = map[pickid]; + + if (map[pickid]) { + if (map[pickid][item.prom_id]) { + var ob = map[pickid][item.prom_id]; + ob.price += item.goods_price * item.goods_num; + ob.goods_num += item.goods_num; + ob.goods.push({goods_id: item.goods_id, goods_price: item.goods_price, goods_num: item.goods_num}); - var obj={}; - obj[item.prom_id]=ob; - map[pickid]=obj; + } else { + var prom = null; + await getApp().request.promiseGet("/api/weshop/promgoods/get/" + os.stoid + "/" + item.prom_id, {}).then(res => { + if (res.data.code == 0) { + prom = res.data.data; + } + }) + var ob = {}; + ob.prom_id = item.prom_id; + ob.price = item.goods_price * item.goods_num; + ob.goods_num = item.goods_num; + ob.is_bz = prom.is_bz; + ob.is_xz_yh = prom.is_xz_yh; + ob.goods = new Array(); + ob.goods.push({goods_id: item.goods_id, goods_price: item.goods_price, goods_num: item.goods_num}); + map[pickid][item.prom_id] = ob; + } + } else { + var ob = {}; + var prom = null; + await getApp().request.promiseGet("/api/weshop/promgoods/get/" + os.stoid + "/" + item.prom_id, {}).then(res => { + if (res.data.code == 0) { + prom = res.data.data; + } + }) + ob.prom_id = item.prom_id; + ob.price = item.goods_price * item.goods_num; + ob.goods_num = item.goods_num; + ob.is_bz = prom.is_bz; + ob.is_xz_yh = prom.is_xz_yh; + ob.goods = new Array(); + ob.goods.push({goods_id: item.goods_id, goods_price: item.goods_price, goods_num: item.goods_num}); + + var obj = {}; + obj[item.prom_id] = ob; + map[pickid] = obj; } }, - //计算立即购买赠品的物流费用 - get_now_gift_goods_wuliu:function (code, o_shipping_price, user_addr, gift_freight_free,allpice, rs,shipping_price,no_by_data,goods_weight1,goods_piece1) { - var good=this.data.buy_now_gift_goods; - var goods_weight=-1, goods_piece=-1; - var gift_shipping_price=0; - var th=this; + //计算立即购买赠品的物流费用 + get_now_gift_goods_wuliu: function (code, o_shipping_price, user_addr, gift_freight_free, allpice, rs, shipping_price, no_by_data, goods_weight1, goods_piece1) { + var good = this.data.buy_now_gift_goods; + var goods_weight = -1, goods_piece = -1; + var gift_shipping_price = 0; + var th = this; switch (good['exp_sum_type']) { case 1: //统一运费 - gift_shipping_price += good['uniform_exp_sum']; - gift_shipping_price+=o_shipping_price; - break; + gift_shipping_price += good['uniform_exp_sum']; + gift_shipping_price += o_shipping_price; + break; case 2: if (goods_weight < 0) goods_weight = 0; //累积商品重量 每种商品的重量 * 数量 goods_weight += good['weight'] * good['buynum']; - if(goods_weight1>0){ - goods_weight+=goods_weight1; - } - break; + if (goods_weight1 > 0) { + goods_weight += goods_weight1; + } + break; case 3: if (goods_piece < 0) goods_piece = 0; //累积商品数量 - goods_piece += good['buynum']; - if(goods_piece1){ - goods_piece+=goods_piece1; - } - break; - } - - + goods_piece += good['buynum']; + if (goods_piece1) { + goods_piece += goods_piece1; + } + break; + } + + //如果有设置不包邮区域的时候 - if(no_by_data && no_by_data.region_list){ - if(th.check_by_area(no_by_data.region_list)){ - gift_freight_free=0; - th.data.is_no_by[th.data.bn_pick]=1; + if (no_by_data && no_by_data.region_list) { + if (th.check_by_area(no_by_data.region_list)) { + gift_freight_free = 0; + th.data.is_no_by[th.data.bn_pick] = 1; } } //如果有设置不包邮商品 - if(no_by_data && no_by_data.goods_list && gift_freight_free){ - if(th.check_by_goods(no_by_data.goods_list,good.goods_id)){ - gift_freight_free=0; + if (no_by_data && no_by_data.goods_list && gift_freight_free) { + if (th.check_by_goods(no_by_data.goods_list, good.goods_id)) { + gift_freight_free = 0; //th.data.is_no_by[th.data.bn_pick]=1; } } - - var t_shipping_price= + + var t_shipping_price = this.calculatewuliu(code, gift_shipping_price, goods_weight, goods_piece, user_addr, gift_freight_free, allpice, rs); return t_shipping_price; }, - //从优惠的映射中拿出商品从表的item - item_map_get_goods:function(goods_id,map){ - for(var i in map.goods){ - if(map.goods[i].goods_id==goods_id) return map.goods[i]; + //从优惠的映射中拿出商品从表的item + item_map_get_goods: function (goods_id, map) { + for (var i in map.goods) { + if (map.goods[i].goods_id == goods_id) return map.goods[i]; } }, //从优惠的映射中拿出商品从表的item - arr_get_goods:function(goods_id,arr){ - for(var i in arr){ - if(arr[i].goods_id==goods_id) return arr[i]; + arr_get_goods: function (goods_id, arr) { + for (var i in arr) { + if (arr[i].goods_id == goods_id) return arr[i]; } }, - + //检查是不是有其他门店的订单在选择了券 - check_other_use:function (iter,pkid) { - var using=this.data.using_quan; - var is_use=0; - if(using){ - for(var i in using){ - if(i==pkid) continue; - if(iter.CashRepNo==using[i].coupon_no){ - is_use=1; break; + check_other_use: function (iter, pkid) { + var using = this.data.using_quan; + var is_use = 0; + if (using) { + for (var i in using) { + if (i == pkid) continue; + if (iter.CashRepNo == using[i].coupon_no) { + is_use = 1; + break; } } } return is_use; }, //检查是不是有其他门店的订单在选择了包邮券 - check_other_use_by:function (iter,pkid) { - var using=this.data.using_quan; - var is_use=0; - if(using){ - for(var i in using){ - if(i==pkid) continue; - if(iter.no==using[i].coupon_no){ - is_use=1; break; + check_other_use_by: function (iter, pkid) { + var using = this.data.using_quan; + var is_use = 0; + if (using) { + for (var i in using) { + if (i == pkid) continue; + if (iter.no == using[i].coupon_no) { + is_use = 1; + break; } } } return is_use; }, - - //跳转到购买卡 - buycard:function(){ - getApp().goto("/pages/user/plus/plus"); - getApp().globalData.plus_buy_back=1; - }, + + //跳转到购买卡 + buycard: function () { + getApp().goto("/pages/user/plus/plus"); + getApp().globalData.plus_buy_back = 1; + }, //跳转关闭弹出框的显示 - close_offline:function(){ - this.setData({is_offline_show:0}); - }, - - //立即购买显示弹出框 - bn_pop_offline:function(){ - var off_price=this.data.bn_goods.shop_price-this.data.bn_goods.offline_price; - //是不是线下 - var is_get_offline=this.data.bn_goods.is_offline; - this.setData({is_offline_show:1,show_off_price:off_price.toFixed(2),is_get_offline:is_get_offline}); - }, - - //确定使用线下取价 - sure_offline:function(){ - var bn_goods=this.data.bn_goods; - if(bn_goods && bn_goods.prom_type==0){ - bn_goods.is_offline=1; - this.setData({is_offline_show:0,bn_goods:bn_goods}); - this.calculatePrice2(); - } - //就是购物车结算时的 - else{ - var index=this.data.pop_offline_index; - var txt="cartlist["+index+"].is_offline"; - this.setData({[txt]:1,is_offline_show:0,}); - this.data.old_cartlist[index].is_offline=1; - this.calculatePrice(); - } - }, - - - //取消使用线下取价 - cancle_offline:function(){ - //判断是不是立即购买 - var bn_goods=this.data.bn_goods; - if(bn_goods && bn_goods.prom_type==0){ - bn_goods.is_offline=0; - this.setData({is_offline_show:0,bn_goods:bn_goods}); - this.calculatePrice2(); - } - //就是购物车结算时的 - else{ - var index=this.data.pop_offline_index; - var txt="cartlist["+index+"].is_offline"; - this.setData({[txt]:0,is_offline_show:0,}) - this.data.old_cartlist[index].is_offline=0; + close_offline: function () { + this.setData({is_offline_show: 0}); + }, + + //立即购买显示弹出框 + bn_pop_offline: function () { + var off_price = this.data.bn_goods.shop_price - this.data.bn_goods.offline_price; + //是不是线下 + var is_get_offline = this.data.bn_goods.is_offline; + this.setData({is_offline_show: 1, show_off_price: off_price.toFixed(2), is_get_offline: is_get_offline}); + }, + + //确定使用线下取价 + sure_offline: function () { + var bn_goods = this.data.bn_goods; + if (bn_goods && bn_goods.prom_type == 0) { + bn_goods.is_offline = 1; + this.setData({is_offline_show: 0, bn_goods: bn_goods}); + this.calculatePrice2(); + } + //就是购物车结算时的 + else { + var index = this.data.pop_offline_index; + var txt = "cartlist[" + index + "].is_offline"; + this.setData({[txt]: 1, is_offline_show: 0,}); + this.data.old_cartlist[index].is_offline = 1; + this.calculatePrice(); + } + }, + + + //取消使用线下取价 + cancle_offline: function () { + //判断是不是立即购买 + var bn_goods = this.data.bn_goods; + if (bn_goods && bn_goods.prom_type == 0) { + bn_goods.is_offline = 0; + this.setData({is_offline_show: 0, bn_goods: bn_goods}); + this.calculatePrice2(); + } + //就是购物车结算时的 + else { + var index = this.data.pop_offline_index; + var txt = "cartlist[" + index + "].is_offline"; + this.setData({[txt]: 0, is_offline_show: 0,}) + this.data.old_cartlist[index].is_offline = 0; this.calculatePrice(); - } - }, + } + }, //-- 弹出购物车选择是不是要店铺优惠 -- - cart_pop_offline:function (e){ - var index=e.currentTarget.dataset.index; - var item=this.data.cartlist[index]; - var off_price=item.offline_price; + cart_pop_offline: function (e) { + var index = e.currentTarget.dataset.index; + var item = this.data.cartlist[index]; + var off_price = item.offline_price; //是不是线下 - var is_get_offline=item.is_offline; - this.setData({pop_offline_index:index,is_offline_show:1,show_off_price:off_price.toFixed(2),is_get_offline:is_get_offline}); + var is_get_offline = item.is_offline; + this.setData({ + pop_offline_index: index, + is_offline_show: 1, + show_off_price: off_price.toFixed(2), + is_get_offline: is_get_offline + }); }, - - - }); diff --git a/pages/cart/cart2/cart2.wxml b/pages/cart/cart2/cart2.wxml index f3dd606..cc11c39 100644 --- a/pages/cart/cart2/cart2.wxml +++ b/pages/cart/cart2/cart2.wxml @@ -427,6 +427,12 @@ 优惠活动 - ¥ {{filters.toFix(formData.cut_price,2)}}元 + + + 优惠活动 + - ¥ {{filters.toFix(formData.zh_cut_price,2)}}元 + + 订单优惠 diff --git a/pages/cart/cart2/zh_calculate.js b/pages/cart/cart2/zh_calculate.js new file mode 100644 index 0000000..4824f9a --- /dev/null +++ b/pages/cart/cart2/zh_calculate.js @@ -0,0 +1,320 @@ +var regeneratorRuntime = require('../../../utils/runtime.js'); +module.exports = { + //主要的作用,就是把组合购多余的商品进行拆分, + //如果没有达成组合购的要求,所有的商品都打回原价购买 + fir_set_arr: function (c_item) { + //组合活动,以及组合活动从表的商品 + let zh_prom_goods = c_item.zh_prom_goods; + let goods = c_item.goods; //一个门店中所有的商品 + let tfeel = 0,cut_price=0, offline_price = 0, offline_num = 0; + let txt_ite = c_item.need_list; + //多个活动要拿来循环一下 + for (let i in zh_prom_goods) { + let title = ""; //提示语; + //其中的一个活动 + let act_item = zh_prom_goods[i]; + let act_goos = act_item.gdlist; + let act = act_item.act; + + let all_num = 0; //商品数量之和 + let all_price0 = 0; //商品数量之和 + let aprice=0; //达到活动条件的购买价格 + let need_to_buy = 0; + let all_zhqty = 0; //所有商品要求起购数之和 + let no_in_arr = []; //剩余的未加入组合购 + + for (let j in act_goos) { + let item_j = goods.find(function (ele) { + return ele.goods_id == act_goos[j].goods_id; + }) + if(!item_j) continue; + act_goos[j].num = item_j.goods_num; + act_goos[j].goods_price = item_j.goods_price; + let item = act_goos[j]; + if (item.num) { + all_num += item.num; + //当有起购数的控制的时候 + if (item.zhqty) { + all_zhqty += item.zhqty; + if (item.num < item.zhqty) { + need_to_buy += item.zhqty - item.num; + } + if (item.num > item.zhqty) { + for (let i = 0; i < item.num - item.zhqty; i++) { + no_in_arr.push({ + price: item.goods_price, goods_id: item.goods_id, offline_price: item.offline_price + }) + } + } + } else { + for (let j = 0; j < item.num; j++) { + no_in_arr.push({ + price: item.goods_price, goods_id: item.goods_id, offline_price: item.offline_price + }) + } + } + } else { + if (item.zhqty) { + title = "必买商品未加购,下单立享【" + act.zhprice + "元任选" + act.zhbuyqty + "件】"; + need_to_buy += item.zhqty; + } + } + + } + + //当满足组合的要求:总数要满足,起购数要满足 + if (all_num >= act.zhbuyqty && !need_to_buy) { + function sortData(a, b) { + return a.price - b.price + } + no_in_arr.sort(sortData); + aprice = act.zhprice; + if (act.zhbuyqty > all_zhqty) { + for (let n = 0; n < act.zhbuyqty; n++) { + no_in_arr.pop(); + } + } + //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增 + if (act.is_bz && no_in_arr.length > act.zhbuyqty) { + //看一下是几倍 + let be = parseInt(no_in_arr / act.zhbuyqty); + aprice += be * act.zhprice; + for (let m = 0; m < be * act.zhbuyqty; m++) { + no_in_arr.pop(); + } + } + + //算一下剩余的商品 + if (no_in_arr.length) { + let goods_map = {}; + for (let ii in no_in_arr) { + let item = no_in_arr[ii]; + if (item.offline_price) { + offline_price += item.goods_price - item.offline_price; + offline_num += 1; + } + if (goods_map[item.goods_id]) { + var num = goods_map[item.goods_id]; + goods_map[item.goods_id] = ++num; + } else { + goods_map[item.goods_id] = 1; + } + } + //这里就开始拆分提交订单时的列表 + for (let j in goods_map) { + //map中存的就是商品的数量 + let num = goods_map[j]; + //找到相应的商品 + let idx = goods.findIndex(function (ele) { + return ele.goods_id == j; + }) + goods[idx].goods_num -= num; + let new_g = JSON.parse(JSON.stringify(goods[idx])); + new_g.goods_num = num; + new_g.prom_type = 0; + new_g.prom_id = 0; + goods.push(new_g); + } + } + //-- 只统计是参与活动的商品 -- + for(var ij in goods){ + var iter=goods[ij]; + if(iter.prom_type!=7 || iter.prom_id!=act.id){ continue; } + all_price0+=iter.goods_num*iter.goods_price; + } + //-- 活动的条件已经满足 -- + c_item.zh_prom_goods[act.id].is_has_zh = 1; + c_item.is_has_zh = 1; + c_item.zh_prom_goods[act.id].actual_price = aprice; + c_item.zh_prom_goods[act.id].cut_price =all_price0-aprice; + + //-- 设置还需要购买多少件,享受活动,前段显示 -- + let need_to = c_item.need_list; + let index = this.find_need_to(need_to, act); + if (index > -1) { + need_to.splice(index, 1); + txt_ite = need_to + } + + + } else { + for (let ii in goods) { + let item = goods[ii]; + if (item.prom_type != 7) continue; + if (item.prom_id != act.id) continue; + if (item.offline_price) { + offline_price += item.goods_price - item.offline_price; + offline_num += 1; + } + item.prom_type = 0; + item.prom_id = 0; + } + if (act.zhbuyqty - all_num > need_to_buy) { + need_to_buy = act.zhbuyqty - all_num; + } + //-- 设置还需要购买多少件享受活动,前端显示 -- + let need_to = c_item.need_list; + let index = this.find_need_to(need_to, act); + if (title == '') title = "再买" + need_to_buy + "件,下单立享【" + act.zhprice + "元任选" + act.zhbuyqty + "件】"; + if (index != -1) { + need_to[index].title = title; + } else { + if (!need_to) need_to = []; + let it = { + id: act.id, + pickup_id: c_item.pickup_id, + title: title + }; + need_to.push(it); + } + txt_ite = need_to; + } + tfeel += aprice; + cut_price+=all_price0-aprice;; + } + + c_item.zh_all_price = tfeel; + c_item.zh_cut_price = cut_price; + + if (c_item.is_offline == 1) { + c_item.offline_price += offline_price; + c_item.offline_num += offline_num; + } else { + c_item.is_offline == 1; + c_item.offline_price = offline_price; + c_item.offline_num = offline_num; + } + + }, + //筛选组合购,纯粹的数组按活动id分组 + find_split: function (arr) { + //过滤只有团购的商品 + let oarr = arr.goods.filter(function (ele) { + return ele.prom_type == 7 + }) + if (!oarr || oarr.length == 0) return null; + //看一下有多少个不同的团购 + let map = {}, + dest = []; + for (let i = 0; i < oarr.length; i++) { + let ai = oarr[i]; + let index = map[ai.prom_id] + if (!index) { + dest.push({ + prom_id: ai.prom_id, + act: ai.act, + data: [ai] + }); + map[ai.prom_id] = dest.length; //存储下标 + } else { + let dj = dest[index - 1]; + dj.data.push(ai); + } + } + return dest; + }, + + find_need_to: function (list, iter) { + if (!list || list.length <= 0) return -1; + for (var i in list) { + var item = list[i]; + if (item.id == iter.id) { + return i; + } + } + return -1; + }, + //-- 平摊组合购的价格 -- + calc_zh_split_price: async function (c_arr, th) { + //-- 循环处理 -- + for (var k in c_arr) { + var cart_item = c_arr[k]; //就是每一单的意思 + var ord_goods = c_arr[k].goods; //就是每一单的从表的意思 + + var zh_prom_goods = cart_item.zh_prom_goods; //一单中所有的组合购的集合 + var item_map = {}; + for (let i in zh_prom_goods) { + let item = zh_prom_goods[i]; + let prom_id = i; + //如果这个活动还没有达到要求,继续下一个计算 + if (!item.is_has_zh) continue; + //过滤出相应组合购活动的商品 + let glist = ord_goods.filter(function (ele) { + return ele.prom_type == 7 && ele.prom_id == i; + }) + var all_good_price = 0; + var post_gd=[]; + for (let j in glist) { + let item = glist[j]; + all_good_price += item.goods_price * item.goods_num; + var gitem={ + goods_id:item.goods_id, + goods_num:item.goods_num, + goods_price:item.goods_price + } + post_gd.push(gitem); + } + //要进行优惠的计算 + if (all_good_price - item.actual_price) { + if (cart_item.prom_pt_json) { + cart_item.prom_pt_json.push({ + "zhprom_id": prom_id, + "dis": (all_good_price - item.actual_price).toFixed(2), + "ispt": 0 + }) + } else { + cart_item.prom_pt_json = [{ + "zhprom_id": prom_id, + "dis": (all_good_price - item.actual_price).toFixed(2), + "ispt": 0 + }]; + } + } + + //-- 如果系统要平摊到单品 -- + var pt_data = { + 'prom_id': prom_id, + 'dis': parseFloat(all_good_price - item.actual_price).toFixed(2), + 'goods': post_gd + } + var pt_res = null; + await getApp().request.promisePost("/api/weshop/order/getGoodsSplit", { + is_json: 1, + data: pt_data + }).then(res => { + if (res.data.code == 0) { + pt_res = res.data.data; + } + }) + if (pt_res) { + for (var io in glist) { + var goods_id = glist[io].goods_id; + item_map[goods_id]={}; + //平摊赋值 + item_map[goods_id].account_fir = th.arr_get_goods(goods_id, pt_res).fisrt_account; + item_map[goods_id].account_yu_fir = th.arr_get_goods(goods_id, pt_res).fisrt_account_yu; + if (!th.data.ispt_goods) { + item_map[goods_id].account = item_map[goods_id].account_fir; + item_map[goods_id].account_yu = item_map[goods_id].account_yu_fir; + } + } + } + } + + //--------循环计算商品是不是包邮,是不是使用优惠券,此时循环是商品从表----------- + for (var jj = 0; jj < ord_goods.length; jj++) { + if (ord_goods[jj].is_gift) continue; + if (ord_goods[jj].prom_type == 7 && item_map[ord_goods[jj].goods_id]) { + ord_goods[jj].account_fir = item_map[ord_goods[jj].goods_id].account_fir; + ord_goods[jj].account_yu_fir = item_map[ord_goods[jj].goods_id].account_yu_fir; + ord_goods[jj].account = item_map[ord_goods[jj].goods_id].account; + ord_goods[jj].account_yu = item_map[ord_goods[jj].goods_id].account_yu; + } + } + } + + + } + + +} diff --git a/pages/goods/goodsInfo/goodsInfo.js b/pages/goods/goodsInfo/goodsInfo.js index fdc243a..996dfb2 100644 --- a/pages/goods/goodsInfo/goodsInfo.js +++ b/pages/goods/goodsInfo/goodsInfo.js @@ -776,7 +776,28 @@ Page({ //动态获取商品名称 wx.setNavigationBarTitle({ title: t.data.data.goods_name, - }) + }); + + //-- 判断是不是组合购活动,必须要登录后才能判断 -- + if(getApp().globalData.userInfo && t.data.data.prom_type==7 ){ + //获取活动信息 + var url = "/api/weshop/prom/zhbuy/get/" + os.stoid + "/" + + t.data.data.prom_id+"/"+getApp().globalData.userInfo.user_id; + getApp().request.get(url, { + success:function (e) { + if (e.data.code == 0 && e.data.data) { + if(ut.gettimestamp() 促销 - - 消费满{{item.condition}} - - 减价{{item.money}}元; - 打{{item.sale}}折; - 包邮; - 送{{tem.intValue}}积分; - 送{{item.couponMoney}}元优惠券; - 送商品{{item.goods_name}}; - 送{{item.lbtitle}}; - - + + 消费满{{item.condition}} + + 减价{{item.money}}元; + 打{{item.sale}}折; + 包邮; + 送{{tem.intValue}}积分; + 送{{item.couponMoney}}元优惠券; + 送商品{{item.goods_name}}; + 送{{item.lbtitle}}; + + @@ -507,6 +510,25 @@ + + + + 组合购 + + + + + + {{order_prom.name}} + (活动时间:{{tool.format_tt(zh_act.start_time)}} - {{tool.format_tt(zh_act.end_time)}}) + + + + + + + +