diff --git a/frontend/pages/support-activity/components/ActionBar.vue b/frontend/pages/support-activity/components/ActionBar.vue
index be6e4c2..8bbc20c 100644
--- a/frontend/pages/support-activity/components/ActionBar.vue
+++ b/frontend/pages/support-activity/components/ActionBar.vue
@@ -334,13 +334,36 @@ async function handleConfirmContribute() {
}
// 调用贡献API多次
+ let successCount = 0
+ let lastRemainingBalance = null
+ let lastErrorMessage = ''
for (let i = 0; i < quantity.value; i++) {
- await contributeItem(item, false, true)
+ const res = await contributeItem(item, true, true)
+ console.log(`第${i+1}次调用返回值:`, res)
+ if (res && res.success !== false) {
+ successCount++
+ lastRemainingBalance = res.remainingBalance
+ } else {
+ lastErrorMessage = res?.message || '活动不在进行中,无法购买'
+ }
+ }
+
+ // 更新本地余额(使用最后一次成功的余额)
+ if (lastRemainingBalance !== null) {
+ await updateLocalBalanceFromResult(lastRemainingBalance)
+ }
+
+ // 显示自定义结果提示
+ if (successCount === quantity.value) {
+ showResultToast('✅', `贡献成功\n+${item.cost * successCount} 贡献值已到账`)
+ } else if (successCount > 0) {
+ showResultToast('⚠️', `部分成功 ${successCount}/${quantity.value}`)
+ } else {
+ showResultToast('❌', lastErrorMessage || '贡献失败')
}
} finally {
processingItems.delete(item.type)
isContributing.value = false
- // 注意:不清除 selectedItem,让用户可以继续赠送或选择其他道具
}
}
@@ -366,11 +389,13 @@ async function contributeItem(item, isRetry = false, silent = false) {
try {
// 使用 activity-config.js 中的 purchaseItem 函数
const result = await purchaseItem(props.activityId, item.type, 1)
+ console.log(`[contributeItem] result:`, result, 'isRetry:', isRetry, 'silent:', silent)
// 检查购买结果
if (!result.success) {
- if (!silent) showResultToast('', result.message || '活动不在进行中,无法购买')
- return false
+ const msg = result.message || '活动不在进行中,无法购买'
+ if (!silent) showResultToast('', msg)
+ return { success: false, message: msg }
}
// 成功:触发反馈动画(重试时静默,不触发)
@@ -393,7 +418,7 @@ async function contributeItem(item, isRetry = false, silent = false) {
}
// 重试时返回完整结果供 syncPendingActions 汇总;正常时返回 true
- return isRetry ? { contribution: result.totalContribution, remainingBalance: result.remainingBalance } : true
+ return isRetry ? { contribution: result.totalContribution, remainingBalance: result.remainingBalance, success: true } : { success: true }
} catch (error) {
console.error('贡献失败:', error)
@@ -404,12 +429,12 @@ async function contributeItem(item, isRetry = false, silent = false) {
if (!queued) {
// 队列已满,退还刚扣除的余额
refundLocalBalance(item.cost)
- return false
+ return { success: false, message: '网络异常,已加入队列' }
}
- showResultToast('', '网络异常,已加入队列')
+ return { success: false, message: '网络异常,已加入队列' }
}
- return false
+ return { success: false, message: error.message || '贡献失败' }
}
}
diff --git a/frontend/pages/support-activity/index.vue b/frontend/pages/support-activity/index.vue
index 96efcce..6cd9af1 100644
--- a/frontend/pages/support-activity/index.vue
+++ b/frontend/pages/support-activity/index.vue
@@ -22,11 +22,11 @@
/>
-
+ /> -->