diff --git a/admin/src/views/VpayOrders.vue b/admin/src/views/VpayOrders.vue index 14a0a37..188767b 100644 --- a/admin/src/views/VpayOrders.vue +++ b/admin/src/views/VpayOrders.vue @@ -153,8 +153,16 @@ function refund(row) { refundTarget.value = row; refundDlg.value = true } async function doRefund() { try { await ElMessageBox.confirm('退款后无法撤销,确认执行?', '最终确认', { type: 'warning' }) - await apiPost(`/api/admin/vpay/orders/${refundTarget.value._id}/refund`) - ElMessage.success('退款成功') + let r + try { + r = await apiPost(`/api/admin/vpay/orders/${refundTarget.value._id}/refund`) + } catch (e1) { + if (e1.message && e1.message.includes('余额不足')) { + await ElMessageBox.confirm(e1.message + '\n强制退款后余额将变为负数,用户下次充值时自动抵扣。', '余额不足', { type: 'warning', confirmText: '强制退款' }) + r = await apiPost(`/api/admin/vpay/orders/${refundTarget.value._id}/refund`, { force: true }) + } else { throw e1 } + } + ElMessage.success('退款成功(微信侧已退钱)') refundDlg.value = false load(); loadStats() } catch (e) { if (e !== 'cancel') ElMessage.error(e.message || '退款失败') }