feat(M08-A): 接入顾客端充值入口
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
const {
|
||||
request,
|
||||
ensureLogin,
|
||||
cents,
|
||||
clientRequestId,
|
||||
} = require('../../utils/api.js')
|
||||
|
||||
Page({
|
||||
data: {
|
||||
loading: false,
|
||||
errorMessage: '',
|
||||
successMessage: '',
|
||||
plans: [],
|
||||
selectedPlanId: '',
|
||||
rechargeOrder: null,
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
this.loadPlans()
|
||||
},
|
||||
|
||||
async loadPlans() {
|
||||
this.setData({ loading: true, errorMessage: '', successMessage: '' })
|
||||
try {
|
||||
await ensureLogin()
|
||||
const response = await request('/recharge/plans')
|
||||
const plans = (response.data || []).map((item) => ({
|
||||
...item,
|
||||
payText: cents(item.payAmountCents),
|
||||
giftText: cents(item.giftAmountCents),
|
||||
totalText: cents(Number(item.payAmountCents || 0) + Number(item.giftAmountCents || 0)),
|
||||
}))
|
||||
this.setData({
|
||||
plans,
|
||||
selectedPlanId: plans[0]?.planId || '',
|
||||
})
|
||||
} catch (error) {
|
||||
this.setData({ errorMessage: error.message || '充值计划加载失败' })
|
||||
} finally {
|
||||
this.setData({ loading: false })
|
||||
}
|
||||
},
|
||||
|
||||
selectPlan(event) {
|
||||
this.setData({
|
||||
selectedPlanId: event.currentTarget.dataset.planId || '',
|
||||
rechargeOrder: null,
|
||||
errorMessage: '',
|
||||
successMessage: '',
|
||||
})
|
||||
},
|
||||
|
||||
async createRechargeOrder() {
|
||||
if (!this.data.selectedPlanId) {
|
||||
this.setData({ errorMessage: '请选择充值计划' })
|
||||
return
|
||||
}
|
||||
const plan = this.data.plans.find((item) => item.planId === this.data.selectedPlanId)
|
||||
await this.withRequest(async () => {
|
||||
const response = await request('/recharge/orders', {
|
||||
method: 'POST',
|
||||
data: {
|
||||
planId: this.data.selectedPlanId,
|
||||
storeId: plan?.storeId || null,
|
||||
clientRequestId: clientRequestId('miniapp-recharge'),
|
||||
},
|
||||
})
|
||||
this.setData({
|
||||
rechargeOrder: {
|
||||
...response.data,
|
||||
payText: cents(response.data.payAmountCents),
|
||||
giftText: cents(response.data.giftAmountCents),
|
||||
},
|
||||
successMessage: '充值单已创建',
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
async withRequest(work) {
|
||||
this.setData({ loading: true, errorMessage: '', successMessage: '' })
|
||||
try {
|
||||
await ensureLogin()
|
||||
await work()
|
||||
} catch (error) {
|
||||
this.setData({ errorMessage: error.message || '充值操作失败' })
|
||||
} finally {
|
||||
this.setData({ loading: false })
|
||||
}
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user