feat(player): 完善 H5 投注端与 API 演示数据
- 球赛/串关/优胜冠军、赛事详情、历史投注与个人资料编辑 - 固定顶栏、公告与底栏,仅内容区滚动 - 底部导航与站点 favicon 使用 logo,登录页精简 - API 种子、冠军盘与历史注单增强 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -2,7 +2,7 @@ import { createApp } from 'vue';
|
||||
import { createPinia } from 'pinia';
|
||||
import { createI18n } from 'vue-i18n';
|
||||
import App from './App.vue';
|
||||
import router from './router';
|
||||
import router from './router/index.ts';
|
||||
import './styles.css';
|
||||
|
||||
const i18n = createI18n({
|
||||
@@ -11,22 +11,331 @@ const i18n = createI18n({
|
||||
fallbackLocale: 'en-US',
|
||||
messages: {
|
||||
'zh-CN': {
|
||||
nav: { home: '首页', football: '足球', my_bets: '我的投注', profile: '我的' },
|
||||
auth: { login: '登录', username: '账号', password: '密码' },
|
||||
wallet: { balance: '余额' },
|
||||
bet: { bet_slip: '投注单', stake: '投注金额', place_bet: '确认下注', parlay: '串关' },
|
||||
nav: { home: '主页', bet: '投注', bet_history: '历史投注', wallet: '账单', profile: '我的' },
|
||||
history: {
|
||||
league_default: '足球',
|
||||
stake: '投注 Stake',
|
||||
return: '回报 Return',
|
||||
est_return: '预计回报 Est. Return',
|
||||
parlay_title: '串关 · {n} 场',
|
||||
parlay_league: '串关 Parlay',
|
||||
empty: '暂无投注记录',
|
||||
status_won: 'WON 赢',
|
||||
status_pending: 'PENDING 待定',
|
||||
status_lost: 'LOST 输',
|
||||
status_push: 'PUSH 走盘',
|
||||
},
|
||||
auth: {
|
||||
login: '登录',
|
||||
logout: '退出登录',
|
||||
username: '账号',
|
||||
password: '密码',
|
||||
captcha_placeholder: 'Captcha',
|
||||
captcha_refresh: '点击换一张',
|
||||
captcha_wrong: '验证码错误',
|
||||
},
|
||||
wallet: {
|
||||
balance: '余额',
|
||||
cash_balance: '现金余额',
|
||||
unsettled: '未结算',
|
||||
available: '可用',
|
||||
no_records: '暂无账单记录',
|
||||
},
|
||||
bet: {
|
||||
bet_slip: '投注单',
|
||||
stake: '投注金额',
|
||||
place_bet: '确认下注',
|
||||
place_bet_short: '下注',
|
||||
parlay: '串关',
|
||||
tab_matches: '球赛',
|
||||
tab_outright: '优胜冠军',
|
||||
tab_parlay: '串关投注',
|
||||
tab_today: '今日',
|
||||
tab_early: '早盘',
|
||||
loading: '加载中…',
|
||||
no_matches: '暂无赛事',
|
||||
outright_coming: '优胜冠军玩法即将上线',
|
||||
outright_enter_stake: '请输入投注金额',
|
||||
outright_balance: '结余',
|
||||
outright_stake_amount: '投注额度',
|
||||
outright_success: '下注成功',
|
||||
outright_done: '完毕',
|
||||
outright_bet_failed: '下注失败',
|
||||
no_outright: '暂无冠军盘口',
|
||||
cancel: '取消',
|
||||
parlay_title: '串关投注',
|
||||
parlay_desc: '选择3-10场比赛来创建串关投注。组合赔率相乘可赢得更多!',
|
||||
parlay_filter_all: '全部',
|
||||
parlay_empty: '暂无可用串关赛事',
|
||||
parlay_same_match: '同一场比赛不能串关',
|
||||
parlay_need_more: '请至少选择 2 项进行串关',
|
||||
back: '返回',
|
||||
refresh: '刷新',
|
||||
download: '下载',
|
||||
reward_active: '奖励生效中!',
|
||||
market_closed: '暂未开盘',
|
||||
expand_market: '展开玩法',
|
||||
collapse_market: '收起玩法',
|
||||
market_cs: '波胆',
|
||||
market_ht_cs: '上半场波胆',
|
||||
market_sh_cs: '下半场波胆',
|
||||
market_ft_handicap: '全场 让球',
|
||||
market_ft_ou: '全场 大小',
|
||||
market_ft_1x2: '全场 独赢盘',
|
||||
market_ft_oe: '全场 单/双',
|
||||
market_ht_handicap: '半场 让球',
|
||||
market_ht_ou: '半场 大小',
|
||||
market_ht_1x2: '半场 独赢盘',
|
||||
col_home: '主场',
|
||||
col_draw: '平',
|
||||
col_away: '客场',
|
||||
cs_stake_required: '请至少在一个比分输入投注金额',
|
||||
cs_place_success: '下注成功',
|
||||
cs_place_failed: '下注失败',
|
||||
},
|
||||
profile: {
|
||||
edit: '修改资料',
|
||||
language: '语言',
|
||||
phone: '手机号',
|
||||
email: '邮箱',
|
||||
phone_placeholder: '请输入手机号',
|
||||
email_placeholder: '请输入邮箱',
|
||||
save: '保存',
|
||||
password_optional_hint: '不修改密码可留空',
|
||||
old_password_placeholder: '留空则不修改',
|
||||
new_password_placeholder: '留空则不修改',
|
||||
confirm_password_placeholder: '留空则不修改',
|
||||
old_password: '当前密码',
|
||||
new_password: '新密码',
|
||||
confirm_password: '确认新密码',
|
||||
back: '返回',
|
||||
saved: '联系方式已保存',
|
||||
save_failed: '保存失败',
|
||||
password_changed: '密码已更新',
|
||||
password_failed: '密码修改失败',
|
||||
password_mismatch: '两次新密码不一致',
|
||||
password_incomplete: '修改密码需填写当前密码、新密码及确认密码',
|
||||
},
|
||||
},
|
||||
'en-US': {
|
||||
nav: { home: 'Home', football: 'Football', my_bets: 'My Bets', profile: 'Profile' },
|
||||
auth: { login: 'Login', username: 'Username', password: 'Password' },
|
||||
wallet: { balance: 'Balance' },
|
||||
bet: { bet_slip: 'Bet Slip', stake: 'Stake', place_bet: 'Place Bet', parlay: 'Parlay' },
|
||||
nav: { home: 'Home', bet: 'Bet', bet_history: 'History', wallet: 'Wallet', profile: 'Profile' },
|
||||
history: {
|
||||
league_default: 'Football',
|
||||
stake: 'Stake 投注',
|
||||
return: 'Return 回报',
|
||||
est_return: 'Est. Return 预计回报',
|
||||
parlay_title: 'Parlay · {n} legs',
|
||||
parlay_league: 'Parlay 串关',
|
||||
empty: 'No bets yet',
|
||||
status_won: 'WON 赢',
|
||||
status_pending: 'PENDING 待定',
|
||||
status_lost: 'LOST 输',
|
||||
status_push: 'PUSH 走盘',
|
||||
},
|
||||
auth: {
|
||||
login: 'Login',
|
||||
logout: 'Log out',
|
||||
username: 'Username',
|
||||
password: 'Password',
|
||||
captcha_placeholder: 'Captcha',
|
||||
captcha_refresh: 'Click to refresh',
|
||||
captcha_wrong: 'Invalid captcha',
|
||||
},
|
||||
wallet: {
|
||||
balance: 'Balance',
|
||||
cash_balance: 'Cash Balance',
|
||||
unsettled: 'Unsettled',
|
||||
available: 'Available',
|
||||
no_records: 'No records',
|
||||
},
|
||||
bet: {
|
||||
bet_slip: 'Bet Slip',
|
||||
stake: 'Stake',
|
||||
place_bet: 'Place Bet',
|
||||
place_bet_short: 'Bet',
|
||||
parlay: 'Parlay',
|
||||
tab_matches: 'Matches',
|
||||
tab_outright: 'Outright',
|
||||
tab_parlay: 'Parlay',
|
||||
tab_today: 'Today',
|
||||
tab_early: 'Early',
|
||||
loading: 'Loading…',
|
||||
no_matches: 'No matches',
|
||||
outright_coming: 'Outright markets coming soon',
|
||||
outright_enter_stake: 'Enter stake',
|
||||
outright_balance: 'Balance',
|
||||
outright_stake_amount: 'Stake',
|
||||
outright_success: 'Bet placed',
|
||||
outright_done: 'Done',
|
||||
outright_bet_failed: 'Bet failed',
|
||||
no_outright: 'No outright markets',
|
||||
cancel: 'Cancel',
|
||||
parlay_title: 'Parlay',
|
||||
parlay_desc: 'Pick 3-10 matches. Combined odds multiply your potential win!',
|
||||
parlay_filter_all: 'All',
|
||||
parlay_empty: 'No matches available for parlay betting',
|
||||
parlay_same_match: 'Cannot parlay selections from the same match',
|
||||
parlay_need_more: 'Select at least 2 legs for parlay',
|
||||
back: 'Back',
|
||||
refresh: 'Refresh',
|
||||
download: 'Download',
|
||||
reward_active: 'Reward active!',
|
||||
market_closed: 'Not open',
|
||||
expand_market: 'Expand',
|
||||
collapse_market: 'Collapse',
|
||||
market_cs: 'Correct Score',
|
||||
market_ht_cs: '1H Correct Score',
|
||||
market_sh_cs: '2H Correct Score',
|
||||
market_ft_handicap: 'FT Handicap',
|
||||
market_ft_ou: 'FT O/U',
|
||||
market_ft_1x2: 'FT 1X2',
|
||||
market_ft_oe: 'FT Odd/Even',
|
||||
market_ht_handicap: 'HT Handicap',
|
||||
market_ht_ou: 'HT O/U',
|
||||
market_ht_1x2: 'HT 1X2',
|
||||
col_home: 'Home',
|
||||
col_draw: 'Draw',
|
||||
col_away: 'Away',
|
||||
cs_stake_required: 'Enter stake on at least one score',
|
||||
cs_place_success: 'Bet placed',
|
||||
cs_place_failed: 'Bet failed',
|
||||
},
|
||||
profile: {
|
||||
edit: 'Edit Profile',
|
||||
language: 'Language',
|
||||
phone: 'Phone',
|
||||
email: 'Email',
|
||||
phone_placeholder: 'Phone number',
|
||||
email_placeholder: 'Email address',
|
||||
save: 'Save',
|
||||
password_optional_hint: 'Leave password fields blank to keep current password',
|
||||
old_password_placeholder: 'Leave blank to skip',
|
||||
new_password_placeholder: 'Leave blank to skip',
|
||||
confirm_password_placeholder: 'Leave blank to skip',
|
||||
old_password: 'Current password',
|
||||
new_password: 'New password',
|
||||
confirm_password: 'Confirm password',
|
||||
back: 'Back',
|
||||
saved: 'Contact saved',
|
||||
save_failed: 'Save failed',
|
||||
password_changed: 'Password updated',
|
||||
password_failed: 'Password change failed',
|
||||
password_mismatch: 'Passwords do not match',
|
||||
password_incomplete: 'Fill current, new and confirm password to change password',
|
||||
},
|
||||
},
|
||||
'ms-MY': {
|
||||
nav: { home: 'Laman Utama', football: 'Bola Sepak', my_bets: 'Pertaruhan Saya', profile: 'Profil' },
|
||||
auth: { login: 'Log Masuk', username: 'Nama Pengguna', password: 'Kata Laluan' },
|
||||
wallet: { balance: 'Baki' },
|
||||
bet: { bet_slip: 'Slip Pertaruhan', stake: 'Jumlah', place_bet: 'Letak Pertaruhan', parlay: 'Berganda' },
|
||||
nav: {
|
||||
home: 'Laman Utama',
|
||||
bet: 'Pertaruhan',
|
||||
bet_history: 'Sejarah',
|
||||
wallet: 'Bil',
|
||||
profile: 'Profil',
|
||||
},
|
||||
history: {
|
||||
league_default: 'Bola Sepak',
|
||||
stake: 'Stake 投注',
|
||||
return: 'Return 回报',
|
||||
est_return: 'Est. Return 预计回报',
|
||||
parlay_title: 'Parlay · {n} perlawanan',
|
||||
parlay_league: 'Parlay 串关',
|
||||
empty: 'Tiada rekod pertaruhan',
|
||||
status_won: 'WON 赢',
|
||||
status_pending: 'PENDING 待定',
|
||||
status_lost: 'LOST 输',
|
||||
status_push: 'PUSH 走盘',
|
||||
},
|
||||
auth: {
|
||||
login: 'Log Masuk',
|
||||
logout: 'Log Keluar',
|
||||
username: 'Nama Pengguna',
|
||||
password: 'Kata Laluan',
|
||||
captcha_placeholder: 'Captcha',
|
||||
captcha_refresh: 'Klik untuk muat semula',
|
||||
captcha_wrong: 'Kod pengesahan salah',
|
||||
},
|
||||
wallet: {
|
||||
balance: 'Baki',
|
||||
cash_balance: 'Baki Tunai',
|
||||
unsettled: 'Belum Selesai',
|
||||
available: 'Tersedia',
|
||||
no_records: 'Tiada rekod',
|
||||
},
|
||||
bet: {
|
||||
bet_slip: 'Slip Pertaruhan',
|
||||
stake: 'Jumlah',
|
||||
place_bet: 'Letak Pertaruhan',
|
||||
place_bet_short: 'Pertaruhan',
|
||||
parlay: 'Berganda',
|
||||
tab_matches: 'Perlawanan',
|
||||
tab_outright: 'Juara',
|
||||
tab_parlay: 'Berganda',
|
||||
tab_today: 'Hari Ini',
|
||||
tab_early: 'Awal',
|
||||
loading: 'Memuatkan…',
|
||||
no_matches: 'Tiada perlawanan',
|
||||
outright_coming: 'Pasaran juara akan datang',
|
||||
outright_enter_stake: 'Masukkan jumlah',
|
||||
outright_balance: 'Baki',
|
||||
outright_stake_amount: 'Jumlah pertaruhan',
|
||||
outright_success: 'Pertaruhan berjaya',
|
||||
outright_done: 'Selesai',
|
||||
outright_bet_failed: 'Pertaruhan gagal',
|
||||
no_outright: 'Tiada pasaran juara',
|
||||
cancel: 'Batal',
|
||||
parlay_title: 'Pertaruhan Berganda',
|
||||
parlay_desc: 'Pilih 3-10 perlawanan. Gabungan odds didarab!',
|
||||
parlay_filter_all: 'Semua',
|
||||
parlay_empty: 'No matches available for parlay betting',
|
||||
parlay_same_match: 'Perlawanan sama tidak boleh berganda',
|
||||
parlay_need_more: 'Pilih sekurang-kurangnya 2 pilihan',
|
||||
back: 'Kembali',
|
||||
refresh: 'Muat semula',
|
||||
download: 'Muat turun',
|
||||
reward_active: 'Ganjaran aktif!',
|
||||
market_closed: 'Belum dibuka',
|
||||
expand_market: 'Kembang',
|
||||
collapse_market: 'Tutup',
|
||||
market_cs: 'Skor Tepat',
|
||||
market_ht_cs: 'Skor Tepat PB1',
|
||||
market_sh_cs: 'Skor Tepat PB2',
|
||||
market_ft_handicap: 'Handicap Penuh',
|
||||
market_ft_ou: 'Atas/Bawah Penuh',
|
||||
market_ft_1x2: '1X2 Penuh',
|
||||
market_ft_oe: 'Ganjil/Genap Penuh',
|
||||
market_ht_handicap: 'Handicap Separuh',
|
||||
market_ht_ou: 'Atas/Bawah Separuh',
|
||||
market_ht_1x2: '1X2 Separuh',
|
||||
col_home: 'Home',
|
||||
col_draw: 'Seri',
|
||||
col_away: 'Away',
|
||||
cs_stake_required: 'Masukkan jumlah pada sekurang-kurangnya satu skor',
|
||||
cs_place_success: 'Pertaruhan berjaya',
|
||||
cs_place_failed: 'Pertaruhan gagal',
|
||||
},
|
||||
profile: {
|
||||
edit: 'Edit Profil',
|
||||
language: 'Bahasa',
|
||||
phone: 'Telefon',
|
||||
email: 'E-mel',
|
||||
phone_placeholder: 'Nombor telefon',
|
||||
email_placeholder: 'Alamat e-mel',
|
||||
save: 'Simpan',
|
||||
password_optional_hint: 'Biarkan kosong jika tidak mahu tukar kata laluan',
|
||||
old_password_placeholder: 'Biarkan kosong untuk langkau',
|
||||
new_password_placeholder: 'Biarkan kosong untuk langkau',
|
||||
confirm_password_placeholder: 'Biarkan kosong untuk langkau',
|
||||
old_password: 'Kata laluan semasa',
|
||||
new_password: 'Kata laluan baharu',
|
||||
confirm_password: 'Sahkan kata laluan',
|
||||
back: 'Kembali',
|
||||
saved: 'Hubungan disimpan',
|
||||
save_failed: 'Gagal simpan',
|
||||
password_changed: 'Kata laluan dikemas kini',
|
||||
password_failed: 'Gagal tukar kata laluan',
|
||||
password_mismatch: 'Kata laluan tidak sepadan',
|
||||
password_incomplete: 'Isi kata laluan semasa, baharu dan pengesahan untuk menukar',
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user