feat: connect comprehensive profile and stored value payment

This commit is contained in:
gqt
2026-07-12 21:11:24 +08:00
parent df1e2fe267
commit c26ede3e03
4 changed files with 60 additions and 7 deletions
@@ -24,6 +24,7 @@
<view class="card method-card">
<text class="card-title">支付方式</text>
<view
v-if="!isStoredValueOrder"
class="method-item"
:class="{ active: payMethod === 'balance', disabled: !canUseBalance }"
@tap="selectMethod('balance')"
@@ -73,7 +74,11 @@ const isSubmitting = ref(false)
const nowTimestamp = ref(Date.now())
let countdownTimer = null
const canUseBalance = computed(() => toAmountNumber(balance.value.balance) >= toAmountNumber(order.value?.amount))
const isStoredValueOrder = computed(() => order.value?.business_type === 'stored_value')
const canUseBalance = computed(() => {
if (isStoredValueOrder.value) return false
return toAmountNumber(balance.value.balance) >= toAmountNumber(order.value?.amount)
})
const canPay = computed(() => order.value?.status === 'pending_pay' && (payMethod.value !== 'balance' || canUseBalance.value))
const payButtonText = computed(() => {
if (order.value?.status !== 'pending_pay') return '订单不可支付'
@@ -108,7 +113,11 @@ const loadPage = async () => {
])
order.value = orderData
balance.value = balanceData
if (!canUseBalance.value) payMethod.value = 'wechat'
if (isStoredValueOrder.value) {
payMethod.value = 'wechat'
} else if (!canUseBalance.value) {
payMethod.value = 'wechat'
}
updateCountdownTimer()
}
@@ -131,15 +140,22 @@ const stopCountdown = () => {
const padTime = (value) => String(value).padStart(2, '0')
const selectMethod = (method) => {
if (method === 'balance' && !canUseBalance.value) {
uni.showToast({ title: '余额不足', icon: 'none' })
return
if (method === 'balance') {
if (isStoredValueOrder.value) {
uni.showToast({ title: '储值卡订单仅支持微信支付', icon: 'none' })
return
}
if (!canUseBalance.value) {
uni.showToast({ title: '余额不足', icon: 'none' })
return
}
}
payMethod.value = method
}
const pay = async () => {
if (!canPay.value || isSubmitting.value) return
if (isStoredValueOrder.value && payMethod.value === 'balance') return
isSubmitting.value = true
try {
if (payMethod.value === 'balance') {