// myComponents/pay/pay.js const pay = require('../../utils/pay') const api = require('../../api/index') const Decimal = require('../../utils/decimal'); Component({ /** * 组件的属性列表 */ properties: { }, /** * 组件的初始数据 */ data: { show:false, data:{}, voucherShow:'暂无可用优惠券', voucherTotal:0 }, /** * 组件的方法列表 */ methods: { //打开弹窗 show(data){ if(data.discount){ data.finalPrice =Decimal.mul([data.price,data.discount]) data.discountPrice =Decimal.sub([data.price,data.finalPrice]) }else{ data.finalPrice = Number(data.price) data.discountPrice = Decimal.sub([data.price,data.finalPrice]) } this.setData( { data:data, show:true } ) this.setData( { ['data.discountText']:this.decimalToDiscount(this.data.data.discount) } ) if(this.data.data.type == -1 || this.data.data.type == 0 || this.data.data.type){ this.queryPersonVoucher() } }, decimalToDiscount(decimal){ // 确保输入是有效的数字,并且范围在0到1之间(包括0但不包括1) if (typeof decimal !== 'number' || isNaN(decimal) || decimal <= 0 || decimal >= 1) { return '' } // 将小数乘以10,并转换为字符串 var discount = Decimal.mul([decimal,10]); // 添加"折"字作为单位 return discount + '折'; }, //获取优惠券总数 queryPersonVoucher(){ var params = { useScopes:[this.data.data.type], ifExpiration:false, } api.queryPersonVoucher(params).then(res=>{ if(res.code == 200){ var data = res.data.data.filter(item=>{ return item.threshold <= Number(this.data.data.price) }) if(data.length>0){ this.setData( { voucherShow:`${data.length}张待使用券`, voucherTotal:data.length } ) }else{ this.setData( { voucherShow:'暂无可用优惠券' } ) } } }) }, //关闭弹窗 onClose(){ this.setData( { show:false } ) wx.showToast({ title: '取消支付', icon: 'none' }) }, //查看优惠券 checkCoupons(){ var that = this wx.navigateTo({ url: '/pages/voucher/voucher', events: { // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 acceptDataFromVoucher: function(data) { console.log(data) var discountPrice = Number(data.discountPrice) // var totalPrice = Number(that.data.data.price) // var discount = Number(that.data.data.discount) // var finalPrice = 0 // finalPrice =( Decimal.sub([totalPrice,discountPrice])<=0)?0:Decimal.sub([totalPrice,discountPrice]) // if(discount){ // finalPrice =Decimal.mul([finalPrice, discount]) // } var voucherShow = '' if(discountPrice >0){ voucherShow = `- ¥${discountPrice}` }else if(that.data.voucherTotal > 0){ voucherShow = `${that.data.voucherTotal}张待使用券` }else{ voucherShow='暂无可用优惠券' } that.setData( { ["data.personVoucherIds"]:data.chooseVoucher, // ["data.finalPrice"]:finalPrice, // ["data.discountPrice"]:Decimal.sub([totalPrice,finalPrice]), voucherShow:voucherShow } ) that.getOrderDetail() }, }, success: function(res) { // 通过eventChannel向被打开页面传送数据 res.eventChannel.emit('acceptDataFromPay', { useScopes:that.data.data.type,chooseVoucher:that.data.data.personVoucherIds||[],totalPrice:that.data.data.price }) } }) }, //获取订单详情 getOrderDetail(){ var params = { goodType:this.data.data.type, goods:this.data.data.goods, servicePrice:this.data.data.servicePrice, price:this.data.data.price, discount:this.data.data.discount, personVoucherIds:this.data.data.personVoucherIds, // usedVouchers:this.data.data.servicePrice, finalPrice:this.data.data.finalPrice, activityId:this.data.data.activityId } api.getOrderDetail(params).then(res=>{ if(res.code == 200){ this.setData( { ["data.orderMessage"]:res.data.data.orderMessage, ["data.activities"]:res.data.data.activities, ["data.activityId"]:res.data.data.activities.id, ["data.price"]:res.data.data.orderMessage.price, ["data.discount"]:res.data.data.orderMessage.discount, ["data.discountText"]:this.decimalToDiscount(res.data.data.orderMessage.discount), ["data.finalPrice"]:res.data.data.orderMessage.finalPrice, ["data.discountPrice"]:Decimal.sub([res.data.data.orderMessage.price,res.data.data.orderMessage.finalPrice]), } ) } }) }, //支付 payMoney(){ var params = { goodType:this.data.data.type, goods:this.data.data.goods, servicePrice:this.data.data.servicePrice, price:this.data.data.price, discount:this.data.data.discount, personVoucherIds:this.data.data.personVoucherIds, // usedVouchers:this.data.data.servicePrice, finalPrice:this.data.data.finalPrice, activityId:this.data.data.activityId } wx.showLoading({ title: '加载中', }) pay.payMoney(params).then(res=>{ if(res.errMsg == 'requestPayment:ok'){ wx.showToast({ title: '支付成功', }) this.triggerEvent('success',this.data.data) this.setData( { show:false } ) } }).catch(error=>{ }) }, } });