diff --git a/resources/js/chat-room/marriage-status.js b/resources/js/chat-room/marriage-status.js index ab8a9ac..7fa83f6 100644 --- a/resources/js/chat-room/marriage-status.js +++ b/resources/js/chat-room/marriage-status.js @@ -29,7 +29,25 @@ function resolveCurrentMarriedPage() { } /** - * 绑定婚姻弹窗 tab、分页、用户名片和状态操作按钮事件。 + * 打开婚礼红包领取弹窗。 + * + * @param {string} ceremonyId 婚礼记录 ID + * @returns {void} + */ +function openWeddingEnvelopeClaim(ceremonyId) { + const detail = window._weddingEnvelopes?.[ceremonyId]; + const modal = document.getElementById("wedding-envelope-modal"); + + if (!detail || !modal || typeof window.Alpine?.$data !== "function") { + return; + } + + // 红包详情仍由 Blade 旧脚本写入 window._weddingEnvelopes,这里只按 ID 打开现有 Alpine 弹窗。 + window.Alpine.$data(modal).open(detail); +} + +/** + * 绑定婚姻弹窗 tab、分页、用户名片、状态操作和婚礼红包领取事件。 * * @returns {void} */ @@ -67,6 +85,13 @@ export function bindMarriageStatusControls() { return; } + const weddingEnvelopeButton = event.target.closest("[data-wedding-envelope-claim]"); + if (weddingEnvelopeButton) { + event.preventDefault(); + openWeddingEnvelopeClaim(weddingEnvelopeButton.getAttribute("data-wedding-envelope-claim") || ""); + return; + } + const pageButton = event.target.closest("[data-marriage-page-delta]"); if (pageButton) { event.preventDefault(); diff --git a/resources/views/chat/partials/marriage-modals.blade.php b/resources/views/chat/partials/marriage-modals.blade.php index f76ea57..6018cdb 100644 --- a/resources/views/chat/partials/marriage-modals.blade.php +++ b/resources/views/chat/partials/marriage-modals.blade.php @@ -1339,7 +1339,7 @@ // 公屏追加带按钮的系统消息(按钮通过 ceremonyId 引用全局 Map) if (typeof appendSystemMessage === 'function') { - const claimBtn = `