feat(admin,player,api): 优胜冠军通用管理与界面精简

管理端新增冠军盘列表/编辑、展开懒加载与 ECharts 修复;各列表页去掉重复标题。玩家端支持多赛事冠军盘、分批加载与语言切换刷新。API 扩展 outright CRUD 与列表性能优化。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-04 09:17:01 +08:00
parent 9b63d67e7c
commit 27580b2479
39 changed files with 2250 additions and 578 deletions

View File

@@ -1,82 +1,162 @@
/** 球队 code / 名称 → ISO 3166-1 alpha-2用于 flagcdn 国旗图 */
/** 球队 code / 名称 → ISO 3166-1flagcdn.com含世界杯 48 强 */
const CODE_TO_ISO: Record<string, string> = {
MEX: 'mx',
USA: 'us',
CAN: 'ca',
BRA: 'br',
ARG: 'ar',
ENG: 'gb',
MUN: 'gb',
CHE: 'gb',
LIV: 'gb',
MCI: 'gb',
CZE: 'cz',
KOR: 'kr',
BIH: 'ba',
PAR: 'py',
RSA: 'za',
SUI: 'ch',
SCO: 'gb-sct',
TUR: 'tr',
CZE: 'cz',
BIH: 'ba',
// 世界杯 2026 48 强
FRA: 'fr',
ESP: 'es',
ENG: 'gb',
GER: 'de',
ENG: 'gb-eng',
BRA: 'br',
ARG: 'ar',
POR: 'pt',
GER: 'de',
NED: 'nl',
NOR: 'no',
BEL: 'be',
COL: 'co',
JPN: 'jp',
URU: 'uy',
USA: 'us',
MAR: 'ma',
CRO: 'hr',
MEX: 'mx',
SUI: 'ch',
TUR: 'tr',
SEN: 'sn',
KOR: 'kr',
AUT: 'at',
ECU: 'ec',
SWE: 'se',
IRN: 'ir',
GHA: 'gh',
ALG: 'dz',
BIH: 'ba',
EGY: 'eg',
TUN: 'tn',
CAN: 'ca',
PAN: 'pa',
AUS: 'au',
CZE: 'cz',
KSA: 'sa',
NZL: 'nz',
COD: 'cd',
UZB: 'uz',
IRQ: 'iq',
RSA: 'za',
CIV: 'ci',
JOR: 'jo',
PAR: 'py',
HAI: 'ht',
QAT: 'qa',
CPV: 'cv',
CUW: 'cw',
SCO: 'gb-sct',
// 俱乐部 / 演示联赛
MUN: 'gb',
CHE: 'gb',
LIV: 'gb',
MCI: 'gb',
};
const NAME_TO_ISO: Record<string, string> = {
Mexico: 'mx',
'South Africa': 'za',
'United States': 'us',
USA: 'us',
Canada: 'ca',
France: 'fr',
Spain: 'es',
England: 'gb-eng',
Brazil: 'br',
Argentina: 'ar',
Portugal: 'pt',
Germany: 'de',
Netherlands: 'nl',
Norway: 'no',
Belgium: 'be',
Colombia: 'co',
Japan: 'jp',
Uruguay: 'uy',
USA: 'us',
'United States': 'us',
Morocco: 'ma',
Croatia: 'hr',
Mexico: 'mx',
Switzerland: 'ch',
Scotland: 'gb-sct',
Turkey: 'tr',
Senegal: 'sn',
'South Korea': 'kr',
Austria: 'at',
Ecuador: 'ec',
Sweden: 'se',
Iran: 'ir',
Ghana: 'gh',
Algeria: 'dz',
Bosnia: 'ba',
Egypt: 'eg',
Tunisia: 'tn',
Canada: 'ca',
Panama: 'pa',
Australia: 'au',
Czech: 'cz',
'Czech Republic': 'cz',
'Saudi Arabia': 'sa',
'New Zealand': 'nz',
'DR Congo': 'cd',
Uzbekistan: 'uz',
Iraq: 'iq',
'South Africa': 'za',
'Ivory Coast': 'ci',
Jordan: 'jo',
Paraguay: 'py',
西: 'mx',
: 'us',
: 'ca',
: 'gb',
西: 'gb',
西: 'mx',
: 'za',
: 'cz',
: 'kr',
: 'ba',
: 'py',
: 'ch',
西: 'br',
: 'gb-sct',
: 'tr',
: 'fr',
: 'ar',
Haiti: 'ht',
Qatar: 'qa',
'Cape Verde': 'cv',
Curacao: 'cw',
Scotland: 'gb-sct',
: 'fr',
西: 'es',
: 'gb',
: 'de',
: 'gb-eng',
西: 'br',
: 'ar',
: 'pt',
: 'de',
: 'nl',
: 'no',
: 'be',
: 'co',
: 'jp',
: 'uy',
: 'us',
: 'ma',
: 'hr',
西: 'mx',
: 'ch',
: 'tr',
: 'sn',
: 'kr',
: 'at',
: 'ec',
: 'se',
: 'ir',
: 'gh',
: 'dz',
: 'ba',
: 'eg',
: 'tn',
: 'ca',
: 'pa',
: 'au',
: 'cz',
: 'sa',
西: 'nz',
'刚果(金)': 'cd',
: 'uz',
: 'iq',
: 'za',
: 'ci',
: 'jo',
: 'py',
: 'ht',
: 'qa',
: 'cv',
: 'cw',
: 'gb-sct',
: 'gb',
西: 'gb',
};
export function teamFlagUrl(code?: string, name?: string): string {