diff --git a/packageE/pages/cart/cart2/cart2.js b/packageE/pages/cart/cart2/cart2.js index c709394..165a204 100644 --- a/packageE/pages/cart/cart2/cart2.js +++ b/packageE/pages/cart/cart2/cart2.js @@ -1,5 +1,5 @@ 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(); + s = require("../../../../utils/util.js"), rq = require("../../../../utils/request.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"); @@ -138,7 +138,7 @@ Page({ bn_use_commission: 0, //是不是使用佣金 cart_use_commission: 0, cart_commission: 0, - + udata:null,//用户预存值,数据 //订单所有搭配购的 all_collocation_list: [], appoint_pick_keyid:'' @@ -313,9 +313,146 @@ Page({ //值在这里换 getApp().globalData.plus_buy_back = 0; }, + //获取预存款余额 + async getAdvancesum(){ + /*-----获取线下会员的预存款和优惠券的数量-----*/ + let url= "/api/weshop/users/getinfo/" + os.stoid + "/" + getApp().globalData.userInfo.user_id + await getApp().request.promiseGet(url, { + data: { + isShowLoading: 0, + }, + }).then(su => { + if (su.data.code == 0 && su.data.data) { + var data = su.data.data; + if (!data) data = {}; + data.cashcount = parseInt(data.cashcount); + this.setData({ + udata: data, + }); + } + }) + }, + //购物车预存开启关闭 + prestore(e){ + let ind=e.currentTarget.dataset.ind; + let item = e.currentTarget.dataset.item + let txt = 'cartlist[' + ind + '].yck_off'; + let txt1 = 'old_cartlist[' + ind + '].yck_off'; + if(item.yck_off==2){ + this.setData({ [txt]: 1,[txt1]:1}) + }else if(item.yck_off==1){ + this.setData({ [txt]: 2,[txt1]:2}) + } + this.calculatePrice()//计算金额 + }, + //直接购买预存开启关闭 + prestore2(){ + let txt = 'bn_goods.yck_off'; + if(this.data.bn_goods.yck_off==2){ + this.setData({ [txt]: 1}) + }else if(this.data.bn_goods.yck_off==1){ + this.setData({ [txt]: 2}) + } + this.calculatePrice2()//计算金额 + }, + //计算商品预存款前置方法------------------------------------ + async beforAdvancesum(cartList){ + // let cartList= this.data.cartlist + // let cartList= arr + // let length = cartList.length + wx.showLoading({ + title: '加载中', + mask:true + }) + // for (let i = 0; i < length; i++) { + let item = cartList; + let goods = item.goods + let keyid=item.sto.keyid + let listform = [] + goods.map(ite=>{ + let obj={ + wareno: ite.goods_sn, + price: ite.goods_price, + qty: ite.goods_num + } + listform.push(obj) + }) + let arr = await this.getGoodsAdvancesum(keyid,listform,cartList) + // } + return arr + // wx.hideLoading() + }, + //计算商品预存款请求方法------------------------------------ + async getGoodsAdvancesum(storageid,listform,cartList){ + let res = await getApp().request.promisePost(`/api/weshop/delphiapi/saveErpApi`,{ + data:{ + accdb:getApp().globalData.config.erpid, + ApiName:'api.pos.shop.advancesum.seek', + usercode: "admin", + vipid: this.data.userinfo.erpvipid, + oddsum: "0", + advancesum: cartList.order_amount, + storageid: storageid, + listform + }, + is_json:1 + }) + console.log('计算商品的预存款'); + console.log(res); + let yck=0 + let yckid="" + let yckIdArr=[] + let pre_json=null + if (res.data.code==0 && res.data.data && res.data.data.length>0) { + let resData=res.data.data + resData.map(ite=>{ + yck+=ite.advancesum + yckIdArr.push(ite.advanceitemid) + }) + pre_json=resData + } + yckid=yckIdArr.join() + let obj={} + if(yck*1>0){ + obj.yck_off=1 + }else{ + obj.yck_off=0 + } + obj.yck=yck + obj.yckid=yckid + obj.pre_json=pre_json + return obj + }, - + //支付成功后预存处理请求 + async setAdvancesum(item,number){ + let pre_json = item.pre_json ? JSON.parse(item.pre_json) : [] + if(!pre_json.length){return} + let listform=[] + pre_json.map(ite=>{ + let ob={ + advanceitemid: ite.advanceitemid, + insum: "", + outsum: ite.advancesum, + remark: "" + } + listform.push(ob) + }) + let obj={ + accdb:getApp().globalData.config.erpid, + ApiName:'api.pos.shop.vipinfolist.save', + vipid: this.data.userinfo.erpvipid, + storageid: item.keyid, + operator: "admin", + number, + listform, + } + let res = await getApp().request.promisePost(`/api/weshop/delphiapi/saveErpApi`,{ + data:obj, + is_json:1 + }) + }, //-------------------获取物流--------------- get_wuliu(func) { @@ -371,9 +508,10 @@ Page({ }, //----------------展示页面,是再获取用户信息之后-------------- - show_page: function () { + async show_page() { var th = this, ta = this.data.param; - + //获取用户预存款 + await th.getAdvancesum() //会员的信息,要获取最新 var user = getApp().globalData.userInfo; getApp().request.get("/api/weshop/users/get/" + oo.stoid + "/" + user.user_id, { @@ -962,6 +1100,8 @@ Page({ } } + + //深拷贝 th.data.old_cartlist = JSON.parse(JSON.stringify(arr)); th.setData({ @@ -979,10 +1119,7 @@ Page({ } th.calculatePrice(); th.get_cart_quan(); - }) - - }, 500) - + })}, 500) } }); }, @@ -1755,6 +1892,9 @@ Page({ var all_zh_cutprice = 0; //所有的组合优惠减 var all_ladder_cutprice = 0; //所有的阶梯促销优惠减 var all_order_prom = 0; //所有的订单优惠 + var all_prestore=0; //所有预存优化金额 + var all_pre_json=[]; //所有预存优化json + var all_yck_arr=[]; //所有预存真实抵扣数组 var umoney = th.data.userinfo.user_money - th.data.txmon - (th.data.userinfo.frozen_money ? th.data.userinfo.frozen_money : 0); var out_of_weight = 0; //超出多少重量 @@ -1780,6 +1920,7 @@ Page({ await th.get_cart_quan(c_arr); + //-- 经纬度不循环调用接口 -- var lon = 0; var lat = 0; //---循环购物车--- @@ -2240,8 +2381,69 @@ Page({ }) if (!is_next) return false } + + //预存金额使用参与计算 + if(th.data.udata && th.data.udata.Balance>0 && cart_item.order_amount*1>0){ + let cart_yc = await th.beforAdvancesum(cart_item) + if(!cart_item.yck_off){ + cart_item.yck_off=cart_yc.yck_off + } + cart_item.yck=cart_yc.yck + cart_item.yckid=cart_yc.yckid + cart_item.pre_json=cart_yc.pre_json + let yct1 = 'cartlist[' + i + '].yck_off'; + let yct11 = 'old_cartlist[' + i + '].yck_off'; + let yct2 = 'cartlist[' + i + '].yck'; + let yct22 = 'old_cartlist[' + i + '].yck'; + let yct3 = 'cartlist[' + i + '].yckid'; + let yct33 = 'old_cartlist[' + i + '].yckid'; + let yct4 = 'cartlist[' + i + '].pre_json'; + let yct44 = 'old_cartlist[' + i + '].pre_json'; + th.setData({ + [yct1]:cart_item.yck_off, + [yct11]:cart_item.yck_off, + [yct2]:cart_item.yck, + [yct22]:cart_item.yck, + [yct3]:cart_item.yckid, + [yct33]:cart_item.yckid, + [yct4]:cart_item.pre_json, + [yct44]:cart_item.pre_json, + }) - + if(cart_item.yck_off && cart_item.yck_off==2 ){ + let order_amount = (cart_item.order_amount - cart_item.yck).toFixed(2); + let yck=0 + if(order_amount*1>0){ + cart_item.order_amount = order_amount; + all_prestore+=parseFloat(cart_item.yck); + yck=parseFloat(cart_item.yck) + }else{ + all_prestore+=cart_item.order_amount*1 + yck=parseFloat(cart_item.order_amount) + cart_item.order_amount=0 + } + all_yck_arr.push(yck) //真实预存款抵扣金额 + all_pre_json.push(cart_item.pre_json) + all_prestore = parseFloat(all_prestore); //真实预存款抵扣金额总和 + } + }else{ + let yct1 = 'cartlist[' + i + '].yck_off'; + let yct11 = 'old_cartlist[' + i + '].yck_off'; + let yct2 = 'cartlist[' + i + '].yck'; + let yct22 = 'old_cartlist[' + i + '].yck'; + let yct3 = 'cartlist[' + i + '].yckid'; + let yct33 = 'old_cartlist[' + i + '].yckid'; + let yct4 = 'cartlist[' + i + '].pre_json'; + let yct44 = 'old_cartlist[' + i + '].pre_json'; + th.setData({ + [yct2]:0, + [yct22]:0, + [yct3]:'', + [yct33]:'', + [yct4]:'', + [yct44]:'', + }) + } @@ -2322,6 +2524,7 @@ Page({ all_order_prom += parseFloat(cart_item.order_prom_amount); } + all_prestore = parseFloat(all_prestore).toFixed(2); 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); @@ -2344,12 +2547,18 @@ Page({ var atxt7 = "formData.order_prom_amount"; var atxt8 = "formData.zh_cut_price"; var atxt9 = "formData.ladder_cut_price"; + var atxt10 = "formData.prestore"; //预存金额 + var atxt11 = "formData.pre_json"; //预存json + var atxt12 = "formData.all_yck_arr"; //预存真实抵扣列表 th.setData({ [atxt]: all_total_m, [atxt1]: all_order_m, [atxt2]: all_price, [atxt3]: all_user_m, [atxt4]: all_shipping_m, [atxt5]: all_coupon_price_m, [atxt6]: all_cutprice, - [atxt7]: all_order_prom, show_submit: 1, [atxt8]: all_zh_cutprice, [atxt9]: all_ladder_cutprice, submit: 0 + [atxt7]: all_order_prom, show_submit: 1, [atxt8]: all_zh_cutprice, [atxt9]: all_ladder_cutprice, submit: 0, + [atxt10]:all_prestore, + [atxt11]:all_pre_json, + [atxt12]:all_yck_arr, }) th.data.order_prom_list_cart = c_arr; th.set_can_num(); @@ -2410,7 +2619,7 @@ Page({ 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; @@ -2676,6 +2885,107 @@ Page({ if (th.data.bn_goods.whsle_id > 0) { o_condition = 0; } + + + //预存金额使用参与计算 + if(th.data.udata && th.data.udata.Balance>0 && order_m*1>0){ + if(!th.data.bn_goods.keyid){ + //获取门店信息 + await getApp().request.promiseGet("/api/weshop/pickup/list", { data: { + store_id: os.stoid, + ids: th.data.bn_pick + } }).then(res => { + if (ut.ajax_ok(res)) { + console.log(res); + if(res.data.code==0){ + let resData = res.data.data.pageData + if(resData && resData[0]){ + let keyid= resData[0].keyid + let txt='bn_goods.keyid' + th.setData({ + [txt]:keyid + }) + } + } + } + }) + } + if(th.data.bn_goods.keyid){ + let cart_yc = await th.beforAdvancesum({ + order_amount:order_m, + goods:[{ + goods_sn:th.data.bn_goods.goods_sn, + goods_price:th.data.bn_goods.goods_price, + goods_num:th.data.bn_goods.goods_num, + }], + sto:{ + keyid:th.data.bn_goods.keyid + } + }) + + if(!good.yck_off){ + good.yck_off=cart_yc.yck_off + } + good.yck=cart_yc.yck + good.yckid=cart_yc.yckid + good.pre_json=cart_yc.pre_json + let yct1 = 'bn_goods.yck_off'; + let yct2 = 'bn_goods.yck'; + let yct3 = 'bn_goods.yckid'; + let yct4 = 'bn_goods.pre_json'; + th.setData({ + [yct1]:good.yck_off, + [yct2]:good.yck, + [yct3]:good.yckid, + [yct4]:good.pre_json, + }) + + if(good.yck_off && good.yck_off==2 ){ + let order_amount = (order_m - good.yck).toFixed(2); + let yck=0 + if(order_amount*1>0){ + order_m = order_amount; + // all_prestore+=parseFloat(good.yck); + yck=parseFloat(good.yck) + }else{ + // all_prestore+=order_m*1 + yck=parseFloat(order_m) + order_m=0 + } + let atxt10 = "formData.prestore"; //预存金额 + let atxt11 = "formData.pre_json"; //预存json + let atxt12 = "formData.all_yck_arr"; //预存真实抵扣列表 + th.setData({ + [atxt10]:yck, + [atxt11]:[good.pre_json], + [atxt12]:[yck], + }) + // formData.prestore + // all_yck_arr.push(yck) //真实预存款抵扣金额 + // all_pre_json.push(good.pre_json) + // all_prestore = parseFloat(all_prestore); //真实预存款抵扣金额总和 + } + } + }else{ + let yct1 = 'bn_goods.yck_off'; + let yct2 = 'bn_goods.yck'; + let yct3 = 'bn_goods.yckid'; + let yct4 = 'bn_goods.pre_json'; + let atxt10 = "formData.prestore"; //预存金额 + let atxt11 = "formData.pre_json"; //预存json + let atxt12 = "formData.all_yck_arr"; //预存真实抵扣列表 + th.setData({ + [yct2]:0, + [yct3]:'', + [yct4]:'', + [atxt10]:0, + [atxt11]:'', + [atxt12]:[], + }) + } + + + if (o_condition > 0) { th.check_is_order_prom(o_condition, async function () { var order_prom_amount = 0; @@ -2914,6 +3224,7 @@ Page({ } + 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"; @@ -3073,16 +3384,17 @@ Page({ let strarr=[] let cbarr=[] let cbarr_id=[] - - for (let index = 0,length=cartlist.length; index < length; index++) { - let item=cartlist[index].goods - for (let i = 0,leng=item.length; i < leng; i++) { - if (item[i].prom_type==7) { - strarr.push(item[i]) - } - if (item[i].prom_type !=7 && item[i].goods_prom_type==7) { - allarr.push(item[i]) - } + if(cartlist && cartlist.length>0){ + for (let index = 0,length=cartlist.length; index < length; index++) { + let item=cartlist[index].goods + for (let i = 0,leng=item.length; i < leng; i++) { + if (item[i].prom_type==7) { + strarr.push(item[i]) + } + if (item[i].prom_type !=7 && item[i].goods_prom_type==7) { + allarr.push(item[i]) + } + } } } if(strarr.length>0){ @@ -3103,7 +3415,6 @@ Page({ cbarr_id.push(strarr[j].id) } } - if(cbarr.length>0){ let str = cbarr.join() wx.showModal({ @@ -3462,6 +3773,7 @@ Page({ for (var i = 0; i < order_prom_list_cart.length; i++) { var t_item = order_prom_list_cart[i]; var item = { + "keyid":t_item.sto ? t_item.sto.keyid : '', 'user_id': to.globalData.user_id, 'consignee': addr == null ? th.data.userinfo.mobile : addr.consignee, 'province': addr == null ? 0 : addr.province, @@ -3808,8 +4120,27 @@ Page({ } if (pdata.length == 0) return; + //如果有使用预存,要处理 + if (th.data.formData && th.data.formData.prestore*1 > 0) { + let formData = th.data.formData + let pre_json = formData.pre_json + let all_yck_arr=formData.all_yck_arr + pdata.map((item,i)=>{ + item.pre_cut=all_yck_arr[i] ? all_yck_arr[i] : 0 + item.pre_preferential=0 + item.pre_json=pre_json[i] ? JSON.stringify(pre_json[i]) : '' + }) + } + + + if(!pdata.keyid && th.data.bn_goods){ + pdata.map(ite=>{ + ite.keyid=th.data.bn_goods.keyid + }) + // pdata.keyid = th.data.bn_goods.keyid + } var str = JSON.stringify(pdata); - + wx.showLoading({ title: "加载中" }); th.setData({ submit: 1, }) wx.request({ @@ -3821,6 +4152,7 @@ Page({ },// 设置请求的 header success: function (res) { wx.hideLoading(); + if (res.statusCode == 200) { var data = res.data; if (data.code == 0) { @@ -3838,18 +4170,32 @@ Page({ pdata.forEach(function (em, ind) { order_amount += parseFloat(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 () { + + util_pay.pay(data.data, async function () { //app.my_warnning("支付成功",1,th); //setTimeout(function () { - wx.redirectTo({ - url: "/pages/payment/pay_success/pay_success?type=2&order_sn=" + data.data - }) + if (th.data.formData && th.data.formData.prestore*1 > 0) { //有使用预存的处理 + let length=pdata.length + wx.showLoading({ title: "加载中",mask:true }); + for (let yi = 0; yi < length; yi++) { + await th.setAdvancesum(pdata[yi],data.data) + } + wx.hideLoading() + wx.redirectTo({ + url: "/pages/payment/pay_success/pay_success?type=2&order_sn=" + data.data + }) + }else{ + wx.redirectTo({ + url: "/pages/payment/pay_success/pay_success?type=2&order_sn=" + data.data + }) + } //},1000) }, function () { @@ -3876,15 +4222,29 @@ Page({ }; a.post("/api/weshop/order/pay/createOrder", { data: dd, - success: function (t) { - //console.log(t); + success: async 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, - }) + if (th.data.formData && th.data.formData.prestore*1 > 0) { //有使用预存的处理 + let length=pdata.length + wx.showLoading({ title: "加载中",mask:true }); + for (let yi = 0; yi < length; yi++) { + await th.setAdvancesum(pdata[yi],data.data) + } + wx.hideLoading() + th.setData({ isclose: 0 }); + wx.redirectTo({ + url: "/pages/payment/pay_success/pay_success?type=2&order_sn=" + data.data, + }) + }else{ + th.setData({ isclose: 0 }); + wx.redirectTo({ + url: "/pages/payment/pay_success/pay_success?type=2&order_sn=" + data.data, + }) + } + //}, 1000) } }, @@ -4698,7 +5058,7 @@ Page({ if (!arr) arr = []; //如果系统有限制使用优惠券 if (th.data.is_close_quan) return false; - + //------------开始计算使用优惠券相关------------ for (var ind in arr) { var ep = arr[ind]; @@ -4846,7 +5206,7 @@ Page({ }) } } - + //如果是搭配购的立即购买的时候 if (th.data.is_b_now) { if (arr && arr.length > 0) { diff --git a/packageE/pages/cart/cart2/cart2.wxml b/packageE/pages/cart/cart2/cart2.wxml index fb465c5..f926142 100644 --- a/packageE/pages/cart/cart2/cart2.wxml +++ b/packageE/pages/cart/cart2/cart2.wxml @@ -251,7 +251,16 @@ - + + + + + + 使用预存 + + ¥{{filters.toFix(item.yck,2)}} + + @@ -516,6 +525,7 @@ + @@ -523,7 +533,16 @@ 使用余额 :¥{{yuer}} - + + + + + + 使用预存 + + ¥{{filters.toFix(bn_goods.yck,2)}} + + @@ -560,6 +579,11 @@ 订单优惠 - ¥ {{filters.toFix(formData.order_prom_amount,2)}}元 + + + 使用预存 + - ¥ {{filters.toFix(formData.prestore,2)}}元 + 使用余额 - ¥ {{formData.user_money}}元 diff --git a/pages/user/order_detail/order_detail.js b/pages/user/order_detail/order_detail.js index 57e3877..4d8d804 100644 --- a/pages/user/order_detail/order_detail.js +++ b/pages/user/order_detail/order_detail.js @@ -127,6 +127,7 @@ Page({ }).then(res=>{ if(res.data.code == 0 && res.data.data){ r.use_commission=res.data.data.use_commission; + r.pre_cut=res.data.data.pre_cut; //预存款 } }) diff --git a/pages/user/order_detail/order_detail.wxml b/pages/user/order_detail/order_detail.wxml index bbe3271..1e93d2a 100644 --- a/pages/user/order_detail/order_detail.wxml +++ b/pages/user/order_detail/order_detail.wxml @@ -36,7 +36,7 @@ ×{{item.goods_num}} - + 申请退款 优惠券 ¥ {{order.coupon_price}}元 - + + 使用预存 + ¥ {{order.pre_cut}}元 + 积分 {{order.integral}}积分 diff --git a/pages/user/order_list/order_list.js b/pages/user/order_list/order_list.js index 53a10cd..316fd04 100644 --- a/pages/user/order_list/order_list.js +++ b/pages/user/order_list/order_list.js @@ -351,6 +351,7 @@ Page({ }).then(res => { if (res.data.code == 0 && res.data.data) { data[ind].use_commission = res.data.data.use_commission; + data[ind].pre_cut = res.data.data.pre_cut; //是否使用预存,如果是使用预存不能单品退,只能整单退 } }) diff --git a/pages/user/order_list/order_list.wxml b/pages/user/order_list/order_list.wxml index 6d42e4b..d18f91e 100644 --- a/pages/user/order_list/order_list.wxml +++ b/pages/user/order_list/order_list.wxml @@ -162,7 +162,7 @@ - + 申请退款 退款中 重新退款