From 1a750f2fe70aed8abd96dc42d433995adc5ab9c3 Mon Sep 17 00:00:00 2001 From: lkddi Date: Sat, 25 Apr 2026 08:08:39 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E9=93=B6=E8=A1=8C=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E5=9F=BA=E7=A1=80=E6=8C=89=E9=92=AE=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E7=BB=91=E5=AE=9A?= 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/bank-controls.js | 84 +++++++++++++++++++ .../chat/partials/layout/toolbar.blade.php | 16 ++-- 3 files changed, 96 insertions(+), 8 deletions(-) create mode 100644 resources/js/chat-room/bank-controls.js diff --git a/resources/js/chat-room.js b/resources/js/chat-room.js index 8f48ac2..9205612 100644 --- a/resources/js/chat-room.js +++ b/resources/js/chat-room.js @@ -19,6 +19,7 @@ export { openAdminBaccaratLossCoverModal, submitBaccaratLossCoverEvent, } from "./chat-room/baccarat-loss-cover-admin.js"; +export { bindBankControls } from "./chat-room/bank-controls.js"; export { bindFishingControls } from "./chat-room/fishing.js"; export { bindProfileControls } from "./chat-room/profile-controls.js"; export { bindShopControls } from "./chat-room/shop-controls.js"; @@ -66,6 +67,7 @@ import { openAdminBaccaratLossCoverModal, submitBaccaratLossCoverEvent, } from "./chat-room/baccarat-loss-cover-admin.js"; +import { bindBankControls } from "./chat-room/bank-controls.js"; import { bindFishingControls } from "./chat-room/fishing.js"; import { bindProfileControls } from "./chat-room/profile-controls.js"; import { bindShopControls } from "./chat-room/shop-controls.js"; @@ -119,6 +121,7 @@ if (typeof window !== "undefined") { loadAdminCurrentLossCoverEvent, openAdminBaccaratLossCoverModal, submitBaccaratLossCoverEvent, + bindBankControls, bindFishingControls, bindProfileControls, bindShopControls, @@ -170,6 +173,7 @@ if (typeof window !== "undefined") { bindToolbarControls(); bindAdminMenuControls(); bindBaccaratLossCoverAdminControls(); + bindBankControls(); bindFishingControls(); bindProfileControls(); bindShopControls(); diff --git a/resources/js/chat-room/bank-controls.js b/resources/js/chat-room/bank-controls.js new file mode 100644 index 0000000..a467206 --- /dev/null +++ b/resources/js/chat-room/bank-controls.js @@ -0,0 +1,84 @@ +// 金币银行基础按钮事件绑定,替代 toolbar 银行区域内联 onclick。 + +let bankControlEventsBound = false; + +/** + * 调用银行存量全局函数。 + * + * @param {string} functionName 全局函数名 + * @param {...unknown} args 参数 + * @returns {void} + */ +function callBankGlobal(functionName, ...args) { + if (typeof window[functionName] === "function") { + window[functionName](...args); + } +} + +/** + * 从分页文本中解析当前页码。 + * + * @returns {number} + */ +function resolveCurrentRankPage() { + const pageInfo = document.getElementById("bank-rank-page-info")?.textContent || "1 / 1"; + const currentPage = Number.parseInt(pageInfo.split("/")[0]?.trim() || "1", 10); + + return Number.isInteger(currentPage) && currentPage > 0 ? currentPage : 1; +} + +/** + * 绑定银行 tab、存取款、排行榜排序与分页按钮事件。 + * + * @returns {void} + */ +export function bindBankControls() { + if (bankControlEventsBound || typeof document === "undefined") { + return; + } + + bankControlEventsBound = true; + document.addEventListener("click", (event) => { + if (!(event.target instanceof Element)) { + return; + } + + const tabButton = event.target.closest("[data-bank-tab]"); + if (tabButton) { + event.preventDefault(); + callBankGlobal("switchBankTab", tabButton.getAttribute("data-bank-tab") || ""); + return; + } + + if (event.target.closest("[data-bank-modal-close]")) { + event.preventDefault(); + callBankGlobal("closeBankModal"); + return; + } + + const actionButton = event.target.closest("[data-bank-action]"); + if (actionButton) { + event.preventDefault(); + // 存取款共用原 bankAction,由 type 决定读取哪个输入框和提交哪个接口。 + callBankGlobal("bankAction", actionButton.getAttribute("data-bank-action") || ""); + return; + } + + if (event.target.closest("[data-bank-rank-sort]")) { + event.preventDefault(); + callBankGlobal("toggleBankRankSort"); + return; + } + + const pageButton = event.target.closest("[data-bank-rank-page-delta]"); + if (!pageButton) { + return; + } + + event.preventDefault(); + + // 分页状态仍由存量脚本维护,这里从显示文本推导目标页,避免依赖其闭包变量。 + const delta = Number.parseInt(pageButton.getAttribute("data-bank-rank-page-delta") || "0", 10); + callBankGlobal("fetchBankRanking", resolveCurrentRankPage() + delta); + }); +} diff --git a/resources/views/chat/partials/layout/toolbar.blade.php b/resources/views/chat/partials/layout/toolbar.blade.php index 7ac6f40..0ee425f 100644 --- a/resources/views/chat/partials/layout/toolbar.blade.php +++ b/resources/views/chat/partials/layout/toolbar.blade.php @@ -2447,10 +2447,10 @@ async function generateWechatBindCode() {
🏦 金币银行
{{-- Tabs --}}
- - + +
- × + × {{-- 我的账户 面板 --}} @@ -2472,12 +2472,12 @@ async function generateWechatBindCode() {
存 入 - +
取 出 - +
@@ -2495,7 +2495,7 @@ async function generateWechatBindCode() {