// pages/cart/cart_wk/cart_wk.js var t = getApp(), oo = t.globalData.setting, os=oo; var ut=require("../../../utils/util.js"); 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, is_express: 0, //申请提现的金额 txmon: 0, yuer: 0, //判断页面是返回回来的还是 首次进入的 isclose: 1, //配送方式 0=用户自选 1=自提 2=物流 distr_type: 0, //实际配送方式 0物流 1自提 exp_type: 1, //------物流费用------ exp_price: 0, enterAddressPage: 0, //进入地址页面 is_no_by: {}, allpice: 0, show_pay_type: 0, teamgroup: null, submit:1, //默认按钮是灰色 show_submit:0, //不线上 dis_config: null, bn_use_commission: 0 //是不是使用佣金 }, /** * 生命周期函数--监听页面加载 */ 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; var is_default_logistics = json_d.is_default_logistics; var is_same_city = json_d.is_same_city; th.setData({ is_default_logistics: is_default_logistics,is_same_city:is_same_city }); th.get_wuliu(th.get_info(th.show_page)); }, 1) //判断是不是佣金抵扣 getApp().is_distribut(this); }, /** * 生命周期函数--监听页面显示 */ onShow: function () { getApp().check_can_share(); 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(); } if (th.data.exp_type == 2 && th.data.goods) { th.calculate_same_city(); } }) }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { getApp().globalData.no_clear=1 }, //---------------获取物流--------------- get_wuliu(func) { var th = this, to = getApp(); to.getwuliu(function (e) { //如果第一个不是开启默认,说明要让用户自己选 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 = 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, teamlist=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]; }); await getApp().request.promiseGet("/api/weshop/teamlist/get/" + os.stoid + "/" + order.pt_prom_id, { data: { } }).then(res => { if(res.data.code==0) teamlist=res.data.data; }); var jsarr = JSON.parse(teamgroup.jt_json); var count = teamgroup.jt_ct_num; if(teamgroup.is_xuni_ct) count=teamlist.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) return false; if(goods.is_minishop==1 && getApp().is_sp_hao()){ if(goods.distr_type==1 || pickup.distr_type==1) { wx.showToast({ title: "视频号仅支持物流", icon: 'none', duration: 2000 }) setTimeout(function(){ wx.navigateBack({delta: 1}) },1000) return false } goods.distr_type=2; th.setData({show_same_city:0}) } //--判断物流-- if (goods.distr_type) distr_type = goods.distr_type; else distr_type = pickup.distr_type; //-- 如果商品有同城配送的参数的时候,一件代发商品不能显示同城配送按钮 -- if(goods.is_same_city && th.data.is_same_city && goods.whsle_id<=0){ getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+order.pickup_id, {}).then(res=>{ if(res.data.code==0){ var pk=res.data.data; if(pk && pk.is_same_city){ th.setData({show_same_city:1}) } } }) } 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; //-- 计算获得佣金的金额 -- if (getApp().globalData.userInfo.is_distribut && th.data.dis_config && th.data.dis_config.is_yongjin_dk) { var fir_num = 0; var sec_num = 0; var thi_num = 0; if (th.data.dis_config.pattern == 1) { fir_num = (inte_data.fir_rate || 0) * order_goods.goods_num; sec_num = (inte_data.sec_rate || 0) * order_goods.goods_num; thi_num = (inte_data.thi_rate || 0) * order_goods.goods_num; } else { fir_num = parseFloat((teamlist.commission || 0) * order_goods.goods_num * (th.data.dis_config.firstRate || 0) / 100).toFixed(2); sec_num = parseFloat((teamlist.commission || 0) * order_goods.goods_num * (th.data.dis_config.secondRate || 0) / 100).toFixed(2); thi_num = parseFloat((teamlist.commission || 0) * order_goods.goods_num * (th.data.dis_config.thirdRate || 0) / 100).toFixed(2); } var c_num = getApp().get_commission(fir_num, sec_num, thi_num, th); goods.use_commission = c_num; } this.setData({ order: order, distr_type: distr_type, pickup: pickup, exp_type: exp_type, goods: goods, teamgroup: teamgroup, teamlist: teamlist, }); //--计算价格-- th.calculatePrice2(); }, calculatePrice2:function(){ wx.showLoading(); var th=this; th.setData({submit:1}) //--计算物流-- if (th.data.exp_type == 0) { th.calculate_wuliu(); } else { var allpice = th.data.order.order_amount + th.data.order.user_money + th.data.order.tail_money; if(th.data.bn_use_commission){ allpice-=th.data.goods.use_commission; } allpice = allpice.toFixed(2); th.setData({ exp_price: 0, allpice: allpice,submit:0,show_submit:1 }) wx.hideLoading(); } }, //--图片失败,默认图片-- 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 if(type==1){ 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,show_submit:1,submit:0 }); }else{ th.calculate_same_city(); } }, //关闭支付 close_show_pay: function () { this.setData({ show_pay_type: 0 }); }, //--弹起支付框-- to_pay() { //如果有再计算价格的过程中,不能提交订单 if(this.data.submit){ return false} //--物流支付时要有地址-- 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; } //如果是同城配送的时候 if(th.data.exp_type==2){ dd.shipping_price = parseFloat(th.data.exp_price); } if(getApp().globalData.scene){ dd.scene=getApp().globalData.scene; } if(th.data.bn_use_commission){ dd.use_commission=th.data.goods.use_commission; } 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); wx.showToast({ title: '支付成功', icon: 'success', duration: 2000 }); 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); } } } }); }, //检查区域是不是包邮 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.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; }, //----计算物流的钱---- async calculate_wuliu() { //让按钮变灰色 this.setData({submit:1}); var to = getApp(), th = this; //to.getwuliuprice(async function (rs) { var o_shipping_price = 0, goods_weight = -1, goods_piece = -1, good = th.data.goods; var out_of_weight = null; //超出多少重量 good.buynum=th.data.order.order_goods['goods_num']; var gd_arr_list = []; gd_arr_list.push(good); //--全部金额-- var allpice = th.data.order.order_amount + th.data.order.user_money + th.data.order.pt_tail_money; if(th.data.bn_use_commission){ allpice-=th.data.goods.use_commission; } //-----------当地址不为空,且是物流时,计算物流费用---------- if (th.data.user_addr != null && th.data.exp_type == 0 && good.is_free_shipping == 0) { var user_addr=th.data.user_addr; var req_d = { province: user_addr.province, city: user_addr.city, district: user_addr.district, wuliu: parseFloat(allpice).toFixed(2), store_id: os.stoid } var back_data = null; await getApp().request.promisePost("/api/weshop/order/areaFreight", { is_json: 1, data: req_d }).then(rs => { if (rs.data.code == 0) back_data = rs.data.data; }); var cut_good_weight = 0; for (let i in gd_arr_list) { let item = gd_arr_list[i]; if (back_data && back_data['is_by_all'] && (!back_data.no_free_goods || back_data.no_free_goods.indexOf(item.goods_id) == -1)) { if (item['exp_sum_type'] == 2 && back_data.weight_free > 0) { if (goods_weight < 0) goods_weight = 0; goods_weight += item['weight'] * item['buynum']; cut_good_weight += item['weight'] * item['buynum']; } if (back_data.weight_free > 0) { out_of_weight = (back_data.weight_free * 1000) - cut_good_weight; } continue; } switch (item['exp_sum_type']) { case 1: //统一运费 o_shipping_price += item['uniform_exp_sum']; break; case 2: if (goods_weight < 0) goods_weight = 0; //累积商品重量 每种商品的重量 * 数量 goods_weight += item['weight'] * item['buynum']; if (back_data && back_data.is_by_all && !back_data.no_free_goods) { cut_good_weight += item['weight'] * item['buynum']; if (back_data.weight_free > 0) { out_of_weight = (back_data.weight_free * 1000) - cut_good_weight; } } break; case 3: if (goods_piece < 0) goods_piece = 0; //累积商品数量 goods_piece += item['buynum']; break; } } //如果是正值的时候 if (out_of_weight >= 0) out_of_weight = -cut_good_weight; else out_of_weight = -back_data.weight_free * 1000; var code = th.data.wu_arr[th.data.index].code; //--------------开始计算物流------------------ var shipping_price =0; // ut.calculatewuliu(code, o_shipping_price, goods_weight, out_of_weight, // goods_piece, th.data.user_addr, back_data, rs); var w_data={ store_id:os.stoid, code:code, o_shipping_price:o_shipping_price, goods_weight:goods_weight, out_of_weight:out_of_weight,goods_piece:goods_piece, user_addr_province:th.data.user_addr.province, user_addr_city:th.data.user_addr.city, user_addr_district:th.data.user_addr.district, is_by_all:back_data && back_data.is_by_all?1:0, no_free_goods:back_data && back_data.no_free_goods && back_data.no_free_goods.length>0?1:0, } var is_ok=0; await getApp().request.promisePost('/api/weshop/order/getOrderWuLiPrice', {data:w_data,is_json:1}).then(res=>{ if(res.data.code==0){ shipping_price=res.data.data; is_ok=1; }else{ getApp().confirmBox("计算物流错误:"+res.data.msg); } }) if(!is_ok){ th.setData({ show_submit:1 }); wx.hideLoading(); return false; } var exp_price = parseFloat(shipping_price).toFixed(2); allpice = parseFloat(exp_price) + parseFloat(allpice); if( allpice