From e906831103a9cbc4cbe2c22365a842f389bd173d Mon Sep 17 00:00:00 2001
From: Mars <3361409208a@gmail.com>
Date: Tue, 30 Jun 2026 17:55:15 +0800
Subject: [PATCH] =?UTF-8?q?fix(player-desktop):=20=E4=BF=AE=E5=A4=8D?=
=?UTF-8?q?=E6=A1=8C=E9=9D=A2=E7=AB=AF=E6=B3=A8=E5=8D=95=E8=AF=A6=E6=83=85?=
=?UTF-8?q?=E9=A1=B5=E6=97=B6=E9=97=B4=20Invalid=20Date=20=E5=8F=8A?=
=?UTF-8?q?=E6=8A=95=E6=B3=A8=E9=80=89=E9=A1=B9=E4=B8=8D=E6=98=BE=E7=A4=BA?=
=?UTF-8?q?=E7=9A=84=20Schema=20=E7=BB=91=E5=AE=9A=20bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/components/desktop/DesktopShell.vue | 2 +-
.../views/desktop/DesktopBetDetailView.vue | 58 ++++++++++++++-----
2 files changed, 43 insertions(+), 17 deletions(-)
diff --git a/apps/player/src/components/desktop/DesktopShell.vue b/apps/player/src/components/desktop/DesktopShell.vue
index 3e7d9e3..c805f3f 100644
--- a/apps/player/src/components/desktop/DesktopShell.vue
+++ b/apps/player/src/components/desktop/DesktopShell.vue
@@ -93,7 +93,7 @@ watch(
diff --git a/apps/player/src/views/desktop/DesktopBetDetailView.vue b/apps/player/src/views/desktop/DesktopBetDetailView.vue
index b68236f..752348a 100644
--- a/apps/player/src/views/desktop/DesktopBetDetailView.vue
+++ b/apps/player/src/views/desktop/DesktopBetDetailView.vue
@@ -5,7 +5,7 @@ import { useRoute, useRouter, RouterLink } from 'vue-router';
import api from '../../api';
import GoldSpinner from '../../components/GoldSpinner.vue';
-const { t } = useI18n();
+const { t, locale } = useI18n();
const route = useRoute();
const router = useRouter();
@@ -20,17 +20,16 @@ function goBack() {
type BetDetail = {
betNo: string;
stake: string;
- potentialPayout?: string;
+ potentialReturn?: string;
status: string;
- createdAt: string;
- selections: Array<{
- matchName?: string;
+ placedAt: string;
+ legs: Array<{
+ matchTitle?: string;
+ marketLabel?: string;
selectionName?: string;
odds?: number;
- market?: string;
- homeScore?: number;
- awayScore?: number;
- matchStatus?: string;
+ resultStatus?: string;
+ score?: { ht: string | null; ft: string | null } | null;
[key: string]: any;
}>;
[key: string]: any;
@@ -71,6 +70,32 @@ function statusLabel(status: string) {
};
return map[status?.toUpperCase()] ?? status;
}
+
+const SEL_TRANS: Record> = {
+ '主胜': { 'en-US': 'Home Win', 'ms-MY': 'Rumah Menang' },
+ '客胜': { 'en-US': 'Away Win', 'ms-MY': 'Tandang Menang' },
+ '和局': { 'en-US': 'Draw', 'ms-MY': 'Seri' },
+ '主': { 'en-US': 'Home', 'ms-MY': 'Rumah' },
+ '客': { 'en-US': 'Away', 'ms-MY': 'Tandang' },
+ '大': { 'en-US': 'Over', 'ms-MY': 'Atas' },
+ '小': { 'en-US': 'Under', 'ms-MY': 'Bawah' },
+ '单': { 'en-US': 'Odd', 'ms-MY': 'Ganjil' },
+ '双': { 'en-US': 'Even', 'ms-MY': 'Genap' },
+ '冠军': { 'en-US': 'Winner', 'ms-MY': 'Juara' },
+};
+
+function translateSel(name: string): string {
+ if (locale.value === 'zh-CN') return name;
+ const exact = SEL_TRANS[name];
+ if (exact) return exact[locale.value] ?? exact['en-US'] ?? name;
+ const sp = name.indexOf(' ');
+ if (sp > 0) {
+ const head = name.slice(0, sp);
+ const m = SEL_TRANS[head];
+ if (m) return (m[locale.value] ?? m['en-US'] ?? head) + name.slice(sp);
+ }
+ return name;
+}
@@ -104,11 +129,11 @@ function statusLabel(status: string) {
{{ t('bet.potential_payout') || '预计派彩' }}
- {{ detail.potentialPayout || '-' }}
+ {{ detail.potentialReturn || '-' }}
{{ t('bet.placed_at') || '下注时间' }}
- {{ new Date(detail.createdAt).toLocaleString() }}
+ {{ detail.placedAt ? new Date(detail.placedAt).toLocaleString() : '-' }}
@@ -116,12 +141,13 @@ function statusLabel(status: string) {
{{ t('bet.selections') || '投注选项' }}
-
-
{{ sel.matchName || t('bet.match') }}
+
+
{{ leg.matchTitle || t('bet.match') }}
- {{ sel.market || sel.marketName || '' }}
- {{ sel.selectionName || '' }}
- @{{ sel.odds }}
+ {{ leg.marketLabel || '' }}
+ {{ translateSel(leg.selectionName || '') }}
+ @{{ leg.odds }}
+ ({{ t('history.ft') }}: {{ leg.score.ft }})