// pages/confirmOrder/confirmOrder.js const getReq = require('./../../config.js').getReq import recordSource from '../../utils/recordSource'; import Bundle from '../../utils/Bundle' let app = getApp() Page({ /** * 页面的初始数据 */ data: { goods_id: '', ifcart: '', num: '', datas: {}, goods_list: [], firstLoad: true, defaultAddress: null, cart_id: '', n_goods_list: [], freight: 0, freight_hash: '', fromSource: '', available_pred: 0, room_bonus: 0, full_discount: 0, opgoods_discount: 0 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { let goods_id = options.goods_id || '' let iscart = options.iscart || '' let num = options.num || '' let cart_id = options.cart_id || '' this.setData({ goods_id, ifcart: iscart, num, cart_id }) this.getDatas(goods_id, iscart, num, cart_id) }, getDatas(goods_id, ifcart, num, cart_id) { wx.showLoading({ title: '加载中', }) var self = this let goods_datas = ''; if (ifcart == 0) { goods_datas = goods_id + '|' + num; } else { goods_datas = cart_id; } let fromSource = recordSource(app, `act=member_buy&op=step_first&curpage=1&cart_id=${goods_datas}&ifcart=${ifcart}&client_type=mini`) let params = { act: 'member_buy', op: 'step_first', curpage: 1, cart_id: goods_datas, ifcart, from: fromSource } this.setData({ fromSource: app.globalData.fromSource }) getReq(params, function (res) { wx.hideLoading() if (res.code == 200) { let datas = res.datas let { goods_list, summary, bundling, payinfo } = res.datas let { freight_hash, goods_amount, freight, available_pred = 0, user_bonus = 0, room_bonus = 0, full_discount = 0, opgoods_discount = 0 } = payinfo let totalPrice = parseFloat((goods_amount + freight - user_bonus - room_bonus - full_discount - opgoods_discount).toFixed(2)) let n_goods_list = self.getNewGoodsList(goods_list, summary, bundling) if (datas.address) { let { true_name, mob_phone, area_info, address, address_id, area_id, city_id } = datas.address; app.checkDefaultAddress({ true_name, mob_phone, area_info, address, address_id, area_id, city_id }) } self.setData({ datas, freight_hash, n_goods_list, freight, totalPrice, firstLoad: false, defaultAddress: datas.address, available_pred, room_bonus, full_discount, opgoods_discount }) } else { wx.showToast({ icon: 'none', title: res.message, duration: 2000 }) app.globalData.fcodeErr = res.message wx.navigateBack() } }) }, toPay() { if (!this.data.defaultAddress) { wx.showToast({ icon: 'none', title: '请填写收货地址', duration: 1500 }) return } let goods_id = this.data.goods_id let goods_num = this.data.num let iscart = this.data.ifcart let cart_id = this.data.cart_id let vat_hash = this.data.datas['payinfo'].vat_hash let offpay_hash = this.data.datas['payinfo'].offpay_hash let offpay_hash_batch = this.data.datas['payinfo'].offpay_hash_batch let address_id = this.data.defaultAddress.address_id ? this.data.defaultAddress.address_id : this.data.datas['address'].address_id let ifcart = cart_id ? 1 : 0 let cartids = cart_id ? cart_id : (goods_id + '|' + goods_num) let params = { act: 'member_buy', op: 'step_second', payment: 'minipay', usebonus: 1, ifcart, cart_id: cartids, address_id, invoice_id: 0, vat_hash, offpay_hash, offpay_hash_batch } let options = { room_id: 0 } if (this.data.datas['rooms']&&this.data.datas['rooms'].length) { options = { room_id: this.data.datas['rooms'][0]['room_id'] } } params = Object.assign({}, options, params); getReq(params, function (res) { wx.hideLoading() if (res.code == 200) { let param = res.datas.param.data let pay_sn = res.datas.pay_sn wx.requestPayment({ timeStamp: param.timeStamp, //时间戳,自1970年以来的秒数 nonceStr: param.nonceStr, //随机串 package: param.package, signType: param.signType, //微信签名方式: paySign: param.paySign, //微信签名 success: function (res) { wx.reLaunch({ url: "/pages/index/index" }) }, fail: function (res) { wx.redirectTo({ url: `/pages/orderPaySn/orderPaySn?pay_sn=${pay_sn}` }) } }); } else { wx.showToast({ icon: 'none', title: res.message, duration: 2000 }) app.globalData.fcodeErr = res.message setTimeout(() => { wx.navigateBack() }, 2000); } }) }, getNewGoodsList(goods_list, summary, bundling) { let summaryMap = new Map() let bundlingMap = new Map() summary.map(item => { summaryMap.set(item['goods_id'], item) }) if (bundling.length) { bundling.map(item => { bundlingMap.set(item['bl_id'], item) }) } let n_goods_list = new Bundle(goods_list, summaryMap, bundlingMap).createOrders() return n_goods_list }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { if (!this.data.firstLoad) { app.setFromSource(this.data.fromSource) let self = this let defaultAddress = app.globalData.defaultAddress let { city_id, area_id } = defaultAddress let { freight_hash } = self.data let params = { act: 'member_buy', op: 'change_addrex', city_id, area_id, freight_hash } getReq(params, function(res) { if (res.code == 200) { let { freight } = res.datas let prev_freight = self.data.freight let totalPrice = parseFloat((self.data.totalPrice - prev_freight + freight).toFixed(2)) self.setData({ totalPrice, freight, defaultAddress }) } }) } }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { } })