From da2de8685db12473370dc7b6041c8f885b621beb Mon Sep 17 00:00:00 2001 From: kron Date: Tue, 29 Jul 2025 11:04:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=AF=94=E8=B5=9B=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E7=BB=93=E6=9D=9F=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis.js | 24 ++++++++++++------------ src/util.js | 26 +++++++++++++++----------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/apis.js b/src/apis.js index a0aa942..bcc0a25 100644 --- a/src/apis.js +++ b/src/apis.js @@ -38,7 +38,6 @@ function request(method, url, data = {}) { if (message === "BIND_DEVICE") { resolve({ binded: true }); return; - } if (message === "ERROR_ORDER_UNPAY") { uni.showToast({ @@ -65,17 +64,17 @@ function request(method, url, data = {}) { // 统一的错误处理函数 function handleRequestError(err, url) { - console.log('请求失败:', { err, url }); - + console.log("请求失败:", { err, url }); + // 根据错误类型显示不同提示 if (err.errMsg) { - if (err.errMsg.includes('timeout')) { + if (err.errMsg.includes("timeout")) { showCustomToast("请求超时,请稍后重试", "timeout"); - } else if (err.errMsg.includes('fail')) { + } else if (err.errMsg.includes("fail")) { // 检查网络状态 uni.getNetworkType({ success: (res) => { - if (res.networkType === 'none') { + if (res.networkType === "none") { showCustomToast("网络连接已断开,请检查网络设置", "network"); } else { showCustomToast("服务器连接失败,请稍后重试", "server"); @@ -83,7 +82,7 @@ function handleRequestError(err, url) { }, fail: () => { showCustomToast("网络异常,请检查网络连接", "unknown"); - } + }, }); } else { showCustomToast("请求失败,请稍后重试", "general"); @@ -98,21 +97,21 @@ function showCustomToast(message, type) { const config = { title: message, icon: "none", - duration: 3000 + duration: 3000, }; - + // 根据错误类型可以添加不同的处理逻辑 switch (type) { - case 'timeout': + case "timeout": config.duration = 4000; // 超时提示显示更久 break; - case 'network': + case "network": config.duration = 5000; // 网络问题提示显示更久 break; default: break; } - + uni.showToast(config); } @@ -228,6 +227,7 @@ export const getGameAPI = async (battleId) => { const result = await request("POST", "/user/battle/detail", { id: battleId, }); + if (!result.battleStats) return {}; const { battleStats = {}, playerStats = {}, diff --git a/src/util.js b/src/util.js index 937711e..687c9f9 100644 --- a/src/util.js +++ b/src/util.js @@ -1,5 +1,5 @@ import websocket from "@/websocket"; -import { isGamingAPI } from "@/apis"; +import { isGamingAPI, getGameAPI } from "@/apis"; export const formatTimestamp = (timestamp) => { const date = new Date(timestamp * 1000); @@ -269,16 +269,20 @@ export const wxShare = async () => { export const isGameEnded = async (battleId) => { const isGaming = await isGamingAPI(); if (!isGaming) { - // uni.showToast({ - // title: "比赛已结束", - // icon: "none", - // }); - // setTimeout(() => { - // uni.navigateBack(); - // }, 1000); - uni.redirectTo({ - url: `/pages/battle-result?battleId=${battleId}`, - }); + const result = await getGameAPI(battleId); + if (result.mode) { + uni.redirectTo({ + url: `/pages/battle-result?battleId=${battleId}`, + }); + } else { + uni.showToast({ + title: "比赛已结束", + icon: "none", + }); + setTimeout(() => { + uni.navigateBack(); + }, 1000); + } } return !isGaming; };