From 086a46dda6e0edb8343621622cd698a65a4a1a3c Mon Sep 17 00:00:00 2001 From: lkddi Date: Sat, 25 Apr 2026 10:44:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E4=B9=B0=E5=8D=95=E5=89=8D?= =?UTF-8?q?=E5=8F=B0=E5=BC=B9=E7=AA=97=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/js/chat-room.js | 4 ++ resources/js/chat-room/baccarat-loss-cover.js | 55 +++++++++++++++++++ .../games/baccarat-loss-cover-panel.blade.php | 12 ++-- 3 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 resources/js/chat-room/baccarat-loss-cover.js diff --git a/resources/js/chat-room.js b/resources/js/chat-room.js index 3c8ef9a..f2b0826 100644 --- a/resources/js/chat-room.js +++ b/resources/js/chat-room.js @@ -31,6 +31,7 @@ export { openAdminBaccaratLossCoverModal, submitBaccaratLossCoverEvent, } from "./chat-room/baccarat-loss-cover-admin.js"; +export { bindBaccaratLossCoverControls } from "./chat-room/baccarat-loss-cover.js"; export { bankAction, bankLoadInfo, @@ -102,6 +103,7 @@ import { openAdminBaccaratLossCoverModal, submitBaccaratLossCoverEvent, } from "./chat-room/baccarat-loss-cover-admin.js"; +import { bindBaccaratLossCoverControls } from "./chat-room/baccarat-loss-cover.js"; import { bankAction, bankLoadInfo, @@ -176,6 +178,7 @@ if (typeof window !== "undefined") { bindBaccaratLossCoverAdminControls, closeAdminBaccaratLossCoverModal, closeCurrentBaccaratLossCoverEvent, + bindBaccaratLossCoverControls, loadAdminCurrentLossCoverEvent, openAdminBaccaratLossCoverModal, submitBaccaratLossCoverEvent, @@ -261,6 +264,7 @@ if (typeof window !== "undefined") { bindToolbarControls(); bindAdminMenuControls(); bindBaccaratLossCoverAdminControls(); + bindBaccaratLossCoverControls(); bindBankControls(); bindFishingControls(); bindMarriageStatusControls(); diff --git a/resources/js/chat-room/baccarat-loss-cover.js b/resources/js/chat-room/baccarat-loss-cover.js new file mode 100644 index 0000000..7934129 --- /dev/null +++ b/resources/js/chat-room/baccarat-loss-cover.js @@ -0,0 +1,55 @@ +// 百乐加强买单活动前台弹窗事件代理,替代 Blade 内联 onclick。 + +let baccaratLossCoverEventsBound = false; + +/** + * 调用买单活动前台存量全局函数。 + * + * @param {string} functionName 全局函数名 + * @param {...unknown} args 参数 + * @returns {void} + */ +function callLossCoverGlobal(functionName, ...args) { + // 前台弹窗的数据加载、领取接口和金币同步仍由 Blade 旧脚本维护。 + if (typeof window[functionName] === "function") { + window[functionName](...args); + } +} + +/** + * 绑定买单活动前台弹窗关闭、Tab 切换与领取按钮事件。 + * + * @returns {void} + */ +export function bindBaccaratLossCoverControls() { + if (baccaratLossCoverEventsBound || typeof document === "undefined") { + return; + } + + baccaratLossCoverEventsBound = true; + document.addEventListener("click", (event) => { + if (!(event.target instanceof Element)) { + return; + } + + if (event.target.closest("[data-blc-close]")) { + event.preventDefault(); + callLossCoverGlobal("closeBaccaratLossCoverModal"); + return; + } + + const tabButton = event.target.closest("[data-blc-tab]"); + if (tabButton) { + event.preventDefault(); + callLossCoverGlobal("switchBaccaratLossCoverTab", tabButton.getAttribute("data-blc-tab") || "overview"); + return; + } + + const claimButton = event.target.closest("[data-blc-claim]"); + if (claimButton) { + event.preventDefault(); + // 动态活动卡片只传活动 ID,领取流程继续复用旧全局函数。 + callLossCoverGlobal("claimBaccaratLossCover", claimButton.getAttribute("data-blc-claim") || ""); + } + }); +} diff --git a/resources/views/chat/partials/games/baccarat-loss-cover-panel.blade.php b/resources/views/chat/partials/games/baccarat-loss-cover-panel.blade.php index 6500344..8e89b45 100644 --- a/resources/views/chat/partials/games/baccarat-loss-cover-panel.blade.php +++ b/resources/views/chat/partials/games/baccarat-loss-cover-panel.blade.php @@ -21,18 +21,18 @@ background:rgba(0,0,0,.2); padding:2px 8px; border-radius:10px;"> 💰 -- 金币 - ×
@@ -55,7 +55,7 @@
- @@ -112,7 +112,7 @@ const myRecord = event.my_record; const claimButton = event.status === 'claimable' && myRecord?.claim_status === 'pending' - ? `` + ? `` : ''; container.innerHTML = ` @@ -166,7 +166,7 @@ container.innerHTML = events.map(event => { const myRecord = event.my_record; const claimButton = event.status === 'claimable' && myRecord?.claim_status === 'pending' - ? `` + ? `` : ''; return `