修复礼包红包弹窗状态提示异常

This commit is contained in:
pllx
2026-04-30 16:27:37 +08:00
parent ee525f049e
commit ffd8789e67
+24 -13
View File
@@ -27,6 +27,24 @@ function byId(id) {
return document.getElementById(id); return document.getElementById(id);
} }
/**
* 更新红包弹窗状态提示,兼容状态提示区域被移除的简化弹窗。
*
* @param {string} message 状态文案
* @param {string} color 状态颜色
* @returns {void}
*/
function setRedPacketStatus(message, color) {
const status = byId("rp-status-msg");
if (!status) {
return;
}
status.textContent = message;
status.style.color = color;
}
/** /**
* 重置礼包按钮状态。 * 重置礼包按钮状态。
* *
@@ -317,7 +335,7 @@ function renderRedPacketModal(payload) {
byId("rp-remaining").textContent = payload.remainingCount; byId("rp-remaining").textContent = payload.remainingCount;
byId("rp-countdown").textContent = payload.expireSeconds; byId("rp-countdown").textContent = payload.expireSeconds;
byId("rp-timer-bar").style.width = "100%"; byId("rp-timer-bar").style.width = "100%";
byId("rp-status-msg").textContent = ""; setRedPacketStatus("", "#16a34a");
const emoji = modal.querySelector(".rp-emoji"); const emoji = modal.querySelector(".rp-emoji");
if (emoji) { if (emoji) {
@@ -359,9 +377,7 @@ function startRedPacketTimer() {
claimButton.disabled = true; claimButton.disabled = true;
claimButton.textContent = "礼包已过期"; claimButton.textContent = "礼包已过期";
const status = byId("rp-status-msg"); setRedPacketStatus("红包已过期,即将关闭…", "#9ca3af");
status.style.color = "#9ca3af";
status.textContent = "红包已过期,即将关闭…";
setTimeout(() => closeRedPacketModal(), 3000); setTimeout(() => closeRedPacketModal(), 3000);
} }
@@ -477,9 +493,7 @@ export async function claimRedPacket() {
const data = await response.json(); const data = await response.json();
handleClaimResponse(response, data, button); handleClaimResponse(response, data, button);
} catch (error) { } catch (error) {
const status = byId("rp-status-msg"); setRedPacketStatus("网络异常,请重试", "#dc2626");
status.textContent = "网络异常,请重试";
status.style.color = "#dc2626";
button.disabled = false; button.disabled = false;
button.textContent = "🧧 立即抢红包"; button.textContent = "🧧 立即抢红包";
} }
@@ -494,14 +508,12 @@ export async function claimRedPacket() {
* @returns {void} * @returns {void}
*/ */
function handleClaimResponse(response, data, button) { function handleClaimResponse(response, data, button) {
const status = byId("rp-status-msg");
const typeLabel = redPacketType === "exp" ? "经验" : "金币"; const typeLabel = redPacketType === "exp" ? "经验" : "金币";
if (response.ok && data.status === "success") { if (response.ok && data.status === "success") {
redPacketClaimed = true; redPacketClaimed = true;
button.textContent = "🎉 已抢到!"; button.textContent = "🎉 已抢到!";
status.style.color = "#16a34a"; setRedPacketStatus(`恭喜!您抢到了 ${data.amount} ${typeLabel}`, "#16a34a");
status.textContent = `恭喜!您抢到了 ${data.amount} ${typeLabel}`;
const remaining = byId("rp-remaining"); const remaining = byId("rp-remaining");
if (remaining && typeof data.remaining_count === "number") { if (remaining && typeof data.remaining_count === "number") {
@@ -516,12 +528,11 @@ function handleClaimResponse(response, data, button) {
duration: 8000, duration: 8000,
}); });
setTimeout(() => closeRedPacketModal(), 3000); closeRedPacketModal();
return; return;
} }
status.style.color = "#dc2626"; setRedPacketStatus(data.message || "抢包失败", "#dc2626");
status.textContent = data.message || "抢包失败";
updateClaimButtonAfterFailure(button, data.message || ""); updateClaimButtonAfterFailure(button, data.message || "");
} }