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 @@ /> - + /> -->