electricity_bill_calc_wx/pages/recharge/index.js
2024-07-17 17:05:58 +08:00

276 lines
5.9 KiB
JavaScript

import { getMeterDetail, getTenementMeterList } from "../../service/meter";
import request from '../../utils/request';
import { getUserInfo } from "../../service/user"
import { alertInfo, alertSuccess, loadingFunc } from "../../utils/index";
import { requestRecharge } from "../../service/recharge";
const { OK } = request;
// pages/recharge/index.js
Page({
/**
* 页面的初始数据
*/
data: {
meterList: [],
meter: {},
actions: [
{ name: '微信支付', },
{ name: '对公支付', disabled: true },
],
user: {},
},
/**
* 生命周期函数--监听页面加载
*/
onLoad() {
const tenement = wx.getStorageSync('tenement')
const park = wx.getStorageSync('park')
this.setData({
tenement, park
})
this.init(park, tenement)
},
async changeMeter() {
const { meterList = [] } = this.data;
const newColumns = meterList.map(item => { item.id = item.code; item.name = `${item.code} - ${item.address}`; return item; })
this.setData({
columns: newColumns,
show: true,
pickerType: "meter"
})
},
onOk(e) {
const { type } = e.detail;
switch(type) {
case "meter":
const { id } = e.detail.value;
this.handleGetMeterDetail(id)
break;
}
},
async init(park, tenement) {
this.getMeters({ id: tenement?.id })
},
async refreshMeter() {
const { meter } = this.data;
this.handleGetMeterDetail(meter.id);
},
async handleGetMeterDetail(meterId) {
const { tenement } = this.data;
const { code, message, data } = await getMeterDetail({ tenement: tenement?.id, id: meterId });
if (code !== OK) {
alertInfo(message);
return;
}
this.setData({
meter: data,
show: false,
})
},
onCancel() {
this.setData({
show: false,
})
},
async setUser() {
const result = await getUserInfo();
if (result.code !== OK) {
const user = wx.getStorageSync('user')
this.setData({ user: user })
return;
}
this.setData({ user: result.data })
wx.setStorageSync('user', result.data)
},
async recharge() {
const { user, money, meter, tenement, park } = this.data;
if (!user || !user.id) {
alertInfo("请先登录")
return
}
if (!money) {
alertInfo("请先输入金额")
return;
}
if (!meter?.code) {
alertInfo("没有选择表计")
return;
}
if (money < 0.01) {
alertInfo("最少为1分")
return
}
// wx.navigateTo({
// url: `/pages/rechargeWay/index?money=${money}&address=${meter.address}&id=${meter?.id}&tenement=${tenement?.id}&park=${park.id}`,
// })
this.setData({ rechargeVisible: true })
},
async getMeters({ id }) {
const { code, message, data } = await getTenementMeterList(id);
if (code !== OK) {
alertInfo(message)
this.setData({ meterList: [], meter: {} })
wx.setStorageSync('meter', {})
return;
}
this.setData({
meterList: data || [],
meter: (data?.[0] || {})
})
// if (!storageMeter) {
wx.setStorageSync('meter', data?.[0] || {} )
// }
},
changeMoney(e) {
const { money } = e.currentTarget.dataset;
this.setData({
money: money
})
},
onChangeMoney(e) {
this.setData({ money: e.detail })
},
onCloseRechargeWay() {
this.setData({ rechargeVisible: false })
},
onSelectRechargeWay(e) {
const that = this;
switch(e.detail.name) {
case "对公支付":
alertInfo("开发中")
break;
default:
loadingFunc(async () => {
await that.wxRecharge();
})
break;
}
},
jumpToRecord() {
wx.navigateTo({
url: '/pages/rechargeRecord/index',
})
},
jumpToOrder() {
// alertInfo("尚未完成")
wx.navigateTo({
url: '/pages/billList/index',
})
},
jumpToElectric() {
wx.navigateTo({
url: '/pages/electricQuery/index',
})
},
jumpToInvoice() {
wx.navigateTo({
url: '/pages/invoiceList/index',
})
},
async wxRecharge() {
const { money, meter, tenement, park } = this.data;
const that = this;
const { code, message, data } = await requestRecharge({ money: Number(money), id: meter?.id, tenement: tenement?.id, park: park?.id })
if (code !== OK) {
alertInfo(message)
return;
}
wx.requestPayment({
timeStamp: data?.time,
nonceStr: data?.nonceStr,
package: "prepay_id=" + data?.prepay_id,
paySign: data?.paySign,
signType: 'RSA',
success: (res) => {
alertSuccess("充值成功")
that.setData({
money: null
})
},
fail: (res) => {
console.log('fail', res)
alertInfo("请稍后重试")
},
complete: (res) => {
console.log('complete')
that.handleGetMeterDetail(meter.id)
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.setUser();
},
chooseMoney(e) {
const { money, index } = e.currentTarget.dataset;
this.setData({
money,
moneyIndex: Number(index),
customFlag: false,
});
},
onChangeCode(e) {
const { codes } = this.data;
const index = Number(e.detail.value);
this.setData({
code: codes[index]
})
},
custom() {
this.setData({
moneyIndex: -1,
customFlag: true,
})
},
onChangeCustomMoney(e) {
const money = e.detail.value;
this.setData({
money: money,
})
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})