feat(admin,api,player): 优胜赛配置、赛事管理重构与玩家端投注体验优化
管理端拆分赛事/优胜赛 Tab,新增联赛优胜赔率面板(批量、排序、外侧删除);统一 list-chrome 工具栏对齐与列表页布局;Dashboard 失败重试、Users 操作下拉、小屏侧栏等体验修复。 API 扩展优胜赛与赛事目录接口,完善投注与钱包查询;玩家端重构赛事卡片、串关面板、注单/钱包页,新增注单详情、下注成功动画与下拉刷新。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -60,6 +60,7 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'user.btn.hide_password': 'Sembunyi',
|
||||
'user.ph.reset_password': 'Biarkan kosong untuk kekalkan; nilai baharu boleh dilihat',
|
||||
'user.ph.reset_password_short': 'Biarkan kosong',
|
||||
'user.page_settings': 'Tetapan global',
|
||||
'user.global_settings': 'Kata laluan & akaun (global)',
|
||||
'user.global_settings_hint': 'Kawal sama ada semua pemain boleh ubah kata laluan/nama akaun dalam app',
|
||||
'user.section.password_mgmt': 'Pengurusan kata laluan',
|
||||
@@ -128,6 +129,7 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'match.btn.markets': 'Pasaran',
|
||||
'match.filter.keyword_ph': 'Nama kejohanan / kod pasukan',
|
||||
'match.col.league': 'Kejohanan',
|
||||
'match.col.league_en': 'Liga (EN)',
|
||||
'match.col.fixture_count': 'Perlawanan',
|
||||
'match.col.bet_count': 'Pertaruhan',
|
||||
'match.col.total_stake': 'Jumlah stake',
|
||||
@@ -148,6 +150,8 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'match.field.lang_en': 'EN',
|
||||
'match.field.lang_ms': 'MS',
|
||||
'match.field.kickoff': 'Masa mula',
|
||||
'match.field.home_team': 'Pasukan tuan rumah',
|
||||
'match.field.away_team': 'Pasukan pelawat',
|
||||
'match.field.home_en': 'Tuan rumah (EN)',
|
||||
'match.field.home_zh': 'Tuan rumah (ZH)',
|
||||
'match.field.home_ms': 'Tuan rumah (MS)',
|
||||
@@ -158,7 +162,14 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'match.hint.create_draft': 'Disimpan sebagai draf; kembangkan kejohanan dan terbitkan setiap perlawanan tunggal.',
|
||||
'match.hint.create_league': 'Cipta kejohanan dahulu, kemudian kembangkan untuk tambah perlawanan tunggal.',
|
||||
'match.hint.edit_published': 'Diterbitkan: edit masa mula, pilihan utama, nama paparan; tertutup/selesai dikunci.',
|
||||
'match.expand_league_hint': 'Kembangkan kejohanan untuk senarai perlawanan; klik Pasaran untuk halaman tetapan odds (sama seperti aplikasi pemain).',
|
||||
'match.expand_league_hint': 'Kembangkan liga untuk urus perlawanan; odds juara di tab Odds juara.',
|
||||
'match.expand_outright_hint': 'Kembangkan liga untuk sunting odds juara; pasukan perlawanan disegerakkan auto, boleh tambah pasukan belum dijadualkan.',
|
||||
'outright.odds_only_hint': 'Pasukan daripada perlawanan disegerakkan auto; boleh tambah pasukan manual dan sunting odds di sini.',
|
||||
'outright.col.teams_from_fixtures': 'Pasukan (daripada perlawanan)',
|
||||
'outright.col.teams_total': 'Pasukan odds juara',
|
||||
'outright.empty_no_teams': 'Tiada pasukan — tambah perlawanan di Konfigurasi atau klik Tambah pasukan.',
|
||||
'match.outright.setup': 'Sediakan',
|
||||
'match.outright.section_hint': 'Pasaran juara untuk liga ini; perlawanan disenaraikan di bawah',
|
||||
'match.expand_markets_hint': 'Klik Pasaran pada perlawanan tunggal untuk halaman pasaran berasingan.',
|
||||
'match.no_fixtures': 'Tiada perlawanan tunggal di bawah kejohanan ini.',
|
||||
'match.ph.league_ms': 'Piala Dunia 2027',
|
||||
@@ -173,6 +184,7 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'bet.col.agent': 'Ejen',
|
||||
'bet.col.selection': 'Pilihan',
|
||||
'bet.col.content': 'Kandungan taruhan',
|
||||
'bet.content.bet_counts': '{singles} tunggal · {parlays} parlay',
|
||||
'bet.col.match': 'Perlawanan',
|
||||
'bet.legs_more': '+{n} lagi…',
|
||||
'bet.col.selection_count': 'Bil. pilihan',
|
||||
@@ -319,6 +331,8 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'err.password_mismatch': 'Kata laluan tidak sepadan',
|
||||
'err.credit_negative': 'Had kredit tidak boleh negatif',
|
||||
'err.kickoff_required': 'Sila isi masa mula',
|
||||
'err.team_country_required': 'Pilih pasukan tuan rumah dan pelawat',
|
||||
'err.team_country_required': 'Pilih pasukan tuan rumah dan pelawat',
|
||||
'err.teams_required': 'Isi nama pasukan tuan rumah dan pelawat (ZH atau EN)',
|
||||
'err.teams_same': 'Pasukan tuan rumah dan pelawat mesti berbeza',
|
||||
'err.league_required': 'Sila isi nama liga',
|
||||
@@ -485,6 +499,37 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'outright.field.title_en': 'Tajuk (EN)',
|
||||
'outright.field.title_ms': 'Tajuk (MS)',
|
||||
'outright.btn.create_event': 'Acara juara baharu',
|
||||
'outright.fixtures_sync_hint': 'Pasukan daripada perlawanan liga; hanya laraskan odds dan status terbit.',
|
||||
'outright.empty_no_fixtures': 'Tiada perlawanan dalam liga ini — tambah di Konfigurasi perlawanan dahulu.',
|
||||
'outright.btn.add_team': 'Tambah pasukan',
|
||||
'outright.add.filter_fixture': 'Pasukan sedia ada',
|
||||
'outright.add.filter_all': 'Semua terbina dalam',
|
||||
'outright.add.select_all': 'Pilih semua',
|
||||
'outright.add.clear_selection': 'Kosongkan pilihan',
|
||||
'outright.add.selected_count': '{n} dipilih',
|
||||
'outright.add.empty_fixture': 'Tiada pasukan perlawanan untuk ditambah (pasukan dalam perlawanan tetapi belum dalam pasaran juara)',
|
||||
'outright.add.empty_all': 'Semua pasukan terbina dalam sudah dalam pasaran juara',
|
||||
'outright.add.default_odds': 'Odds lalai',
|
||||
'outright.add.search_ph': 'Cari nama atau kod',
|
||||
'outright.add.err_none': 'Sila pilih sekurang-kurangnya satu pasukan',
|
||||
'outright.batch.mode': 'Urus kelompok',
|
||||
'outright.batch.exit': 'Keluar kelompok',
|
||||
'outright.batch.apply_odds': 'Guna odds',
|
||||
'outright.batch.remove': 'Buang terpilih',
|
||||
'outright.batch.confirm_remove': 'Buang {n} pasukan terpilih?',
|
||||
'outright.batch.err_none': 'Sila pilih pasukan dahulu',
|
||||
'outright.batch.apply_ok': 'Odds {n} pasukan dikemas kini — simpan semua odds',
|
||||
'outright.batch.remove_ok': '{n} pasukan dibuang',
|
||||
'outright.batch.remove_partial': '{ok} berjaya, {fail} gagal',
|
||||
'outright.sort.label': 'Susun',
|
||||
'outright.sort.rank': 'Kedudukan',
|
||||
'outright.sort.name': 'Nama pasukan',
|
||||
'outright.sort.code': 'Kod',
|
||||
'outright.sort.odds': 'Odds (semasa)',
|
||||
'outright.sort.saved_odds': 'Odds (disimpan)',
|
||||
'outright.sort.asc': 'Menaik',
|
||||
'outright.sort.desc': 'Menurun',
|
||||
'msg.outright_teams_added': '{n} pasukan ditambah ({skipped} dilangkau)',
|
||||
'msg.load_matches_failed': 'Gagal memuatkan perlawanan',
|
||||
'msg.cashback_issued': 'Rebat telah dikeluarkan',
|
||||
'msg.freeze_confirm_title': '{action} akaun',
|
||||
|
||||
Reference in New Issue
Block a user