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 }}     +
+
+
+