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"); 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, }, 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.ispt_goods=json_d.ispt_goods; //是不是平摊到单品的控制参数赋值 th.setData({ is_close_quan: json_d.is_close_quan,sales_rules:ee.sales_rules,rank_switch:json_d.rank_switch}); 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; 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; 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(e_t==0 && 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(); }) },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; 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; 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.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; //--主商品要有导购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); var ie = { pickup_id: gg.pick_id, pname: gg.pick_name, goods: narr, exp_type: et, wind: m_wind, distr_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 { 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){ 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; } //----------------如果是选择了物流--------------------- if(cart_item.exp_type == 0 && item[j].is_free_shipping==0){ //如果地址不为空 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); } 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); 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 = order_m.toFixed(2); th.setData({ [txt]: order_m, [txt2]:0,[txt3]:coupon_price,show_submit:1 }) }else{ order_m =parseFloat(order_m - 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"; 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 = order_m.toFixed(2); th.setData({ [txt]: order_m, [txt2]:0,[txt3]:coupon_price,show_submit:1 }) }else{ order_m =parseFloat(order_m - 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; } 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; //如果不立即购买或者秒杀,如果是线下库存购买的时候 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; //房间号的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); } 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; 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(); } 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.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; } }) 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) { 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']; 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; } //如果有设置不包邮区域的时候 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; //th.data.is_no_by[th.data.bn_pick]=1; } } 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+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 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; } } } 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; } } } return is_use; }, //跳转到购买卡 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; 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; //是不是线下 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}); } });