EP-WachatApp/eaterplanet_ecommerce/pages/user/charge.js

270 lines
6.0 KiB
JavaScript

var app = getApp();
var util = require('../../utils/util.js');
Page({
mixins: [require('../../mixin/globalMixin.js')],
data: {
canPay: false,
money: '',
onFocus: false,
accountMoney: 0,
chargetype_list: [],
activeTypeId: '',
recharge_get_money: '',
rewardIdx: -1,
chargeArr: []
},
rech_id: 0,
revenue: [],
reward: [],
handlerGobackClick(delta) {
const pages = getCurrentPages();
if (pages.length >= 2) {
wx.navigateBack({
delta: delta
});
} else {
wx.switchTab({
url: '/eaterplanet_ecommerce/pages/index/index'
});
}
},
handlerGohomeClick(url) {
wx.switchTab({
url: '/eaterplanet_ecommerce/pages/index/index'
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.getAccountMoney();
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
if (!util.check_login()) {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/user/me',
})
}
},
getAccountMoney() {
let token = wx.getStorageSync('token');
let that = this;
app.util.request({
'url': 'entry/wxapp/user',
'data': {
controller: 'user.get_account_money',
token: token
},
dataType: 'json',
success: function (res) {
if (res.data.code == 0) {
let rdata = res.data;
let member_charge_publish = rdata.member_charge_publish;
let chargetype_list = rdata.chargetype_list;
let recharge_get_money = rdata.recharge_get_money || '';
let chargeArr = chargetype_list.sort(function (a, b) {
return a.money - b.money;
});
let revenue = [];
let reward = [];
chargeArr.forEach(item => {
revenue.push(item.money * 1);
reward.push(item.send_money * 1);
})
that.revenue = revenue;
that.reward = reward;
let excharge_nav_name = res.data.excharge_nav_name || '详情';
wx.setNavigationBarTitle({
title: excharge_nav_name,
})
that.setData({
accountMoney: rdata.data,
chargetype_list,
member_charge_publish,
recharge_get_money,
chargeArr
})
} else if (res.data.code == 1) {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/user/me',
})
}
}
})
},
getMoney: function (e) {
var val = e.detail.value;
val ? this.setData({
canPay: true
}) : this.setData({
canPay: false
});
let money = val;
let rewardIdx = -1;
if(this.data.recharge_get_money==1) {
rewardIdx = this.canAwardMoney(money);
console.log('rewardIdx', rewardIdx);
}
this.setData({
money,
rewardIdx
});
// return money;
},
/**
* 获得送金额提示
*/
canAwardMoney: function (money) {
let revenue = this.revenue;
let reward = this.reward;
//小于最小值
if (money < Math.min.apply(null, revenue)) {
return -1;
}
if (money >= Math.max.apply(null, revenue)) {
return revenue.length - 1;
}
let idx = 0, i = 0, j = revenue.length;
for (i; i < j; i++) {
if (revenue[i] > money) {
idx = i;
break;
}
}
return idx-1;
},
/**
* 余额充值
*/
wxcharge: function (sendMoney = 0) {
let oriMoney = 0;
if (sendMoney > 0) {
oriMoney = sendMoney;
} else {
oriMoney = this.data.money;
var reg = /^\d+(\.\d+)?$/;
if (!reg.test(oriMoney)) {
wx.showToast({
title: '请输入正确的金额',
icon: 'none'
})
return false;
}
}
let money = parseFloat(oriMoney).toFixed(2) || 0;
let token = wx.getStorageSync('token');
let that = this;
that.data.canPay && app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'car.wxcharge',
token: token,
money: money,
rech_id: that.rech_id
},
dataType: 'json',
success: function (res) {
wx.requestPayment({
"appId": res.data.appId,
"timeStamp": res.data.timeStamp,
"nonceStr": res.data.nonceStr,
"package": res.data.package,
"signType": res.data.signType,
"paySign": res.data.paySign,
'success': function (wxres) {
that.setData({
canPay: false,
activeTypeId: 0
})
that.getAccountMoney();
that.rech_id = 0;
wx.showToast({
icon: 'none',
title: '充值成功',
})
setTimeout(() => {
wx.reLaunch({
url: '/eaterplanet_ecommerce/pages/user/me',
})
}, 2000)
},
'fail': function (error) {
if (that.rech_id > 0) that.setData({
canPay: false,
activeTypeId: 0
}), that.rech_id = 0;
wx.showToast({
icon: 'none',
title: '充值失败,请重试!',
})
}
})
}
})
},
/**
* 获得焦点
*/
bindIptFocus: function () {
this.rech_id = 0;
this.setData({
onFocus: true,
activeTypeId: 0,
money: '',
canPay: false
})
},
/**
* 失去焦点
*/
bindIptBlur: function () {
this.setData({
onFocus: false
})
},
goCharge: function (e) {
let that = this;
let chargetype_list = this.data.chargetype_list;
let idx = e.currentTarget.dataset.idx;
let rech_id = chargetype_list[idx].id;
let money = chargetype_list[idx].money;
this.rech_id = rech_id;
this.setData({
canPay: true
}, () => {
that.wxcharge(money);
})
},
selChargeType: function (e) {
let that = this;
let chargetype_list = this.data.chargetype_list;
let idx = e.currentTarget.dataset.idx;
let activeTypeId = chargetype_list[idx].id || 0;
let money = chargetype_list[idx].money;
this.rech_id = activeTypeId;
that.setData({
activeTypeId,
money,
canPay: true
})
}
})