// pages/cart/cart_wk/cart_wk.js var t = getApp(), oo = t.globalData.setting; var regeneratorRuntime = require('../../../utils/runtime.js'); Page({ /** * 页面的初始数据 */ data: { imgUrl: t.globalData.setting.imghost, order_id: 0, //订单ID order: null, //订单所有字段 user_addr: null, //会员地址 pickup: null, //门店 goods:null, //商品 /*------------------------*/ userinfo: null, //获取会员 /*----------物流选择--------*/ wu_arr: null, index: 0, //申请提现的金额 txmon: 0, yuer: 0, //判断页面是返回回来的还是 首次进入的 isclose: 1, //配送方式 0=用户自选 1=自提 2=物流 distr_type: 0, //实际配送方式 0物流 1自提 exp_type: 1, //------物流费用------ exp_price: 0, enterAddressPage: 0, //进入地址页面 allpice:0, show_pay_type:0, teamgroup: null, }, /** * 生命周期函数--监听页面加载 */ onLoad: function(options) { //清空is_pick_up getApp().request.put("/api/weshop/useraddress/updatePickUp", { data: {user_id: getApp().globalData.user_id, is_pickup: 0}, success: function (s) { } }); var th = this; this.data.order_id = options.order_id; //--初始化-- getApp().getConfig2(function (e){ var json_d = JSON.parse(e.switch_list); th.data.json_d=json_d; th.get_wuliu(th.get_info(th.show_page)); },1) }, /** * 生命周期函数--监听页面显示 */ onShow: function() { var th = this; if (th.data.isclose == 0) { wx.navigateTo({ url: "/pages/index/index/index" }) } th.getuser_addr(function(addr) { if(addr==null || addr==undefined || addr.length==0) { th.setData({ user_addr: null, enterAddressPage: 1,}); }else { th.setData({ user_addr: addr, enterAddressPage: 0, }); } if (th.data.exp_type == 0 && th.data.goods){ th.calculate_wuliu(); } }) }, /** * 用户点击右上角分享 */ onShareAppMessage: function() {}, //---------------获取物流--------------- get_wuliu(func) { var th = this, to = getApp(); to.getwuliu(function(e) { th.setData({ wu_arr: e }) typeof func == "function" && func(); }) }, //------获取会员信息-----先获取用户信息,在进行下一步--- get_info: function(func) { var user_id = t.globalData.user_id, to = getApp(); to.auth.get_u(func); }, //------获取会员收货地址----- getuser_addr: function(func) { var to = getApp(), a = to.request; a.get("/api/weshop/useraddress/page", { data: { user_id: to.globalData.user_id, store_id: oo.stoid, pageSize: 600 }, success: function(su) { var user_addr = su.data.data.pageData; var item = null; 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; func(item); } }); }, //----------------展示页面,是再获取用户信息之后-------------- show_page: function() { var th = this, to = getApp(); th.setData({ userinfo: to.globalData.userInfo, }); //选获取地址 th.getuser_addr(function(addr) { if(addr==null || addr==undefined || addr.length==0) { th.setData({ enterAddressPage: 1, }); }else { th.setData({ user_addr: addr, enterAddressPage: 0, }); } //获取立即购买的商品信息 th.get_buy_goods(th.data.order_id); }); //获取提现金额 getApp().request.get("/api/weshop/withdrawals/summoney", { data: { user_id: to.globalData.user_id, store_id: oo.stoid, status: 0 }, success: function(su) { console.log("withdrawals"); if (su.data.code == 0) { var yuer = parseFloat(th.data.userinfo.user_money - th.data.userinfo.frozen_money - su.data.data.summoney).toFixed(2); th.setData({ txmon: su.data.data.summoney, yuer: yuer }); } } }); }, //-----获取商品------ async get_buy_goods(ord) { var order = null, order_goods = null, goods = null, pickup = null, distr_type = 0, exp_type = 0, teamgroup=null, th=this; //---获取订单--- await getApp().request.promiseGet("/api/weshop/order/get/" + oo.stoid + "/" + ord, {}).then(res => { order = res.data.data; }); //---获取订单从表--- await getApp().request.promiseGet("/api/weshop/ordergoods/page", { data: { store_id: oo.stoid, order_id: ord } }).then(res => { order_goods = res.data.data.pageData[0]; }); //---获取商品--- await getApp().request.promiseGet("/api/weshop/goods/get/" + oo.stoid + "/" + order_goods.goods_id, {}).then(res => { goods = res.data.data; order.market_price = goods.market_price; order.show_img = oo.imghost + goods.original_img; }); //---获取门店--- await getApp().request.promiseGet("/api/weshop/pickup/get/" + oo.stoid + "/" + order.pickup_id, {}).then(res => { pickup = res.data.data; }); //---获取尾款价格--- await getApp().request.promiseGet("/api/weshop/teamgroup/page", { data:{store_id:oo.stoid,team_id:order.pt_prom_id,listno:order.pt_listno} }).then(res => { teamgroup = res.data.data.pageData[0]; }); var jsarr=JSON.parse(teamgroup.jt_json); var count=teamgroup.jt_ct_num; //要计算尾款的价钱 var price=0; jsarr.forEach(function(value,index){ if(count>=value['rynum']) price=value['price']; }) var tail_money =(price*order_goods.goods_num-order['order_amount']-order['user_money']).toFixed(2); tail_money = parseFloat(tail_money); order.tail_money=tail_money; //--判断物流-- if (goods.distr_type) distr_type = goods.distr_type; else distr_type = pickup.distr_type; switch (distr_type) { case 0: exp_type = 1; //-- 系统后台有设置要默认的 -- if(th.data.json_d.pickupway && th.data.json_d.pickupway==1) exp_type=0; break; //自选 case 1: exp_type = 1; break //自提 case 2: exp_type = 0; break; //物流 } order.order_goods = order_goods; this.setData({ order: order, distr_type: distr_type, pickup: pickup, exp_type: exp_type, goods:goods, teamgroup:teamgroup }); //--计算物流-- if(exp_type==0){ th.calculate_wuliu(); }else{ var allpice = th.data.order.order_amount + th.data.order.user_money + th.data.order.tail_money; allpice = allpice.toFixed(2); th.setData({ exp_price: 0, allpice: allpice }) } }, //--图片失败,默认图片-- bind_bnerr: function(e) { var _errImg = e.target.dataset.errorimg; var _errObj = {}; _errObj[_errImg] = this.data.imgUrl+ "/miniapp/images/del/logo.jpg"; this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; }, //-------------------获取物流--------------- get_wuliu(func) { var th = this,to = getApp(); to.getwuliu(function(e) { th.setData({ wu_arr: e }) typeof func == "function" && func(); }) }, //--------点击选择---------- set_wuliu: function(e) { var type = e.currentTarget.dataset.type,th=this; this.setData({ exp_type: type }); //--计算物流的值-- if (type == 0) { th.calculate_wuliu(); }else{ var allpice= parseFloat(th.data.order.order_amount) + parseFloat(th.data.order.user_money) +parseFloat(th.data.order.tail_money); allpice=allpice.toFixed(2); this.setData({ allpice: allpice, exp_price: 0, }); } }, //关闭支付 close_show_pay:function(){ this.setData({show_pay_type:0}); }, //--弹起支付框-- to_pay(){ //--物流支付时要有地址-- if (this.data.exp_type == 0 && this.data.user_addr == null) { return getApp().my_warnning("请选择收货地址", 0, this); } this.setData({show_pay_type:1}); }, //选择支付方式 set_pay_type:function(e){ var type=e.currentTarget.dataset.type; this.to_pay_type(type); }, //--立即支付-- to_pay_type: function(ind) { var th=this; //--物流支付时要有地址-- if (th.data.exp_type == 0 && th.data.user_addr==null){ return getApp().my_warnning("请选择收货地址",0,th); } //---支付参数-- var dd = { order_sn: th.data.order.order_sn, order_id: th.data.order.order_id, store_id: oo.stoid, exp_type:th.data.exp_type, user_id:t.globalData.user_id, listno:th.data.order.pt_listno, prom_id:th.data.order.pt_prom_id, tail_pay_type:ind,//0微信支付 1余额支付 }; if(th.data.exp_type==0){ var index=th.data.index; dd.shipping_code=th.data.wu_arr[index].code; dd.shipping_name=th.data.wu_arr[index].name; dd.shipping_price=parseFloat(th.data.exp_price); dd.addressid=th.data.user_addr.address_id; } var arr=[]; arr.push(dd); console.log(JSON.stringify(arr)); wx.request({ url: oo.url + '/api/weshop/order/pay/payTuanWk', data: JSON.stringify(arr), method: 'POST', header: { 'content-type': 'application/json' },// 设置请求的 header success: function (t) { //---用微信支付--- if(dd.tail_pay_type==0){ var n=t.data.data; th.weixinPay(n, function () { var allmoney=th.data.allpice; th.jumpPaymentPage(th.data.order.order_sn,allmoney); },function () { getApp().my_warnning("支付失败",0,th); }) }else { if(t.data.code==0){ //---用余额支付--- getApp().my_warnning("支付成功",1,th); setTimeout(function () { th.setData({ isclose: 0 }); wx.redirectTo({ url: "/pages/user/order_list/order_list" }) }, 1000) }else{ getApp().my_warnning(t.data.msg,1,th); } } } }); }, //----计算物流的钱---- calculate_wuliu() { var to=getApp(),th=this; to.getConfig2(function(ee) { to.getwuliuprice(function(rs) { var o_shipping_price = 0, goods_weight = -1, goods_piece = -1, good=th.data.goods; //-----------当地址不为空,且是物流时,计算物流费用---------- if (th.data.user_addr != null && th.data.exp_type == 0 && good.is_free_shipping == 0) { 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'] * th.data.order.order_goods['goods_num']; break; case 3: if (goods_piece < 0) goods_piece = 0; //累积商品数量 goods_piece += th.data.order.order_goods['goods_num']; break; } var code = th.data.wu_arr[th.data.index].code; var freight_free = ee.freight_free; //全场满多少包邮 //--全部金额-- var allpice=th.data.order.order_amount+th.data.order.user_money+th.data.order.pt_tail_money; var shipping_price = th.calculatewuliu(code, o_shipping_price, goods_weight, goods_piece, th.data.user_addr, freight_free, allpice, rs); var exp_price = parseFloat(shipping_price).toFixed(2); allpice=parseFloat(exp_price)+parseFloat(allpice); allpice=allpice.toFixed(2); exp_price = parseFloat(exp_price); th.setData({ exp_price: exp_price,allpice:allpice }) }else { var allpice=th.data.order.order_amount+th.data.order.user_money+th.data.order.tail_money; allpice=allpice.toFixed(2); th.setData({ exp_price: 0,allpice:allpice }) } }); }); }, //----------------计算物流--------------- 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 (goods_weight>0) { 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) { 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; }, //---------------检查是否有收货地址------------------- 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); }, //--进入收货地址的编辑页面-- enterAddressPage: function() { getApp().globalData.is_cart_old=1; this.data.enterAddressPage =1, wx.navigateTo({ url: "/pages/user/address_list/address_list?is_back=1" }); }, //------------循环获取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 }); }, //------支付成功页面-------- jumpPaymentPage: function(order_sn,order_amount) { wx.setStorageSync("order:order_list:update", !0), wx.redirectTo({ url: "/pages/payment/pay_success/pay_success?order_sn=" + order_sn + "&type=1", }); }, //------调起支付框-------- weixinPay: function(n, success,fail) { if(!n) return false; var th=this; wx.requestPayment({ timeStamp: String(n.timeStamp), nonceStr: n.nonceStr, package: n.packageValue, signType: n.signType, paySign: n.paySign, success: function(n) { console.log(n), getApp().showSuccess("支付成功!"); "function" == typeof success && success(); }, fail: function(n) { console.log(n), "requestPayment:fail" == n.errMsg ? getApp().my_warnning("支付失败",0,th) : "requestPayment:fail cancel" == n.errMsg ? getApp().my_warnning("您已取消支付",0,th) : getApp().my_warnning("支付失败:" + n.errMsg.substr("requestPayment:fail ".length),0,th), "function" == typeof fail && fail(); } }); } })