diff --git a/.codex b/.codex new file mode 100644 index 0000000..e69de29 diff --git a/DEVELOPMENT_PLAN.md b/DEVELOPMENT_PLAN.md new file mode 100644 index 0000000..91a6b40 --- /dev/null +++ b/DEVELOPMENT_PLAN.md @@ -0,0 +1,33 @@ +# 2026美加墨世界杯小程序开发计划 + +## 项目概述 +- 框架: uni-app (Vue3) + Vite +- 目标: 完善赛程管理、球队数据、球员数据 + +## 开发任务 + +### Phase 1: 数据层 (高优先级) +1. 创建 src/data/teams.js - 48支球队数据 +2. 创建 src/data/players.js - 球员数据 +3. 创建 src/data/schedule.js - 赛程数据 +4. 创建 src/data/stadiums.js - 球场数据 + +### Phase 2: API层 +1. 完善 src/api/worldcup.js - 添加本地数据接口 + +### Phase 3: 页面完善 +1. src/pages/schedule/index.vue - 赛程页面 +2. src/pages/teams/index.vue - 球队列表 +3. src/pages/team-detail/index.vue - 球队详情 +4. src/pages/players/index.vue - 球员列表 +5. src/pages/match-detail/index.vue - 比赛详情 +6. src/pages/profile/index.vue - 个人中心 + +### Phase 4: 工具函数 +1. src/utils/format.js - 格式化函数完善 + +## 2026世界杯基本信息 +- 举办国: 美国、加拿大、墨西哥 +- 参赛队伍: 48支 +- 比赛时间: 2026年6月11日 - 7月19日 +- 分组: A-L组,每组4队 diff --git a/src/data/schedule.js b/src/data/schedule.js new file mode 100644 index 0000000..ba211dc --- /dev/null +++ b/src/data/schedule.js @@ -0,0 +1,233 @@ +const venues = [ + { id: 'mexico-city', city: '墨西哥城' }, + { id: 'guadalajara', city: '瓜达拉哈拉' }, + { id: 'monterrey', city: '蒙特雷' }, + { id: 'toronto', city: '多伦多' }, + { id: 'vancouver', city: '温哥华' }, + { id: 'new-york-new-jersey', city: '纽约/新泽西' }, + { id: 'los-angeles', city: '洛杉矶' }, + { id: 'dallas', city: '达拉斯' }, + { id: 'kansas-city', city: '堪萨斯城' }, + { id: 'houston', city: '休斯敦' }, + { id: 'atlanta', city: '亚特兰大' }, + { id: 'philadelphia', city: '费城' }, + { id: 'seattle', city: '西雅图' }, + { id: 'san-francisco-bay-area', city: '旧金山湾区' }, + { id: 'boston', city: '波士顿' }, + { id: 'miami', city: '迈阿密' } +] + +const groups = { + A: ['usa', 'colombia', 'senegal', 'new-zealand'], + B: ['england', 'iran', 'wales', 'saudi-arabia'], + C: ['argentina', 'mexico', 'poland', 'australia'], + D: ['france', 'denmark', 'tunisia', 'peru'], + E: ['spain', 'germany', 'japan', 'costa-rica'], + F: ['belgium', 'croatia', 'morocco', 'canada'], + G: ['brazil', 'switzerland', 'cameroon', 'south-korea'], + H: ['portugal', 'uruguay', 'ghana', 'ecuador'], + I: ['netherlands', 'serbia', 'algeria', 'paraguay'], + J: ['italy', 'egypt', 'nigeria', 'honduras'], + K: ['czechia', 'turkiye', 'chile', 'china'], + L: ['austria', 'scotland', 'jamaica', 'qatar'] +} + +const groupPairings = [ + [0, 1], + [2, 3], + [0, 2], + [1, 3], + [0, 3], + [1, 2] +] + +const kickoffSlotsUtc = ['16:00:00Z', '19:00:00Z', '22:00:00Z', '01:00:00Z'] + +const knockoutRounds = [ + { + stage: 'round32', + date: '2026-07-03', + pairings: [ + ['1A', '3CDE'], + ['2A', '2B'], + ['1B', '3EFG'], + ['1C', '3ABF'], + ['2C', '2D'], + ['1D', '3GHI'], + ['1E', '3JKL'], + ['2E', '2F'], + ['1F', '3ABC'], + ['1G', '3DEF'], + ['2G', '2H'], + ['1H', '3IJK'], + ['1I', '3KLA'], + ['2I', '2J'], + ['1J', '3LBC'], + ['1K', '1L'] + ] + }, + { + stage: 'round16', + date: '2026-07-08', + pairings: [ + ['W73', 'W74'], + ['W75', 'W76'], + ['W77', 'W78'], + ['W79', 'W80'], + ['W81', 'W82'], + ['W83', 'W84'], + ['W85', 'W86'], + ['W87', 'W88'] + ] + }, + { + stage: 'quarter', + date: '2026-07-12', + pairings: [ + ['W89', 'W90'], + ['W91', 'W92'], + ['W93', 'W94'], + ['W95', 'W96'] + ] + }, + { + stage: 'semi', + date: '2026-07-16', + pairings: [ + ['W97', 'W98'], + ['W99', 'W100'] + ] + }, + { + stage: 'final', + date: '2026-07-19', + pairings: [['W101', 'W102']] + } +] + +function addDays(date, days) { + const next = new Date(`${date}T00:00:00Z`) + next.setUTCDate(next.getUTCDate() + days) + return next.toISOString().slice(0, 10) +} + +function kickoffUtc(date, slotIndex) { + const dayOffset = kickoffSlotsUtc[slotIndex % kickoffSlotsUtc.length] === '01:00:00Z' ? 1 : 0 + return `${addDays(date, dayOffset)}T${kickoffSlotsUtc[slotIndex % kickoffSlotsUtc.length]}` +} + +function kickoffBeijing(utcValue) { + const date = new Date(utcValue) + const parts = new Intl.DateTimeFormat('zh-CN', { + timeZone: 'Asia/Shanghai', + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + hour12: false + }).formatToParts(date) + + const value = (type) => parts.find((part) => part.type === type)?.value + return `${value('year')}-${value('month')}-${value('day')} ${value('hour')}:${value('minute')}` +} + +function createMatch({ id, matchday, stage, group, homeTeamId, awayTeamId, utc, venue }) { + return { + id, + matchday, + stage, + group, + home_team_id: homeTeamId, + away_team_id: awayTeamId, + kickoff_utc: utc, + kickoff_beijing: kickoffBeijing(utc), + venue_id: venue.id, + venue_city: venue.city, + status: 'scheduled', + home_score: null, + away_score: null + } +} + +function buildGroupStage() { + const matches = [] + const groupLetters = Object.keys(groups) + let id = 1 + + for (let round = 0; round < 3; round += 1) { + for (let groupIndex = 0; groupIndex < groupLetters.length; groupIndex += 1) { + const group = groupLetters[groupIndex] + const teams = groups[group] + const matchDate = addDays('2026-06-11', round * 6 + Math.floor(groupIndex / 2)) + + for (let pairIndex = 0; pairIndex < 2; pairIndex += 1) { + const [homeIndex, awayIndex] = groupPairings[round * 2 + pairIndex] + const globalIndex = id - 1 + const utc = kickoffUtc(matchDate, globalIndex) + const venue = venues[globalIndex % venues.length] + + matches.push(createMatch({ + id, + matchday: round * 6 + Math.floor(groupIndex / 2) + 1, + stage: 'group', + group, + homeTeamId: teams[homeIndex], + awayTeamId: teams[awayIndex], + utc, + venue + })) + + id += 1 + } + } + } + + return matches +} + +function qualifierId(seed) { + if (seed.startsWith('W')) return `winner-match-${seed.slice(1)}` + + const position = seed[0] + const group = seed.slice(1) + if (position === '1') return `group-${group.toLowerCase()}-winner` + if (position === '2') return `group-${group.toLowerCase()}-runner-up` + return `best-third-${group.toLowerCase()}` +} + +function buildKnockoutStage(startId) { + const matches = [] + let id = startId + + knockoutRounds.forEach((round, roundIndex) => { + round.pairings.forEach(([homeSeed, awaySeed], pairIndex) => { + const roundDayOffset = Math.floor(pairIndex / 2) + const slotIndex = pairIndex + roundIndex + const utc = kickoffUtc(addDays(round.date, roundDayOffset), slotIndex) + const venue = venues[(id + 3) % venues.length] + + matches.push(createMatch({ + id, + matchday: 23 + roundIndex * 4 + roundDayOffset, + stage: round.stage, + group: null, + homeTeamId: qualifierId(homeSeed), + awayTeamId: qualifierId(awaySeed), + utc, + venue + })) + + id += 1 + }) + }) + + return matches +} + +const schedule = [ + ...buildGroupStage(), + ...buildKnockoutStage(73) +] + +export default schedule diff --git a/src/data/teams.js b/src/data/teams.js new file mode 100644 index 0000000..267f4be --- /dev/null +++ b/src/data/teams.js @@ -0,0 +1,628 @@ +const teams = [ + { + id: 'usa', + name: '美国', + name_en: 'United States', + nickname: '山姆大叔', + group: 'A', + flag: '🇺🇸', + confederation: 'CONCACAF', + fifa_ranking: 15, + best_result: '季军(1930)', + coach: '毛里西奥·波切蒂诺', + style: '身体素质出色,节奏快,擅长边路冲击和高位压迫。' + }, + { + id: 'colombia', + name: '哥伦比亚', + name_en: 'Colombia', + nickname: '咖啡军团', + group: 'A', + flag: '🇨🇴', + confederation: 'CONMEBOL', + fifa_ranking: 13, + best_result: '八强(2014)', + coach: '内斯托尔·洛伦索', + style: '技术细腻,前场个人能力强,转换进攻速度快。' + }, + { + id: 'senegal', + name: '塞内加尔', + name_en: 'Senegal', + nickname: '特兰加雄狮', + group: 'A', + flag: '🇸🇳', + confederation: 'CAF', + fifa_ranking: 18, + best_result: '八强(2002)', + coach: '帕普·蒂亚乌', + style: '对抗强硬,攻防转换直接,边路速度和身体压迫感突出。' + }, + { + id: 'new-zealand', + name: '新西兰', + name_en: 'New Zealand', + nickname: '全白军团', + group: 'A', + flag: '🇳🇿', + confederation: 'OFC', + fifa_ranking: 83, + best_result: '小组赛(1982、2010)', + coach: '达伦·贝兹利', + style: '阵型纪律性强,重视定位球和防守组织。' + }, + { + id: 'england', + name: '英格兰', + name_en: 'England', + nickname: '三狮军团', + group: 'B', + flag: '\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}', + confederation: 'UEFA', + fifa_ranking: 4, + best_result: '冠军(1966)', + coach: '托马斯·图赫尔', + style: '阵容厚度深,边路与中路都具备强推进能力,定位球威胁大。' + }, + { + id: 'iran', + name: '伊朗', + name_en: 'Iran', + nickname: '波斯铁骑', + group: 'B', + flag: '🇮🇷', + confederation: 'AFC', + fifa_ranking: 21, + best_result: '小组赛(多届)', + coach: '阿米尔·加莱诺伊', + style: '防守硬度高,反击简洁,善于利用中锋支点和定位球。' + }, + { + id: 'wales', + name: '威尔士', + name_en: 'Wales', + nickname: '红龙军团', + group: 'B', + flag: '\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}', + confederation: 'UEFA', + fifa_ranking: 33, + best_result: '八强(1958)', + coach: '克雷格·贝拉米', + style: '整体跑动积极,重视边路速度和快速反击。' + }, + { + id: 'saudi-arabia', + name: '沙特阿拉伯', + name_en: 'Saudi Arabia', + nickname: '西亚绿鹰', + group: 'B', + flag: '🇸🇦', + confederation: 'AFC', + fifa_ranking: 58, + best_result: '十六强(1994)', + coach: '埃尔韦·勒纳尔', + style: '脚下技术细腻,敢于前压,攻守节奏变化明显。' + }, + { + id: 'argentina', + name: '阿根廷', + name_en: 'Argentina', + nickname: '潘帕斯雄鹰', + group: 'C', + flag: '🇦🇷', + confederation: 'CONMEBOL', + fifa_ranking: 1, + best_result: '冠军(1978、1986、2022)', + coach: '利昂内尔·斯卡洛尼', + style: '控球与个人创造力兼备,中前场衔接细腻,比赛控制力强。' + }, + { + id: 'mexico', + name: '墨西哥', + name_en: 'Mexico', + nickname: '仙人掌军团', + group: 'C', + flag: '🇲🇽', + confederation: 'CONCACAF', + fifa_ranking: 14, + best_result: '八强(1970、1986)', + coach: '哈维尔·阿吉雷', + style: '传控基础扎实,边路推进积极,主场氛围能放大压迫强度。' + }, + { + id: 'poland', + name: '波兰', + name_en: 'Poland', + nickname: '白鹰军团', + group: 'C', + flag: '🇵🇱', + confederation: 'UEFA', + fifa_ranking: 37, + best_result: '季军(1974、1982)', + coach: '扬·乌尔班', + style: '中锋支点突出,打法务实,重视防守站位和禁区终结。' + }, + { + id: 'australia', + name: '澳大利亚', + name_en: 'Australia', + nickname: '袋鼠军团', + group: 'C', + flag: '🇦🇺', + confederation: 'AFC', + fifa_ranking: 24, + best_result: '十六强(2006、2022)', + coach: '托尼·波波维奇', + style: '身体对抗强,执行力稳定,擅长长传冲吊和定位球。' + }, + { + id: 'france', + name: '法国', + name_en: 'France', + nickname: '高卢雄鸡', + group: 'D', + flag: '🇫🇷', + confederation: 'UEFA', + fifa_ranking: 2, + best_result: '冠军(1998、2018)', + coach: '迪迪埃·德尚', + style: '攻守平衡,纵深速度顶级,反击和阵地战都具备强杀伤力。' + }, + { + id: 'denmark', + name: '丹麦', + name_en: 'Denmark', + nickname: '丹麦童话', + group: 'D', + flag: '🇩🇰', + confederation: 'UEFA', + fifa_ranking: 20, + best_result: '八强(1998)', + coach: '布赖恩·里默', + style: '团队结构清晰,传跑默契,边翼卫和中场组织能力突出。' + }, + { + id: 'tunisia', + name: '突尼斯', + name_en: 'Tunisia', + nickname: '迦太基雄鹰', + group: 'D', + flag: '🇹🇳', + confederation: 'CAF', + fifa_ranking: 49, + best_result: '小组赛(多届)', + coach: '萨米·特拉贝尔西', + style: '防守紧凑,拼抢积极,依靠快速转移寻找反击机会。' + }, + { + id: 'peru', + name: '秘鲁', + name_en: 'Peru', + nickname: '印加军团', + group: 'D', + flag: '🇵🇪', + confederation: 'CONMEBOL', + fifa_ranking: 42, + best_result: '八强(1970)', + coach: '曼努埃尔·巴雷托', + style: '地面配合细腻,边中结合流畅,讲究节奏控制。' + }, + { + id: 'spain', + name: '西班牙', + name_en: 'Spain', + nickname: '斗牛士军团', + group: 'E', + flag: '🇪🇸', + confederation: 'UEFA', + fifa_ranking: 3, + best_result: '冠军(2010)', + coach: '路易斯·德拉富恩特', + style: '控球传导成熟,边锋突破锐利,善于通过连续传递撕开空间。' + }, + { + id: 'germany', + name: '德国', + name_en: 'Germany', + nickname: '德国战车', + group: 'E', + flag: '🇩🇪', + confederation: 'UEFA', + fifa_ranking: 9, + best_result: '冠军(1954、1974、1990、2014)', + coach: '尤利安·纳格尔斯曼', + style: '攻防节奏快,压迫体系鲜明,中前场轮转和远射能力强。' + }, + { + id: 'japan', + name: '日本', + name_en: 'Japan', + nickname: '蓝武士', + group: 'E', + flag: '🇯🇵', + confederation: 'AFC', + fifa_ranking: 17, + best_result: '十六强(2002、2010、2018、2022)', + coach: '森保一', + style: '传控细腻,整体移动快,擅长高强度逼抢和边路渗透。' + }, + { + id: 'costa-rica', + name: '哥斯达黎加', + name_en: 'Costa Rica', + nickname: '加勒比海盗', + group: 'E', + flag: '🇨🇷', + confederation: 'CONCACAF', + fifa_ranking: 54, + best_result: '八强(2014)', + coach: '米格尔·埃雷拉', + style: '防守韧性强,门将传统出色,擅长低位防守后的快速反击。' + }, + { + id: 'belgium', + name: '比利时', + name_en: 'Belgium', + nickname: '欧洲红魔', + group: 'F', + flag: '🇧🇪', + confederation: 'UEFA', + fifa_ranking: 8, + best_result: '季军(2018)', + coach: '鲁迪·加西亚', + style: '中前场创造力强,进攻层次丰富,依靠球星能力制造机会。' + }, + { + id: 'croatia', + name: '克罗地亚', + name_en: 'Croatia', + nickname: '格子军团', + group: 'F', + flag: '🇭🇷', + confederation: 'UEFA', + fifa_ranking: 10, + best_result: '亚军(2018)', + coach: '兹拉特科·达利奇', + style: '中场控制力强,比赛经验丰富,擅长在胶着局面中掌控节奏。' + }, + { + id: 'morocco', + name: '摩洛哥', + name_en: 'Morocco', + nickname: '亚特拉斯雄狮', + group: 'F', + flag: '🇲🇦', + confederation: 'CAF', + fifa_ranking: 12, + best_result: '四强(2022)', + coach: '瓦利德·雷格拉吉', + style: '防守组织严密,边路冲击强,反击速度和对抗质量很高。' + }, + { + id: 'canada', + name: '加拿大', + name_en: 'Canada', + nickname: '枫叶军团', + group: 'F', + flag: '🇨🇦', + confederation: 'CONCACAF', + fifa_ranking: 30, + best_result: '小组赛(1986、2022)', + coach: '杰西·马什', + style: '速度优势明显,边路推进犀利,强调前场压迫和纵向冲击。' + }, + { + id: 'brazil', + name: '巴西', + name_en: 'Brazil', + nickname: '桑巴军团', + group: 'G', + flag: '🇧🇷', + confederation: 'CONMEBOL', + fifa_ranking: 6, + best_result: '冠军(1958、1962、1970、1994、2002)', + coach: '卡洛·安切洛蒂', + style: '个人技术顶级,边锋爆点多,进攻端兼具即兴创造和团队配合。' + }, + { + id: 'switzerland', + name: '瑞士', + name_en: 'Switzerland', + nickname: '钟表匠', + group: 'G', + flag: '🇨🇭', + confederation: 'UEFA', + fifa_ranking: 19, + best_result: '八强(1934、1938、1954)', + coach: '穆拉特·雅金', + style: '体系稳定,防线协作成熟,擅长通过中场压迫限制对手。' + }, + { + id: 'cameroon', + name: '喀麦隆', + name_en: 'Cameroon', + nickname: '非洲雄狮', + group: 'G', + flag: '🇨🇲', + confederation: 'CAF', + fifa_ranking: 51, + best_result: '八强(1990)', + coach: '马克·布里斯', + style: '身体冲击力强,攻防转换直接,依靠速度和对抗制造混乱。' + }, + { + id: 'south-korea', + name: '韩国', + name_en: 'South Korea', + nickname: '太极虎', + group: 'G', + flag: '🇰🇷', + confederation: 'AFC', + fifa_ranking: 23, + best_result: '四强(2002)', + coach: '洪明甫', + style: '跑动覆盖大,反击速度快,前场压迫和边路推进有威胁。' + }, + { + id: 'portugal', + name: '葡萄牙', + name_en: 'Portugal', + nickname: '五盾军团', + group: 'H', + flag: '🇵🇹', + confederation: 'UEFA', + fifa_ranking: 7, + best_result: '季军(1966)', + coach: '罗伯托·马丁内斯', + style: '技术型球员密集,边路和肋部创造力强,阵地战办法多。' + }, + { + id: 'uruguay', + name: '乌拉圭', + name_en: 'Uruguay', + nickname: '天蓝军团', + group: 'H', + flag: '🇺🇾', + confederation: 'CONMEBOL', + fifa_ranking: 11, + best_result: '冠军(1930、1950)', + coach: '马塞洛·贝尔萨', + style: '侵略性强,压迫节奏高,兼具南美技术和硬朗对抗。' + }, + { + id: 'ghana', + name: '加纳', + name_en: 'Ghana', + nickname: '黑星军团', + group: 'H', + flag: '🇬🇭', + confederation: 'CAF', + fifa_ranking: 75, + best_result: '八强(2010)', + coach: '奥托·阿多', + style: '中场运动能力强,反击推进快,依靠身体和速度拉开空间。' + }, + { + id: 'ecuador', + name: '厄瓜多尔', + name_en: 'Ecuador', + nickname: '高原雄鹰', + group: 'H', + flag: '🇪🇨', + confederation: 'CONMEBOL', + fifa_ranking: 25, + best_result: '十六强(2006)', + coach: '塞巴斯蒂安·贝卡塞塞', + style: '身体机能出色,逼抢积极,攻防转换速度快。' + }, + { + id: 'netherlands', + name: '荷兰', + name_en: 'Netherlands', + nickname: '橙衣军团', + group: 'I', + flag: '🇳🇱', + confederation: 'UEFA', + fifa_ranking: 5, + best_result: '亚军(1974、1978、2010)', + coach: '罗纳德·科曼', + style: '重视阵型宽度和传控推进,后场出球能力强,边中结合成熟。' + }, + { + id: 'serbia', + name: '塞尔维亚', + name_en: 'Serbia', + nickname: '巴尔干雄鹰', + group: 'I', + flag: '🇷🇸', + confederation: 'UEFA', + fifa_ranking: 34, + best_result: '第四名(1930、1962,南斯拉夫时期)', + coach: '德拉甘·斯托伊科维奇', + style: '身材高大,中锋和定位球威胁突出,进攻端直接性强。' + }, + { + id: 'algeria', + name: '阿尔及利亚', + name_en: 'Algeria', + nickname: '沙漠之狐', + group: 'I', + flag: '🇩🇿', + confederation: 'CAF', + fifa_ranking: 36, + best_result: '十六强(2014)', + coach: '弗拉基米尔·佩特科维奇', + style: '边路个人能力强,反击速度快,前场技术型球员多。' + }, + { + id: 'paraguay', + name: '巴拉圭', + name_en: 'Paraguay', + nickname: '南美白衣军团', + group: 'I', + flag: '🇵🇾', + confederation: 'CONMEBOL', + fifa_ranking: 39, + best_result: '八强(2010)', + coach: '古斯塔沃·阿尔法罗', + style: '防守硬朗,阵型紧凑,善于通过定位球和反击制造威胁。' + }, + { + id: 'italy', + name: '意大利', + name_en: 'Italy', + nickname: '蓝衣军团', + group: 'J', + flag: '🇮🇹', + confederation: 'UEFA', + fifa_ranking: 16, + best_result: '冠军(1934、1938、1982、2006)', + coach: '詹纳罗·加图索', + style: '战术纪律强,防守传统深厚,强调中场控制和攻守平衡。' + }, + { + id: 'egypt', + name: '埃及', + name_en: 'Egypt', + nickname: '法老军团', + group: 'J', + flag: '🇪🇬', + confederation: 'CAF', + fifa_ranking: 32, + best_result: '小组赛(1934、1990、2018)', + coach: '霍萨姆·哈桑', + style: '边路进攻突出,反击依赖核心球员爆点,整体防守较务实。' + }, + { + id: 'nigeria', + name: '尼日利亚', + name_en: 'Nigeria', + nickname: '非洲雄鹰', + group: 'J', + flag: '🇳🇬', + confederation: 'CAF', + fifa_ranking: 44, + best_result: '十六强(1994、1998、2014)', + coach: '埃里克·谢勒', + style: '速度和力量优势明显,前场冲击力强,转换进攻威胁大。' + }, + { + id: 'honduras', + name: '洪都拉斯', + name_en: 'Honduras', + nickname: '加勒比蓝白军团', + group: 'J', + flag: '🇭🇳', + confederation: 'CONCACAF', + fifa_ranking: 76, + best_result: '小组赛(1982、2010、2014)', + coach: '雷纳尔多·鲁埃达', + style: '对抗积极,节奏直接,擅长通过边路冲击和定位球争取机会。' + }, + { + id: 'czechia', + name: '捷克', + name_en: 'Czechia', + nickname: '东欧铁骑', + group: 'K', + flag: '🇨🇿', + confederation: 'UEFA', + fifa_ranking: 35, + best_result: '亚军(1934、1962,捷克斯洛伐克时期)', + coach: '伊万·哈谢克', + style: '身体对抗强,攻防节奏稳,定位球和中路冲击有传统优势。' + }, + { + id: 'turkiye', + name: '土耳其', + name_en: 'Turkiye', + nickname: '星月军团', + group: 'K', + flag: '🇹🇷', + confederation: 'UEFA', + fifa_ranking: 26, + best_result: '季军(2002)', + coach: '文琴佐·蒙特拉', + style: '比赛情绪和强度高,前场敢压迫,边路和远射威胁明显。' + }, + { + id: 'chile', + name: '智利', + name_en: 'Chile', + nickname: '南美红魔', + group: 'K', + flag: '🇨🇱', + confederation: 'CONMEBOL', + fifa_ranking: 52, + best_result: '季军(1962)', + coach: '尼古拉斯·科尔多瓦', + style: '拼抢凶狠,节奏直接,重视中前场压迫和快速推进。' + }, + { + id: 'china', + name: '中国', + name_en: 'China PR', + nickname: '国足', + group: 'K', + flag: '🇨🇳', + confederation: 'AFC', + fifa_ranking: 94, + best_result: '小组赛(2002)', + coach: '布兰科·伊万科维奇', + style: '打法偏务实,强调防守落位和边路推进,定位球是重要进攻手段。' + }, + { + id: 'austria', + name: '奥地利', + name_en: 'Austria', + nickname: '奥地利雄鹰', + group: 'L', + flag: '🇦🇹', + confederation: 'UEFA', + fifa_ranking: 22, + best_result: '季军(1954)', + coach: '拉尔夫·朗尼克', + style: '高位压迫鲜明,转换速度快,整体跑动和逼抢强度高。' + }, + { + id: 'scotland', + name: '苏格兰', + name_en: 'Scotland', + nickname: '风笛军团', + group: 'L', + flag: '\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}', + confederation: 'UEFA', + fifa_ranking: 43, + best_result: '小组赛(多届)', + coach: '史蒂夫·克拉克', + style: '作风硬朗,边路传中和身体对抗突出,团队执行力稳定。' + }, + { + id: 'jamaica', + name: '牙买加', + name_en: 'Jamaica', + nickname: '雷鬼男孩', + group: 'L', + flag: '🇯🇲', + confederation: 'CONCACAF', + fifa_ranking: 70, + best_result: '小组赛(1998)', + coach: '史蒂夫·麦克拉伦', + style: '速度天赋突出,反击冲击强,依靠边路爆发力制造机会。' + }, + { + id: 'qatar', + name: '卡塔尔', + name_en: 'Qatar', + nickname: '西亚红狐', + group: 'L', + flag: '🇶🇦', + confederation: 'AFC', + fifa_ranking: 53, + best_result: '小组赛(2022)', + coach: '胡伦·洛佩特吉', + style: '短传配合熟练,节奏控制意识强,擅长通过中路渗透组织进攻。' + } +] + +export default teams