From 833d76e88cf8f4ec981cf3128d3a40bb50ccf799 Mon Sep 17 00:00:00 2001 From: testadmin Date: Mon, 20 Apr 2026 10:55:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=99=BB=E5=BD=95=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=BC=B9=E6=A1=86=20+=20=E7=AD=B9=E7=A0=81?= =?UTF-8?q?=E8=B6=8A=E5=8D=97K=E6=A0=BC=E5=BC=8F=E6=8C=81=E4=B9=85?= =?UTF-8?q?=E5=8C=96=20+=20play.vue=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - axios.config: 拦截登录过期响应,统一弹框后清除用户信息,防多次弹框 - app.js: chooseChip 改为越南 K 格式默认 10k,支持 localStorage 恢复 - bettingChips.js: 移除(逻辑已合并) --- src/plugins/axios.config.js | 42 +++++++++++ src/store/modules/app.js | 36 +++++++++- src/utils/bettingChips.js | 0 src/views/play.vue | 137 +++++++++++++++++++++++++++++++++--- 4 files changed, 204 insertions(+), 11 deletions(-) delete mode 100644 src/utils/bettingChips.js diff --git a/src/plugins/axios.config.js b/src/plugins/axios.config.js index 6e4874ab..f4e2ce61 100644 --- a/src/plugins/axios.config.js +++ b/src/plugins/axios.config.js @@ -1,8 +1,48 @@ import axios from "axios" import $store from "@/store" import { encrypt, decrypt } from "@/utils/secret" +import { showDialog, closeDialog } from "vant" let api = "" + +// 登录失效统一处理(防止多 API 同时失败弹多个框) +let _authExpiredHandling = false +const handleAuthExpired = (res) => { + const msg = res && res.Msg + const isAuthExpired = + res && + res.Success == 0 && + (msg === "获取信息失败" || + msg === "登录已过期" || + msg === "token失效" || + msg === "请重新登录") + if (!isAuthExpired) return false + if (_authExpiredHandling) return true + _authExpiredHandling = true + + const cfg = $store.state.config + const Lang = cfg.$lang && cfg.$Type ? cfg.$lang[cfg.$Type] : {} + const title = Lang.tips || "提示" + const message = Lang.login_expired || "登录已过期,请重新登录" + + let autoClose = null + showDialog({ title, message }) + .then(() => { + clearTimeout(autoClose) + _authExpiredHandling = false + $store.commit("app/removeUserInfo") + }) + .catch(() => { + _authExpiredHandling = false + $store.commit("app/removeUserInfo") + }) + autoClose = setTimeout(() => { + closeDialog() + _authExpiredHandling = false + $store.commit("app/removeUserInfo") + }, 4000) + return true +} const instance = axios.create({ timeout: 6000, headers: { @@ -103,6 +143,7 @@ const get = (url, params, option = {}) => { encryptData }) .then((res) => { + handleAuthExpired(res) resolve(res) }) .catch((err) => { @@ -127,6 +168,7 @@ const post = (url, params, option = {}) => { }) .then((res) => { res.Data = res.Data ? JSON.parse(decrypt(res.Data)) : {} + handleAuthExpired(res) resolve(res) }) .catch((err) => { diff --git a/src/store/modules/app.js b/src/store/modules/app.js index 499828b8..1ff1deca 100644 --- a/src/store/modules/app.js +++ b/src/store/modules/app.js @@ -27,10 +27,28 @@ try { console.log(err) } +// 默认筹码(必须和 store/modules/config.js::chipArry 里的 key 对齐) +// 2026-04 改用越南 K 格式(10k/20k/.../100000k),旧 "1w" 已废弃 +const DEFAULT_CHOOSE_CHIP = { key: "10k", show: true, value: 10000 } + +// 从 localStorage 恢复上次选中的筹码,若不存在 / key 已下架则回退默认 +let chooseChipInit = DEFAULT_CHOOSE_CHIP +try { + const saved = localStorage.getItem("chooseChip") + if (saved) { + const obj = JSON.parse(saved) + if (obj && typeof obj.key === "string" && typeof obj.value === "number" && obj.value > 0) { + chooseChipInit = { key: obj.key, show: obj.show !== false, value: obj.value } + } + } +} catch (err) { + console.log(err) +} + const state = { game_id: 1, gameUrl: "", - chooseChip: { key: "1s", value: 10 }, + chooseChip: chooseChipInit, userInfo: userData, allTableData: [], routerStack: routerStack, @@ -67,9 +85,21 @@ const mutations = { } window.location.href = url }, - // 更新选择下注筹码 + // 更新选择下注筹码(强类型 + 持久化到 localStorage) updateChooseChip: (state, data) => { - state.chooseChip = data + if (!data || typeof data !== "object") return + const safe = { + key: String(data.key || ""), + show: data.show !== false, + value: Number(data.value) || 0 + } + if (!safe.key || safe.value <= 0) return + state.chooseChip = safe + try { + localStorage.setItem("chooseChip", JSON.stringify(safe)) + } catch (err) { + console.log(err) + } }, updateGameId(state, id) { state.game_id = id diff --git a/src/utils/bettingChips.js b/src/utils/bettingChips.js deleted file mode 100644 index e69de29b..00000000 diff --git a/src/views/play.vue b/src/views/play.vue index 2707165e..fd8072fa 100644 --- a/src/views/play.vue +++ b/src/views/play.vue @@ -55,11 +55,28 @@ + + +
+ {{ subtitle }} +
+
+
+ +
+
📢
+
+
+ {{ item.title }}     +
+
+
+