From faf39619a152f8c53679cbdf7a1aaaff32784c28 Mon Sep 17 00:00:00 2001 From: wynn <44751363+zzfn@users.noreply.github.com> Date: Thu, 21 May 2026 21:09:15 +0800 Subject: [PATCH 1/3] feat(map): expand country coverage to full ISO 3166-1 alpha-2 --- src/components/map/countryName.ts | 319 +++++++++++++++++++++++++++++- src/data/mapRegionCoords.ts | 266 ++++++++++++++++++++++++- src/data/regions.ts | 259 +++++++++++++++++++++++- src/pages/dashboard/map.vue | 256 +++++++++++++++++++++++- 4 files changed, 1086 insertions(+), 14 deletions(-) diff --git a/src/components/map/countryName.ts b/src/components/map/countryName.ts index f2e1e2b..c53b0f2 100644 --- a/src/components/map/countryName.ts +++ b/src/components/map/countryName.ts @@ -1,30 +1,343 @@ +// 用于将 ECharts/GeoJSON 英文国家名映射到中英文显示名 const COUNTRY_NAME_FALLBACK: Record = { + // 大中华区 "Hong Kong": { zh: "香港", en: "Hong Kong" }, Macao: { zh: "澳门", en: "Macao" }, Taiwan: { zh: "台湾", en: "Taiwan" }, China: { zh: "中国大陆", en: "China" }, + // 东亚 Japan: { zh: "日本", en: "Japan" }, "South Korea": { zh: "韩国", en: "South Korea" }, + "North Korea": { zh: "朝鲜", en: "North Korea" }, + "Dem. Rep. Korea": { zh: "朝鲜", en: "North Korea" }, + Mongolia: { zh: "蒙古", en: "Mongolia" }, + // 东南亚 Singapore: { zh: "新加坡", en: "Singapore" }, Malaysia: { zh: "马来西亚", en: "Malaysia" }, Thailand: { zh: "泰国", en: "Thailand" }, Vietnam: { zh: "越南", en: "Vietnam" }, Philippines: { zh: "菲律宾", en: "Philippines" }, Indonesia: { zh: "印度尼西亚", en: "Indonesia" }, + Myanmar: { zh: "缅甸", en: "Myanmar" }, + Cambodia: { zh: "柬埔寨", en: "Cambodia" }, + Laos: { zh: "老挝", en: "Laos" }, + "Timor-Leste": { zh: "东帝汶", en: "Timor-Leste" }, + "East Timor": { zh: "东帝汶", en: "Timor-Leste" }, + Brunei: { zh: "文莱", en: "Brunei" }, + "Brunei Darussalam": { zh: "文莱", en: "Brunei" }, + // 南亚 India: { zh: "印度", en: "India" }, + Pakistan: { zh: "巴基斯坦", en: "Pakistan" }, + Bangladesh: { zh: "孟加拉国", en: "Bangladesh" }, + "Sri Lanka": { zh: "斯里兰卡", en: "Sri Lanka" }, + Nepal: { zh: "尼泊尔", en: "Nepal" }, + Bhutan: { zh: "不丹", en: "Bhutan" }, + Maldives: { zh: "马尔代夫", en: "Maldives" }, + Afghanistan: { zh: "阿富汗", en: "Afghanistan" }, + // 中亚 + Kazakhstan: { zh: "哈萨克斯坦", en: "Kazakhstan" }, + Uzbekistan: { zh: "乌兹别克斯坦", en: "Uzbekistan" }, + Turkmenistan: { zh: "土库曼斯坦", en: "Turkmenistan" }, + Tajikistan: { zh: "塔吉克斯坦", en: "Tajikistan" }, + Kyrgyzstan: { zh: "吉尔吉斯斯坦", en: "Kyrgyzstan" }, + // 高加索 + Azerbaijan: { zh: "阿塞拜疆", en: "Azerbaijan" }, + Armenia: { zh: "亚美尼亚", en: "Armenia" }, + Georgia: { zh: "格鲁吉亚", en: "Georgia" }, + // 中东 + Turkey: { zh: "土耳其", en: "Turkey" }, + "United Arab Emirates": { zh: "阿联酋", en: "United Arab Emirates" }, + "Saudi Arabia": { zh: "沙特阿拉伯", en: "Saudi Arabia" }, + Israel: { zh: "以色列", en: "Israel" }, + Palestine: { zh: "巴勒斯坦", en: "Palestine" }, + "West Bank": { zh: "巴勒斯坦", en: "Palestine" }, + Iraq: { zh: "伊拉克", en: "Iraq" }, + Iran: { zh: "伊朗", en: "Iran" }, + Syria: { zh: "叙利亚", en: "Syria" }, + Jordan: { zh: "约旦", en: "Jordan" }, + Lebanon: { zh: "黎巴嫩", en: "Lebanon" }, + Kuwait: { zh: "科威特", en: "Kuwait" }, + Qatar: { zh: "卡塔尔", en: "Qatar" }, + Bahrain: { zh: "巴林", en: "Bahrain" }, + Oman: { zh: "阿曼", en: "Oman" }, + Yemen: { zh: "也门", en: "Yemen" }, + // 北美 "United States of America": { zh: "美国", en: "United States of America" }, Canada: { zh: "加拿大", en: "Canada" }, Mexico: { zh: "墨西哥", en: "Mexico" }, + Greenland: { zh: "格陵兰", en: "Greenland" }, + "Saint Pierre and Miquelon": { + zh: "圣皮埃尔和密克隆", + en: "Saint Pierre and Miquelon", + }, + // 中美洲 + Guatemala: { zh: "危地马拉", en: "Guatemala" }, + Belize: { zh: "伯利兹", en: "Belize" }, + Honduras: { zh: "洪都拉斯", en: "Honduras" }, + "El Salvador": { zh: "萨尔瓦多", en: "El Salvador" }, + Nicaragua: { zh: "尼加拉瓜", en: "Nicaragua" }, + "Costa Rica": { zh: "哥斯达黎加", en: "Costa Rica" }, + Panama: { zh: "巴拿马", en: "Panama" }, + // 加勒比 + Cuba: { zh: "古巴", en: "Cuba" }, + Jamaica: { zh: "牙买加", en: "Jamaica" }, + Haiti: { zh: "海地", en: "Haiti" }, + "Dominican Republic": { zh: "多米尼加共和国", en: "Dominican Republic" }, + "Puerto Rico": { zh: "波多黎各", en: "Puerto Rico" }, + "Trinidad and Tobago": { zh: "特立尼达和多巴哥", en: "Trinidad and Tobago" }, + Barbados: { zh: "巴巴多斯", en: "Barbados" }, + "Saint Lucia": { zh: "圣卢西亚", en: "Saint Lucia" }, + "Saint Vincent and the Grenadines": { + zh: "圣文森特和格林纳丁斯", + en: "Saint Vincent and the Grenadines", + }, + Grenada: { zh: "格林纳达", en: "Grenada" }, + "Antigua and Barbuda": { zh: "安提瓜和巴布达", en: "Antigua and Barbuda" }, + Dominica: { zh: "多米尼克", en: "Dominica" }, + "Saint Kitts and Nevis": { + zh: "圣基茨和尼维斯", + en: "Saint Kitts and Nevis", + }, + Bahamas: { zh: "巴哈马", en: "Bahamas" }, + "Turks and Caicos Islands": { + zh: "特克斯和凯科斯群岛", + en: "Turks and Caicos Islands", + }, + "Cayman Islands": { zh: "开曼群岛", en: "Cayman Islands" }, + Bermuda: { zh: "百慕大", en: "Bermuda" }, + "British Virgin Islands": { + zh: "英属维尔京群岛", + en: "British Virgin Islands", + }, + "United States Virgin Islands": { + zh: "美属维尔京群岛", + en: "United States Virgin Islands", + }, + Aruba: { zh: "阿鲁巴", en: "Aruba" }, + Curacao: { zh: "库拉索", en: "Curacao" }, + "Sint Maarten": { zh: "荷属圣马丁", en: "Sint Maarten" }, + "Saint Martin": { zh: "法属圣马丁", en: "Saint Martin" }, + "Saint Barthelemy": { zh: "圣巴泰勒米", en: "Saint Barthelemy" }, + "Bonaire, Saint Eustatius and Saba": { + zh: "博内尔、圣尤斯特歇斯和萨巴", + en: "Bonaire, Saint Eustatius and Saba", + }, + Guadeloupe: { zh: "瓜德罗普", en: "Guadeloupe" }, + Martinique: { zh: "马提尼克", en: "Martinique" }, + Montserrat: { zh: "蒙特塞拉特", en: "Montserrat" }, + Anguilla: { zh: "安圭拉", en: "Anguilla" }, + // 南美 Brazil: { zh: "巴西", en: "Brazil" }, Argentina: { zh: "阿根廷", en: "Argentina" }, + Chile: { zh: "智利", en: "Chile" }, + Colombia: { zh: "哥伦比亚", en: "Colombia" }, + Peru: { zh: "秘鲁", en: "Peru" }, + Venezuela: { zh: "委内瑞拉", en: "Venezuela" }, + Ecuador: { zh: "厄瓜多尔", en: "Ecuador" }, + Bolivia: { zh: "玻利维亚", en: "Bolivia" }, + Paraguay: { zh: "巴拉圭", en: "Paraguay" }, + Uruguay: { zh: "乌拉圭", en: "Uruguay" }, + Guyana: { zh: "圭亚那", en: "Guyana" }, + Suriname: { zh: "苏里南", en: "Suriname" }, + "French Guiana": { zh: "法属圭亚那", en: "French Guiana" }, + "Falkland Is.": { zh: "福克兰群岛", en: "Falkland Islands" }, + "Falkland Islands": { zh: "福克兰群岛", en: "Falkland Islands" }, + // 西欧 "United Kingdom": { zh: "英国", en: "United Kingdom" }, - Germany: { zh: "德国", en: "Germany" }, + Ireland: { zh: "爱尔兰", en: "Ireland" }, France: { zh: "法国", en: "France" }, + Germany: { zh: "德国", en: "Germany" }, Netherlands: { zh: "荷兰", en: "Netherlands" }, + Belgium: { zh: "比利时", en: "Belgium" }, + Luxembourg: { zh: "卢森堡", en: "Luxembourg" }, + Switzerland: { zh: "瑞士", en: "Switzerland" }, + Austria: { zh: "奥地利", en: "Austria" }, + Spain: { zh: "西班牙", en: "Spain" }, + Portugal: { zh: "葡萄牙", en: "Portugal" }, + Italy: { zh: "意大利", en: "Italy" }, + Monaco: { zh: "摩纳哥", en: "Monaco" }, + Andorra: { zh: "安道尔", en: "Andorra" }, + "San Marino": { zh: "圣马力诺", en: "San Marino" }, + Vatican: { zh: "梵蒂冈", en: "Vatican" }, + "Vatican City": { zh: "梵蒂冈", en: "Vatican City" }, + Liechtenstein: { zh: "列支敦士登", en: "Liechtenstein" }, + Gibraltar: { zh: "直布罗陀", en: "Gibraltar" }, + // 北欧 + Sweden: { zh: "瑞典", en: "Sweden" }, + Norway: { zh: "挪威", en: "Norway" }, + Finland: { zh: "芬兰", en: "Finland" }, + Denmark: { zh: "丹麦", en: "Denmark" }, + Iceland: { zh: "冰岛", en: "Iceland" }, + "Faroe Is.": { zh: "法罗群岛", en: "Faroe Islands" }, + "Faroe Islands": { zh: "法罗群岛", en: "Faroe Islands" }, + Aland: { zh: "奥兰群岛", en: "Åland Islands" }, + "Åland Islands": { zh: "奥兰群岛", en: "Åland Islands" }, + "Svalbard and Jan Mayen": { + zh: "斯瓦尔巴和扬马延", + en: "Svalbard and Jan Mayen", + }, + // 南欧 + Greece: { zh: "希腊", en: "Greece" }, + Cyprus: { zh: "塞浦路斯", en: "Cyprus" }, + Malta: { zh: "马耳他", en: "Malta" }, + // 东欧 Russia: { zh: "俄罗斯", en: "Russia" }, - Turkey: { zh: "土耳其", en: "Turkey" }, - Australia: { zh: "澳大利亚", en: "Australia" }, + Ukraine: { zh: "乌克兰", en: "Ukraine" }, + Belarus: { zh: "白俄罗斯", en: "Belarus" }, + Poland: { zh: "波兰", en: "Poland" }, + "Czech Republic": { zh: "捷克", en: "Czech Republic" }, + Czechia: { zh: "捷克", en: "Czechia" }, + Slovakia: { zh: "斯洛伐克", en: "Slovakia" }, + Hungary: { zh: "匈牙利", en: "Hungary" }, + Romania: { zh: "罗马尼亚", en: "Romania" }, + Bulgaria: { zh: "保加利亚", en: "Bulgaria" }, + Moldova: { zh: "摩尔多瓦", en: "Moldova" }, + Lithuania: { zh: "立陶宛", en: "Lithuania" }, + Latvia: { zh: "拉脱维亚", en: "Latvia" }, + Estonia: { zh: "爱沙尼亚", en: "Estonia" }, + // 巴尔干 + Serbia: { zh: "塞尔维亚", en: "Serbia" }, + Kosovo: { zh: "科索沃", en: "Kosovo" }, + Croatia: { zh: "克罗地亚", en: "Croatia" }, + Slovenia: { zh: "斯洛文尼亚", en: "Slovenia" }, + "Bosnia and Herzegovina": { zh: "波黑", en: "Bosnia and Herzegovina" }, + Montenegro: { zh: "黑山", en: "Montenegro" }, + Albania: { zh: "阿尔巴尼亚", en: "Albania" }, + Macedonia: { zh: "北马其顿", en: "North Macedonia" }, + "North Macedonia": { zh: "北马其顿", en: "North Macedonia" }, + // 北非 + Egypt: { zh: "埃及", en: "Egypt" }, + Libya: { zh: "利比亚", en: "Libya" }, + Tunisia: { zh: "突尼斯", en: "Tunisia" }, + Algeria: { zh: "阿尔及利亚", en: "Algeria" }, + Morocco: { zh: "摩洛哥", en: "Morocco" }, + "W. Sahara": { zh: "西撒哈拉", en: "Western Sahara" }, + "Western Sahara": { zh: "西撒哈拉", en: "Western Sahara" }, + Sudan: { zh: "苏丹", en: "Sudan" }, + // 东非 + Ethiopia: { zh: "埃塞俄比亚", en: "Ethiopia" }, + Eritrea: { zh: "厄立特里亚", en: "Eritrea" }, + Djibouti: { zh: "吉布提", en: "Djibouti" }, + Somalia: { zh: "索马里", en: "Somalia" }, + Kenya: { zh: "肯尼亚", en: "Kenya" }, + Tanzania: { zh: "坦桑尼亚", en: "Tanzania" }, + "United Republic of Tanzania": { zh: "坦桑尼亚", en: "Tanzania" }, + Uganda: { zh: "乌干达", en: "Uganda" }, + Rwanda: { zh: "卢旺达", en: "Rwanda" }, + Burundi: { zh: "布隆迪", en: "Burundi" }, + "S. Sudan": { zh: "南苏丹", en: "South Sudan" }, + "South Sudan": { zh: "南苏丹", en: "South Sudan" }, + // 西非 + Nigeria: { zh: "尼日利亚", en: "Nigeria" }, + Ghana: { zh: "加纳", en: "Ghana" }, + Senegal: { zh: "塞内加尔", en: "Senegal" }, + "Ivory Coast": { zh: "科特迪瓦", en: "Ivory Coast" }, + "Côte d'Ivoire": { zh: "科特迪瓦", en: "Ivory Coast" }, + Cameroon: { zh: "喀麦隆", en: "Cameroon" }, + Mali: { zh: "马里", en: "Mali" }, + "Burkina Faso": { zh: "布基纳法索", en: "Burkina Faso" }, + Niger: { zh: "尼日尔", en: "Niger" }, + Chad: { zh: "乍得", en: "Chad" }, + Mauritania: { zh: "毛里塔尼亚", en: "Mauritania" }, + Gambia: { zh: "冈比亚", en: "Gambia" }, + "Guinea-Bissau": { zh: "几内亚比绍", en: "Guinea-Bissau" }, + Guinea: { zh: "几内亚", en: "Guinea" }, + "Sierra Leone": { zh: "塞拉利昂", en: "Sierra Leone" }, + Liberia: { zh: "利比里亚", en: "Liberia" }, + Togo: { zh: "多哥", en: "Togo" }, + Benin: { zh: "贝宁", en: "Benin" }, + "Cape Verde": { zh: "佛得角", en: "Cape Verde" }, + "Sao Tome and Principe": { + zh: "圣多美和普林西比", + en: "Sao Tome and Principe", + }, + // 中非 + "Central African Rep.": { zh: "中非共和国", en: "Central African Republic" }, + "Central African Republic": { + zh: "中非共和国", + en: "Central African Republic", + }, + Congo: { zh: "刚果共和国", en: "Republic of the Congo" }, + "Dem. Rep. Congo": { zh: "刚果民主共和国", en: "DR Congo" }, + "Democratic Republic of the Congo": { zh: "刚果民主共和国", en: "DR Congo" }, + Gabon: { zh: "加蓬", en: "Gabon" }, + "Eq. Guinea": { zh: "赤道几内亚", en: "Equatorial Guinea" }, + "Equatorial Guinea": { zh: "赤道几内亚", en: "Equatorial Guinea" }, + Angola: { zh: "安哥拉", en: "Angola" }, + // 南非洲 "South Africa": { zh: "南非", en: "South Africa" }, + Namibia: { zh: "纳米比亚", en: "Namibia" }, + Botswana: { zh: "博茨瓦纳", en: "Botswana" }, + Zimbabwe: { zh: "津巴布韦", en: "Zimbabwe" }, + Zambia: { zh: "赞比亚", en: "Zambia" }, + Malawi: { zh: "马拉维", en: "Malawi" }, + Mozambique: { zh: "莫桑比克", en: "Mozambique" }, + Swaziland: { zh: "斯威士兰", en: "Eswatini" }, + eSwatini: { zh: "斯威士兰", en: "Eswatini" }, + Lesotho: { zh: "莱索托", en: "Lesotho" }, + // 印度洋岛屿 & 东非岛屿 + Madagascar: { zh: "马达加斯加", en: "Madagascar" }, + Mauritius: { zh: "毛里求斯", en: "Mauritius" }, + Seychelles: { zh: "塞舌尔", en: "Seychelles" }, + Comoros: { zh: "科摩罗", en: "Comoros" }, + Reunion: { zh: "留尼汪", en: "Réunion" }, + Mayotte: { zh: "马约特", en: "Mayotte" }, + "Saint Helena": { zh: "圣赫勒拿", en: "Saint Helena" }, + "Br. Indian Ocean Ter.": { + zh: "英属印度洋领地", + en: "British Indian Ocean Territory", + }, + // 大洋洲 + Australia: { zh: "澳大利亚", en: "Australia" }, + "New Zealand": { zh: "新西兰", en: "New Zealand" }, + "Papua New Guinea": { zh: "巴布亚新几内亚", en: "Papua New Guinea" }, + Fiji: { zh: "斐济", en: "Fiji" }, + "Solomon Is.": { zh: "所罗门群岛", en: "Solomon Islands" }, + "Solomon Islands": { zh: "所罗门群岛", en: "Solomon Islands" }, + Vanuatu: { zh: "瓦努阿图", en: "Vanuatu" }, + "New Caledonia": { zh: "新喀里多尼亚", en: "New Caledonia" }, + Samoa: { zh: "萨摩亚", en: "Samoa" }, + Tonga: { zh: "汤加", en: "Tonga" }, + Kiribati: { zh: "基里巴斯", en: "Kiribati" }, + Micronesia: { zh: "密克罗尼西亚", en: "Micronesia" }, + "Marshall Is.": { zh: "马绍尔群岛", en: "Marshall Islands" }, + "Marshall Islands": { zh: "马绍尔群岛", en: "Marshall Islands" }, + Palau: { zh: "帕劳", en: "Palau" }, + Nauru: { zh: "瑙鲁", en: "Nauru" }, + Tuvalu: { zh: "图瓦卢", en: "Tuvalu" }, + "Cook Islands": { zh: "库克群岛", en: "Cook Islands" }, + Niue: { zh: "纽埃", en: "Niue" }, + "Wallis and Futuna": { zh: "瓦利斯和富图纳", en: "Wallis and Futuna" }, + "Fr. Polynesia": { zh: "法属波利尼西亚", en: "French Polynesia" }, + "French Polynesia": { zh: "法属波利尼西亚", en: "French Polynesia" }, + Guam: { zh: "关岛", en: "Guam" }, + "N. Mariana Is.": { zh: "北马里亚纳群岛", en: "Northern Mariana Islands" }, + "American Samoa": { zh: "美属萨摩亚", en: "American Samoa" }, + "Norfolk Island": { zh: "诺福克岛", en: "Norfolk Island" }, + "Cocos (Keeling) Islands": { zh: "科科斯群岛", en: "Cocos Islands" }, + "Christmas Island": { zh: "圣诞岛", en: "Christmas Island" }, + Tokelau: { zh: "托克劳", en: "Tokelau" }, + "Pitcairn Is.": { zh: "皮特凯恩群岛", en: "Pitcairn Islands" }, + // 大西洋 & 偏远领地 + "S. Georgia and S. Sandwich Isl.": { + zh: "南乔治亚和南桑威奇群岛", + en: "South Georgia", + }, + "Bouvet Island": { zh: "布韦岛", en: "Bouvet Island" }, + "Heard I. and McDonald Is.": { + zh: "赫德岛和麦克唐纳群岛", + en: "Heard Island", + }, + "Fr. S. Antarctic Lands": { + zh: "法属南部领地", + en: "French Southern Territories", + }, + "United States Minor Outlying Islands": { + zh: "美国本土外小岛屿", + en: "US Minor Outlying Islands", + }, + // 极地 + Antarctica: { zh: "南极洲", en: "Antarctica" }, }; export function getDisplayCountryName( diff --git a/src/data/mapRegionCoords.ts b/src/data/mapRegionCoords.ts index 80dac51..3972a9c 100644 --- a/src/data/mapRegionCoords.ts +++ b/src/data/mapRegionCoords.ts @@ -5,30 +5,288 @@ export interface RegionCoord { } export const REGION_COORDS: Record = { + // 大中华区 + CN: { code: "CN", name: "中国大陆", coord: [116.4074, 39.9042] }, HK: { code: "HK", name: "香港", coord: [114.1694, 22.3193] }, TW: { code: "TW", name: "台湾", coord: [121.5654, 25.033] }, MO: { code: "MO", name: "澳门", coord: [113.5439, 22.1987] }, - CN: { code: "CN", name: "中国大陆", coord: [116.4074, 39.9042] }, + // 东亚 JP: { code: "JP", name: "日本", coord: [139.6917, 35.6895] }, KR: { code: "KR", name: "韩国", coord: [126.978, 37.5665] }, + KP: { code: "KP", name: "朝鲜", coord: [125.7625, 39.0194] }, + MN: { code: "MN", name: "蒙古", coord: [106.9057, 47.8864] }, + // 东南亚 SG: { code: "SG", name: "新加坡", coord: [103.8198, 1.3521] }, MY: { code: "MY", name: "马来西亚", coord: [101.6869, 3.139] }, TH: { code: "TH", name: "泰国", coord: [100.5018, 13.7563] }, VN: { code: "VN", name: "越南", coord: [105.8342, 21.0278] }, PH: { code: "PH", name: "菲律宾", coord: [120.9842, 14.5995] }, ID: { code: "ID", name: "印度尼西亚", coord: [106.8456, -6.2088] }, + MM: { code: "MM", name: "缅甸", coord: [96.1561, 16.8661] }, + KH: { code: "KH", name: "柬埔寨", coord: [104.916, 11.5564] }, + LA: { code: "LA", name: "老挝", coord: [102.6331, 17.9757] }, + TL: { code: "TL", name: "东帝汶", coord: [125.5736, -8.5569] }, + BN: { code: "BN", name: "文莱", coord: [114.948, 4.9031] }, + // 南亚 IN: { code: "IN", name: "印度", coord: [77.209, 28.6139] }, + PK: { code: "PK", name: "巴基斯坦", coord: [73.0479, 33.7215] }, + BD: { code: "BD", name: "孟加拉国", coord: [90.4125, 23.8103] }, + LK: { code: "LK", name: "斯里兰卡", coord: [79.8612, 6.9271] }, + NP: { code: "NP", name: "尼泊尔", coord: [85.324, 27.7172] }, + BT: { code: "BT", name: "不丹", coord: [89.639, 27.4728] }, + MV: { code: "MV", name: "马尔代夫", coord: [73.5093, 4.1755] }, + AF: { code: "AF", name: "阿富汗", coord: [69.1763, 34.526] }, + // 中亚 + KZ: { code: "KZ", name: "哈萨克斯坦", coord: [71.446, 51.1801] }, + UZ: { code: "UZ", name: "乌兹别克斯坦", coord: [69.2401, 41.2995] }, + TM: { code: "TM", name: "土库曼斯坦", coord: [58.3794, 37.9601] }, + TJ: { code: "TJ", name: "塔吉克斯坦", coord: [68.7738, 38.5598] }, + KG: { code: "KG", name: "吉尔吉斯斯坦", coord: [74.5698, 42.8746] }, + // 高加索 + AZ: { code: "AZ", name: "阿塞拜疆", coord: [49.8671, 40.4093] }, + AM: { code: "AM", name: "亚美尼亚", coord: [44.5136, 40.1872] }, + GE: { code: "GE", name: "格鲁吉亚", coord: [44.7972, 41.6938] }, + // 中东 + TR: { code: "TR", name: "土耳其", coord: [32.8597, 39.9334] }, + AE: { code: "AE", name: "阿联酋", coord: [55.2708, 25.2048] }, + SA: { code: "SA", name: "沙特阿拉伯", coord: [46.6753, 24.6877] }, + IL: { code: "IL", name: "以色列", coord: [34.7818, 32.0853] }, + PS: { code: "PS", name: "巴勒斯坦", coord: [35.2034, 31.9022] }, + IQ: { code: "IQ", name: "伊拉克", coord: [44.3661, 33.3152] }, + IR: { code: "IR", name: "伊朗", coord: [51.389, 35.6892] }, + SY: { code: "SY", name: "叙利亚", coord: [36.2921, 33.5138] }, + JO: { code: "JO", name: "约旦", coord: [35.9106, 31.9539] }, + LB: { code: "LB", name: "黎巴嫩", coord: [35.5018, 33.8938] }, + KW: { code: "KW", name: "科威特", coord: [47.9774, 29.3759] }, + QA: { code: "QA", name: "卡塔尔", coord: [51.531, 25.2854] }, + BH: { code: "BH", name: "巴林", coord: [50.586, 26.2235] }, + OM: { code: "OM", name: "阿曼", coord: [58.5922, 23.588] }, + YE: { code: "YE", name: "也门", coord: [44.2066, 15.3694] }, + // 北美 US: { code: "US", name: "美国", coord: [-77.0369, 38.9072] }, CA: { code: "CA", name: "加拿大", coord: [-75.6972, 45.4215] }, MX: { code: "MX", name: "墨西哥", coord: [-99.1332, 19.4326] }, + GL: { code: "GL", name: "格陵兰", coord: [-51.7214, 64.1835] }, + PM: { code: "PM", name: "圣皮埃尔和密克隆", coord: [-56.18, 46.7758] }, + // 中美洲 + GT: { code: "GT", name: "危地马拉", coord: [-90.5328, 14.6349] }, + BZ: { code: "BZ", name: "伯利兹", coord: [-88.799, 17.2514] }, + HN: { code: "HN", name: "洪都拉斯", coord: [-87.2068, 14.0723] }, + SV: { code: "SV", name: "萨尔瓦多", coord: [-89.2182, 13.6929] }, + NI: { code: "NI", name: "尼加拉瓜", coord: [-86.2819, 12.1364] }, + CR: { code: "CR", name: "哥斯达黎加", coord: [-84.0907, 9.9281] }, + PA: { code: "PA", name: "巴拿马", coord: [-79.5188, 8.9936] }, + // 加勒比 + CU: { code: "CU", name: "古巴", coord: [-82.3666, 23.1136] }, + JM: { code: "JM", name: "牙买加", coord: [-76.7936, 17.997] }, + HT: { code: "HT", name: "海地", coord: [-72.3288, 18.5944] }, + DO: { code: "DO", name: "多米尼加共和国", coord: [-69.9312, 18.4861] }, + PR: { code: "PR", name: "波多黎各", coord: [-66.1057, 18.4655] }, + TT: { code: "TT", name: "特立尼达和多巴哥", coord: [-61.5189, 10.6596] }, + BB: { code: "BB", name: "巴巴多斯", coord: [-59.6145, 13.0935] }, + LC: { code: "LC", name: "圣卢西亚", coord: [-61.0, 14.0101] }, + VC: { code: "VC", name: "圣文森特和格林纳丁斯", coord: [-61.2248, 13.16] }, + GD: { code: "GD", name: "格林纳达", coord: [-61.7488, 12.0561] }, + AG: { code: "AG", name: "安提瓜和巴布达", coord: [-61.8456, 17.1274] }, + DM: { code: "DM", name: "多米尼克", coord: [-61.387, 15.3017] }, + KN: { code: "KN", name: "圣基茨和尼维斯", coord: [-62.7177, 17.2948] }, + BS: { code: "BS", name: "巴哈马", coord: [-77.3503, 25.0443] }, + TC: { code: "TC", name: "特克斯和凯科斯群岛", coord: [-71.139, 21.4612] }, + KY: { code: "KY", name: "开曼群岛", coord: [-81.3764, 19.2866] }, + BM: { code: "BM", name: "百慕大", coord: [-64.7838, 32.2942] }, + VG: { code: "VG", name: "英属维尔京群岛", coord: [-64.6235, 18.4272] }, + VI: { code: "VI", name: "美属维尔京群岛", coord: [-64.9296, 18.3419] }, + AW: { code: "AW", name: "阿鲁巴", coord: [-70.0322, 12.5246] }, + CW: { code: "CW", name: "库拉索", coord: [-68.9335, 12.1035] }, + SX: { code: "SX", name: "荷属圣马丁", coord: [-63.0458, 18.0238] }, + MF: { code: "MF", name: "法属圣马丁", coord: [-63.0782, 18.0706] }, + BL: { code: "BL", name: "圣巴泰勒米", coord: [-62.849, 17.8957] }, + BQ: { + code: "BQ", + name: "博内尔、圣尤斯特歇斯和萨巴", + coord: [-68.2685, 12.1508], + }, + GP: { code: "GP", name: "瓜德罗普", coord: [-61.5514, 16.265] }, + MQ: { code: "MQ", name: "马提尼克", coord: [-61.0587, 14.6037] }, + MS: { code: "MS", name: "蒙特塞拉特", coord: [-62.2106, 16.7425] }, + AI: { code: "AI", name: "安圭拉", coord: [-63.0577, 18.2206] }, + // 南美 BR: { code: "BR", name: "巴西", coord: [-47.8825, -15.7942] }, AR: { code: "AR", name: "阿根廷", coord: [-58.3816, -34.6037] }, + CL: { code: "CL", name: "智利", coord: [-70.6483, -33.4569] }, + CO: { code: "CO", name: "哥伦比亚", coord: [-74.0721, 4.711] }, + PE: { code: "PE", name: "秘鲁", coord: [-77.0428, -12.0464] }, + VE: { code: "VE", name: "委内瑞拉", coord: [-66.9036, 10.4806] }, + EC: { code: "EC", name: "厄瓜多尔", coord: [-78.5128, -0.2295] }, + BO: { code: "BO", name: "玻利维亚", coord: [-68.1193, -16.5] }, + PY: { code: "PY", name: "巴拉圭", coord: [-57.5759, -25.2867] }, + UY: { code: "UY", name: "乌拉圭", coord: [-56.1645, -34.9011] }, + GY: { code: "GY", name: "圭亚那", coord: [-58.1553, 6.8013] }, + SR: { code: "SR", name: "苏里南", coord: [-55.1679, 5.852] }, + GF: { code: "GF", name: "法属圭亚那", coord: [-52.3326, 4.9224] }, + FK: { code: "FK", name: "福克兰群岛", coord: [-59.5236, -51.7] }, + // 西欧 GB: { code: "GB", name: "英国", coord: [-0.1276, 51.5072] }, - DE: { code: "DE", name: "德国", coord: [13.405, 52.52] }, + IE: { code: "IE", name: "爱尔兰", coord: [-6.2603, 53.3498] }, FR: { code: "FR", name: "法国", coord: [2.3522, 48.8566] }, + DE: { code: "DE", name: "德国", coord: [13.405, 52.52] }, NL: { code: "NL", name: "荷兰", coord: [4.9041, 52.3676] }, + BE: { code: "BE", name: "比利时", coord: [4.3517, 50.8503] }, + LU: { code: "LU", name: "卢森堡", coord: [6.1319, 49.6116] }, + CH: { code: "CH", name: "瑞士", coord: [8.5417, 47.3769] }, + AT: { code: "AT", name: "奥地利", coord: [16.3738, 48.2082] }, + ES: { code: "ES", name: "西班牙", coord: [-3.7038, 40.4168] }, + PT: { code: "PT", name: "葡萄牙", coord: [-9.1393, 38.7223] }, + IT: { code: "IT", name: "意大利", coord: [12.4964, 41.9028] }, + MC: { code: "MC", name: "摩纳哥", coord: [7.4128, 43.7384] }, + AD: { code: "AD", name: "安道尔", coord: [1.5218, 42.5063] }, + SM: { code: "SM", name: "圣马力诺", coord: [12.4578, 43.9424] }, + VA: { code: "VA", name: "梵蒂冈", coord: [12.4534, 41.9029] }, + LI: { code: "LI", name: "列支敦士登", coord: [9.5215, 47.141] }, + GI: { code: "GI", name: "直布罗陀", coord: [-5.3526, 36.1408] }, + // 北欧 + SE: { code: "SE", name: "瑞典", coord: [18.0686, 59.3293] }, + NO: { code: "NO", name: "挪威", coord: [10.7522, 59.9139] }, + FI: { code: "FI", name: "芬兰", coord: [24.9354, 60.1699] }, + DK: { code: "DK", name: "丹麦", coord: [12.5683, 55.6761] }, + IS: { code: "IS", name: "冰岛", coord: [-21.9426, 64.1355] }, + FO: { code: "FO", name: "法罗群岛", coord: [-6.9118, 61.8926] }, + AX: { code: "AX", name: "奥兰群岛", coord: [19.9348, 60.0969] }, + SJ: { code: "SJ", name: "斯瓦尔巴和扬马延", coord: [15.6519, 78.2186] }, + // 南欧 + GR: { code: "GR", name: "希腊", coord: [23.7275, 37.9838] }, + CY: { code: "CY", name: "塞浦路斯", coord: [33.3823, 35.1856] }, + MT: { code: "MT", name: "马耳他", coord: [14.5189, 35.8997] }, + // 英属皇家属地 + GG: { code: "GG", name: "根西岛", coord: [-2.534, 49.4547] }, + JE: { code: "JE", name: "泽西岛", coord: [-2.1047, 49.1805] }, + IM: { code: "IM", name: "马恩岛", coord: [-4.4808, 54.1509] }, + // 东欧 RU: { code: "RU", name: "俄罗斯", coord: [37.6173, 55.7558] }, - TR: { code: "TR", name: "土耳其", coord: [32.8597, 39.9334] }, - AU: { code: "AU", name: "澳大利亚", coord: [149.13, -35.2809] }, + UA: { code: "UA", name: "乌克兰", coord: [30.5238, 50.4501] }, + BY: { code: "BY", name: "白俄罗斯", coord: [27.5615, 53.9045] }, + PL: { code: "PL", name: "波兰", coord: [21.0122, 52.2297] }, + CZ: { code: "CZ", name: "捷克", coord: [14.4208, 50.088] }, + SK: { code: "SK", name: "斯洛伐克", coord: [17.1077, 48.1486] }, + HU: { code: "HU", name: "匈牙利", coord: [19.0402, 47.4979] }, + RO: { code: "RO", name: "罗马尼亚", coord: [26.1025, 44.4268] }, + BG: { code: "BG", name: "保加利亚", coord: [23.3219, 42.6977] }, + MD: { code: "MD", name: "摩尔多瓦", coord: [28.8638, 47.0105] }, + LT: { code: "LT", name: "立陶宛", coord: [25.2799, 54.6872] }, + LV: { code: "LV", name: "拉脱维亚", coord: [24.1052, 56.9496] }, + EE: { code: "EE", name: "爱沙尼亚", coord: [24.7536, 59.437] }, + // 巴尔干 + RS: { code: "RS", name: "塞尔维亚", coord: [20.4489, 44.7866] }, + XK: { code: "XK", name: "科索沃", coord: [21.1655, 42.6629] }, + HR: { code: "HR", name: "克罗地亚", coord: [15.9819, 45.815] }, + SI: { code: "SI", name: "斯洛文尼亚", coord: [14.5058, 46.0569] }, + BA: { code: "BA", name: "波黑", coord: [18.4131, 43.8563] }, + ME: { code: "ME", name: "黑山", coord: [19.2636, 42.4304] }, + AL: { code: "AL", name: "阿尔巴尼亚", coord: [19.8189, 41.3317] }, + MK: { code: "MK", name: "北马其顿", coord: [21.4314, 41.9981] }, + // 北非 + EG: { code: "EG", name: "埃及", coord: [31.2357, 30.0444] }, + LY: { code: "LY", name: "利比亚", coord: [13.1913, 32.8752] }, + TN: { code: "TN", name: "突尼斯", coord: [10.1815, 36.819] }, + DZ: { code: "DZ", name: "阿尔及利亚", coord: [3.0588, 36.7372] }, + MA: { code: "MA", name: "摩洛哥", coord: [-7.5898, 33.5731] }, + EH: { code: "EH", name: "西撒哈拉", coord: [-13.18, 27.15] }, + SD: { code: "SD", name: "苏丹", coord: [32.5599, 15.5007] }, + // 东非 + ET: { code: "ET", name: "埃塞俄比亚", coord: [38.7578, 9.0054] }, + ER: { code: "ER", name: "厄立特里亚", coord: [38.9318, 15.3229] }, + DJ: { code: "DJ", name: "吉布提", coord: [43.1458, 11.8251] }, + SO: { code: "SO", name: "索马里", coord: [45.3418, 2.0469] }, + KE: { code: "KE", name: "肯尼亚", coord: [36.8219, -1.2921] }, + TZ: { code: "TZ", name: "坦桑尼亚", coord: [39.2695, -6.7924] }, + UG: { code: "UG", name: "乌干达", coord: [32.5825, 0.3476] }, + RW: { code: "RW", name: "卢旺达", coord: [30.0619, -1.9441] }, + BI: { code: "BI", name: "布隆迪", coord: [29.3644, -3.3814] }, + SS: { code: "SS", name: "南苏丹", coord: [31.5713, 4.8594] }, + // 西非 + NG: { code: "NG", name: "尼日利亚", coord: [7.4951, 9.0579] }, + GH: { code: "GH", name: "加纳", coord: [-0.187, 5.6037] }, + SN: { code: "SN", name: "塞内加尔", coord: [-17.4441, 14.7167] }, + CI: { code: "CI", name: "科特迪瓦", coord: [-5.5471, 6.8276] }, + CM: { code: "CM", name: "喀麦隆", coord: [11.5021, 3.848] }, + ML: { code: "ML", name: "马里", coord: [-8.0029, 12.6392] }, + BF: { code: "BF", name: "布基纳法索", coord: [-1.5616, 12.3647] }, + NE: { code: "NE", name: "尼日尔", coord: [2.1098, 13.5137] }, + TD: { code: "TD", name: "乍得", coord: [15.0557, 12.1048] }, + MR: { code: "MR", name: "毛里塔尼亚", coord: [-15.9785, 18.0735] }, + GM: { code: "GM", name: "冈比亚", coord: [-16.5784, 13.4531] }, + GW: { code: "GW", name: "几内亚比绍", coord: [-15.1804, 11.8636] }, + GN: { code: "GN", name: "几内亚", coord: [-13.6773, 9.537] }, + SL: { code: "SL", name: "塞拉利昂", coord: [-13.2317, 8.4657] }, + LR: { code: "LR", name: "利比里亚", coord: [-10.7969, 6.2907] }, + TG: { code: "TG", name: "多哥", coord: [1.2277, 6.1375] }, + BJ: { code: "BJ", name: "贝宁", coord: [2.6359, 6.3703] }, + CV: { code: "CV", name: "佛得角", coord: [-23.5133, 14.9215] }, + ST: { code: "ST", name: "圣多美和普林西比", coord: [6.7273, 0.3365] }, + // 中非 + CF: { code: "CF", name: "中非共和国", coord: [18.5582, 4.3612] }, + CG: { code: "CG", name: "刚果共和国", coord: [15.2663, -4.2767] }, + CD: { code: "CD", name: "刚果民主共和国", coord: [15.3222, -4.3217] }, + GA: { code: "GA", name: "加蓬", coord: [9.4673, 0.3901] }, + GQ: { code: "GQ", name: "赤道几内亚", coord: [8.7832, 3.7523] }, + AO: { code: "AO", name: "安哥拉", coord: [13.2343, -8.8368] }, + // 南非洲 ZA: { code: "ZA", name: "南非", coord: [28.2293, -25.7461] }, + NA: { code: "NA", name: "纳米比亚", coord: [17.0836, -22.5609] }, + BW: { code: "BW", name: "博茨瓦纳", coord: [25.9231, -24.6282] }, + ZW: { code: "ZW", name: "津巴布韦", coord: [31.0522, -17.8252] }, + ZM: { code: "ZM", name: "赞比亚", coord: [28.2833, -15.4167] }, + MW: { code: "MW", name: "马拉维", coord: [33.7703, -13.9626] }, + MZ: { code: "MZ", name: "莫桑比克", coord: [32.5731, -25.9692] }, + SZ: { code: "SZ", name: "斯威士兰", coord: [31.1367, -26.3186] }, + LS: { code: "LS", name: "莱索托", coord: [27.4833, -29.3167] }, + // 印度洋岛屿 & 东非岛屿 + MG: { code: "MG", name: "马达加斯加", coord: [47.5079, -18.9137] }, + MU: { code: "MU", name: "毛里求斯", coord: [57.4977, -20.1609] }, + SC: { code: "SC", name: "塞舌尔", coord: [55.4491, -4.6191] }, + KM: { code: "KM", name: "科摩罗", coord: [43.2551, -11.7022] }, + RE: { code: "RE", name: "留尼汪", coord: [55.45, -20.8823] }, + YT: { code: "YT", name: "马约特", coord: [45.1662, -12.7871] }, + SH: { code: "SH", name: "圣赫勒拿", coord: [-5.7179, -15.9244] }, + IO: { code: "IO", name: "英属印度洋领地", coord: [72.4235, -7.3078] }, + // 大洋洲 + AU: { code: "AU", name: "澳大利亚", coord: [149.13, -35.2809] }, + NZ: { code: "NZ", name: "新西兰", coord: [174.7633, -36.8485] }, + PG: { code: "PG", name: "巴布亚新几内亚", coord: [147.1803, -9.4438] }, + FJ: { code: "FJ", name: "斐济", coord: [178.4419, -18.1416] }, + SB: { code: "SB", name: "所罗门群岛", coord: [160.1562, -9.4319] }, + VU: { code: "VU", name: "瓦努阿图", coord: [168.3213, -17.7334] }, + NC: { code: "NC", name: "新喀里多尼亚", coord: [166.4572, -22.2758] }, + WS: { code: "WS", name: "萨摩亚", coord: [-171.7511, -13.8506] }, + TO: { code: "TO", name: "汤加", coord: [-175.2018, -21.1394] }, + KI: { code: "KI", name: "基里巴斯", coord: [173.0176, 1.329] }, + FM: { code: "FM", name: "密克罗尼西亚", coord: [158.1499, 6.9248] }, + MH: { code: "MH", name: "马绍尔群岛", coord: [171.3798, 7.1164] }, + PW: { code: "PW", name: "帕劳", coord: [134.6248, 7.5004] }, + NR: { code: "NR", name: "瑙鲁", coord: [166.9212, -0.5477] }, + TV: { code: "TV", name: "图瓦卢", coord: [179.1966, -8.5243] }, + CK: { code: "CK", name: "库克群岛", coord: [-159.7752, -21.2078] }, + NU: { code: "NU", name: "纽埃", coord: [-169.9191, -19.0564] }, + WF: { code: "WF", name: "瓦利斯和富图纳", coord: [-178.1165, -13.2825] }, + PF: { code: "PF", name: "法属波利尼西亚", coord: [-149.5585, -17.5344] }, + GU: { code: "GU", name: "关岛", coord: [144.7937, 13.4443] }, + MP: { code: "MP", name: "北马里亚纳群岛", coord: [145.75, 15.18] }, + AS: { code: "AS", name: "美属萨摩亚", coord: [-170.702, -14.2756] }, + NF: { code: "NF", name: "诺福克岛", coord: [167.9547, -29.0562] }, + CC: { code: "CC", name: "科科斯群岛", coord: [96.835, -12.1642] }, + CX: { code: "CX", name: "圣诞岛", coord: [105.72, -10.43] }, + TK: { code: "TK", name: "托克劳", coord: [-171.8449, -9.1662] }, + PN: { code: "PN", name: "皮特凯恩群岛", coord: [-130.1006, -25.0662] }, + // 大西洋 & 偏远领地 + GS: { + code: "GS", + name: "南乔治亚和南桑威奇群岛", + coord: [-36.4931, -54.2836], + }, + BV: { code: "BV", name: "布韦岛", coord: [3.38, -54.42] }, + HM: { code: "HM", name: "赫德岛和麦克唐纳群岛", coord: [73.5044, -53.1044] }, + TF: { code: "TF", name: "法属南部领地", coord: [69.217, -49.3501] }, + UM: { code: "UM", name: "美国本土外小岛屿", coord: [166.6, 19.28] }, + // 极地 + AQ: { code: "AQ", name: "南极洲", coord: [0, -82] }, }; diff --git a/src/data/regions.ts b/src/data/regions.ts index e0ddbdf..0a389e4 100644 --- a/src/data/regions.ts +++ b/src/data/regions.ts @@ -4,30 +4,281 @@ export interface Region { } export const REGIONS: Region[] = [ + // 大中华区 + { code: "CN", name: "中国大陆" }, { code: "HK", name: "香港" }, { code: "TW", name: "台湾" }, { code: "MO", name: "澳门" }, - { code: "CN", name: "中国大陆" }, + // 东亚 { code: "JP", name: "日本" }, { code: "KR", name: "韩国" }, + { code: "KP", name: "朝鲜" }, + { code: "MN", name: "蒙古" }, + // 东南亚 { code: "SG", name: "新加坡" }, { code: "MY", name: "马来西亚" }, { code: "TH", name: "泰国" }, { code: "VN", name: "越南" }, { code: "PH", name: "菲律宾" }, { code: "ID", name: "印度尼西亚" }, + { code: "MM", name: "缅甸" }, + { code: "KH", name: "柬埔寨" }, + { code: "LA", name: "老挝" }, + { code: "TL", name: "东帝汶" }, + { code: "BN", name: "文莱" }, + // 南亚 { code: "IN", name: "印度" }, + { code: "PK", name: "巴基斯坦" }, + { code: "BD", name: "孟加拉国" }, + { code: "LK", name: "斯里兰卡" }, + { code: "NP", name: "尼泊尔" }, + { code: "BT", name: "不丹" }, + { code: "MV", name: "马尔代夫" }, + { code: "AF", name: "阿富汗" }, + // 中亚 + { code: "KZ", name: "哈萨克斯坦" }, + { code: "UZ", name: "乌兹别克斯坦" }, + { code: "TM", name: "土库曼斯坦" }, + { code: "TJ", name: "塔吉克斯坦" }, + { code: "KG", name: "吉尔吉斯斯坦" }, + // 高加索 + { code: "AZ", name: "阿塞拜疆" }, + { code: "AM", name: "亚美尼亚" }, + { code: "GE", name: "格鲁吉亚" }, + // 中东 + { code: "TR", name: "土耳其" }, + { code: "AE", name: "阿联酋" }, + { code: "SA", name: "沙特阿拉伯" }, + { code: "IL", name: "以色列" }, + { code: "PS", name: "巴勒斯坦" }, + { code: "IQ", name: "伊拉克" }, + { code: "IR", name: "伊朗" }, + { code: "SY", name: "叙利亚" }, + { code: "JO", name: "约旦" }, + { code: "LB", name: "黎巴嫩" }, + { code: "KW", name: "科威特" }, + { code: "QA", name: "卡塔尔" }, + { code: "BH", name: "巴林" }, + { code: "OM", name: "阿曼" }, + { code: "YE", name: "也门" }, + // 北美 { code: "US", name: "美国" }, { code: "CA", name: "加拿大" }, { code: "MX", name: "墨西哥" }, + { code: "GL", name: "格陵兰" }, + { code: "PM", name: "圣皮埃尔和密克隆" }, + // 中美洲 + { code: "GT", name: "危地马拉" }, + { code: "BZ", name: "伯利兹" }, + { code: "HN", name: "洪都拉斯" }, + { code: "SV", name: "萨尔瓦多" }, + { code: "NI", name: "尼加拉瓜" }, + { code: "CR", name: "哥斯达黎加" }, + { code: "PA", name: "巴拿马" }, + // 加勒比 + { code: "CU", name: "古巴" }, + { code: "JM", name: "牙买加" }, + { code: "HT", name: "海地" }, + { code: "DO", name: "多米尼加共和国" }, + { code: "PR", name: "波多黎各" }, + { code: "TT", name: "特立尼达和多巴哥" }, + { code: "BB", name: "巴巴多斯" }, + { code: "LC", name: "圣卢西亚" }, + { code: "VC", name: "圣文森特和格林纳丁斯" }, + { code: "GD", name: "格林纳达" }, + { code: "AG", name: "安提瓜和巴布达" }, + { code: "DM", name: "多米尼克" }, + { code: "KN", name: "圣基茨和尼维斯" }, + { code: "BS", name: "巴哈马" }, + { code: "TC", name: "特克斯和凯科斯群岛" }, + { code: "KY", name: "开曼群岛" }, + { code: "BM", name: "百慕大" }, + { code: "VG", name: "英属维尔京群岛" }, + { code: "VI", name: "美属维尔京群岛" }, + { code: "AW", name: "阿鲁巴" }, + { code: "CW", name: "库拉索" }, + { code: "SX", name: "荷属圣马丁" }, + { code: "MF", name: "法属圣马丁" }, + { code: "BL", name: "圣巴泰勒米" }, + { code: "BQ", name: "博内尔、圣尤斯特歇斯和萨巴" }, + { code: "GP", name: "瓜德罗普" }, + { code: "MQ", name: "马提尼克" }, + { code: "MS", name: "蒙特塞拉特" }, + { code: "AI", name: "安圭拉" }, + // 南美 { code: "BR", name: "巴西" }, { code: "AR", name: "阿根廷" }, + { code: "CL", name: "智利" }, + { code: "CO", name: "哥伦比亚" }, + { code: "PE", name: "秘鲁" }, + { code: "VE", name: "委内瑞拉" }, + { code: "EC", name: "厄瓜多尔" }, + { code: "BO", name: "玻利维亚" }, + { code: "PY", name: "巴拉圭" }, + { code: "UY", name: "乌拉圭" }, + { code: "GY", name: "圭亚那" }, + { code: "SR", name: "苏里南" }, + { code: "GF", name: "法属圭亚那" }, + { code: "FK", name: "福克兰群岛" }, + // 西欧 { code: "GB", name: "英国" }, - { code: "DE", name: "德国" }, + { code: "IE", name: "爱尔兰" }, { code: "FR", name: "法国" }, + { code: "DE", name: "德国" }, { code: "NL", name: "荷兰" }, + { code: "BE", name: "比利时" }, + { code: "LU", name: "卢森堡" }, + { code: "CH", name: "瑞士" }, + { code: "AT", name: "奥地利" }, + { code: "ES", name: "西班牙" }, + { code: "PT", name: "葡萄牙" }, + { code: "IT", name: "意大利" }, + { code: "MC", name: "摩纳哥" }, + { code: "AD", name: "安道尔" }, + { code: "SM", name: "圣马力诺" }, + { code: "VA", name: "梵蒂冈" }, + { code: "LI", name: "列支敦士登" }, + { code: "GI", name: "直布罗陀" }, + // 北欧 + { code: "SE", name: "瑞典" }, + { code: "NO", name: "挪威" }, + { code: "FI", name: "芬兰" }, + { code: "DK", name: "丹麦" }, + { code: "IS", name: "冰岛" }, + { code: "FO", name: "法罗群岛" }, + { code: "AX", name: "奥兰群岛" }, + { code: "SJ", name: "斯瓦尔巴和扬马延" }, + // 南欧 + { code: "GR", name: "希腊" }, + { code: "CY", name: "塞浦路斯" }, + { code: "MT", name: "马耳他" }, + // 英属皇家属地 + { code: "GG", name: "根西岛" }, + { code: "JE", name: "泽西岛" }, + { code: "IM", name: "马恩岛" }, + // 东欧 { code: "RU", name: "俄罗斯" }, - { code: "TR", name: "土耳其" }, - { code: "AU", name: "澳大利亚" }, + { code: "UA", name: "乌克兰" }, + { code: "BY", name: "白俄罗斯" }, + { code: "PL", name: "波兰" }, + { code: "CZ", name: "捷克" }, + { code: "SK", name: "斯洛伐克" }, + { code: "HU", name: "匈牙利" }, + { code: "RO", name: "罗马尼亚" }, + { code: "BG", name: "保加利亚" }, + { code: "MD", name: "摩尔多瓦" }, + { code: "LT", name: "立陶宛" }, + { code: "LV", name: "拉脱维亚" }, + { code: "EE", name: "爱沙尼亚" }, + // 巴尔干 + { code: "RS", name: "塞尔维亚" }, + { code: "XK", name: "科索沃" }, + { code: "HR", name: "克罗地亚" }, + { code: "SI", name: "斯洛文尼亚" }, + { code: "BA", name: "波黑" }, + { code: "ME", name: "黑山" }, + { code: "AL", name: "阿尔巴尼亚" }, + { code: "MK", name: "北马其顿" }, + // 北非 + { code: "EG", name: "埃及" }, + { code: "LY", name: "利比亚" }, + { code: "TN", name: "突尼斯" }, + { code: "DZ", name: "阿尔及利亚" }, + { code: "MA", name: "摩洛哥" }, + { code: "EH", name: "西撒哈拉" }, + { code: "SD", name: "苏丹" }, + // 东非 + { code: "ET", name: "埃塞俄比亚" }, + { code: "ER", name: "厄立特里亚" }, + { code: "DJ", name: "吉布提" }, + { code: "SO", name: "索马里" }, + { code: "KE", name: "肯尼亚" }, + { code: "TZ", name: "坦桑尼亚" }, + { code: "UG", name: "乌干达" }, + { code: "RW", name: "卢旺达" }, + { code: "BI", name: "布隆迪" }, + { code: "SS", name: "南苏丹" }, + // 西非 + { code: "NG", name: "尼日利亚" }, + { code: "GH", name: "加纳" }, + { code: "SN", name: "塞内加尔" }, + { code: "CI", name: "科特迪瓦" }, + { code: "CM", name: "喀麦隆" }, + { code: "ML", name: "马里" }, + { code: "BF", name: "布基纳法索" }, + { code: "NE", name: "尼日尔" }, + { code: "TD", name: "乍得" }, + { code: "MR", name: "毛里塔尼亚" }, + { code: "GM", name: "冈比亚" }, + { code: "GW", name: "几内亚比绍" }, + { code: "GN", name: "几内亚" }, + { code: "SL", name: "塞拉利昂" }, + { code: "LR", name: "利比里亚" }, + { code: "TG", name: "多哥" }, + { code: "BJ", name: "贝宁" }, + { code: "CV", name: "佛得角" }, + { code: "ST", name: "圣多美和普林西比" }, + // 中非 + { code: "CF", name: "中非共和国" }, + { code: "CG", name: "刚果共和国" }, + { code: "CD", name: "刚果民主共和国" }, + { code: "GA", name: "加蓬" }, + { code: "GQ", name: "赤道几内亚" }, + { code: "AO", name: "安哥拉" }, + // 南非洲 { code: "ZA", name: "南非" }, + { code: "NA", name: "纳米比亚" }, + { code: "BW", name: "博茨瓦纳" }, + { code: "ZW", name: "津巴布韦" }, + { code: "ZM", name: "赞比亚" }, + { code: "MW", name: "马拉维" }, + { code: "MZ", name: "莫桑比克" }, + { code: "SZ", name: "斯威士兰" }, + { code: "LS", name: "莱索托" }, + // 印度洋岛屿 & 东非岛屿 + { code: "MG", name: "马达加斯加" }, + { code: "MU", name: "毛里求斯" }, + { code: "SC", name: "塞舌尔" }, + { code: "KM", name: "科摩罗" }, + { code: "RE", name: "留尼汪" }, + { code: "YT", name: "马约特" }, + { code: "SH", name: "圣赫勒拿" }, + { code: "IO", name: "英属印度洋领地" }, + // 大洋洲 + { code: "AU", name: "澳大利亚" }, + { code: "NZ", name: "新西兰" }, + { code: "PG", name: "巴布亚新几内亚" }, + { code: "FJ", name: "斐济" }, + { code: "SB", name: "所罗门群岛" }, + { code: "VU", name: "瓦努阿图" }, + { code: "NC", name: "新喀里多尼亚" }, + { code: "WS", name: "萨摩亚" }, + { code: "TO", name: "汤加" }, + { code: "KI", name: "基里巴斯" }, + { code: "FM", name: "密克罗尼西亚" }, + { code: "MH", name: "马绍尔群岛" }, + { code: "PW", name: "帕劳" }, + { code: "NR", name: "瑙鲁" }, + { code: "TV", name: "图瓦卢" }, + { code: "CK", name: "库克群岛" }, + { code: "NU", name: "纽埃" }, + { code: "WF", name: "瓦利斯和富图纳" }, + { code: "PF", name: "法属波利尼西亚" }, + { code: "GU", name: "关岛" }, + { code: "MP", name: "北马里亚纳群岛" }, + { code: "AS", name: "美属萨摩亚" }, + { code: "NF", name: "诺福克岛" }, + { code: "CC", name: "科科斯群岛" }, + { code: "CX", name: "圣诞岛" }, + { code: "TK", name: "托克劳" }, + { code: "PN", name: "皮特凯恩群岛" }, + // 大西洋岛屿 + { code: "FK", name: "福克兰群岛" }, + { code: "GS", name: "南乔治亚和南桑威奇群岛" }, + { code: "BV", name: "布韦岛" }, + { code: "HM", name: "赫德岛和麦克唐纳群岛" }, + { code: "TF", name: "法属南部领地" }, + { code: "UM", name: "美国本土外小岛屿" }, + // 极地 + { code: "AQ", name: "南极洲" }, ]; diff --git a/src/pages/dashboard/map.vue b/src/pages/dashboard/map.vue index 07418d1..89b3717 100644 --- a/src/pages/dashboard/map.vue +++ b/src/pages/dashboard/map.vue @@ -60,32 +60,282 @@ const regionDisplayNames = ? new Intl.DisplayNames(["en"], { type: "region" }) : null; const regionNameFallback: Record = { + // 大中华区 HK: "Hong Kong", MO: "Macao", TW: "Taiwan", CN: "China", + // 东亚 JP: "Japan", KR: "South Korea", + MN: "Mongolia", + KP: "North Korea", + // 东南亚 SG: "Singapore", MY: "Malaysia", TH: "Thailand", VN: "Vietnam", PH: "Philippines", ID: "Indonesia", + MM: "Myanmar", + KH: "Cambodia", + LA: "Laos", + TL: "Timor-Leste", + BN: "Brunei", + // 南亚 IN: "India", + PK: "Pakistan", + BD: "Bangladesh", + LK: "Sri Lanka", + NP: "Nepal", + BT: "Bhutan", + MV: "Maldives", + AF: "Afghanistan", + // 中亚 + KZ: "Kazakhstan", + UZ: "Uzbekistan", + TM: "Turkmenistan", + TJ: "Tajikistan", + KG: "Kyrgyzstan", + // 高加索 + AZ: "Azerbaijan", + AM: "Armenia", + GE: "Georgia", + // 中东 + TR: "Turkey", + AE: "United Arab Emirates", + SA: "Saudi Arabia", + IL: "Israel", + PS: "Palestine", + IQ: "Iraq", + IR: "Iran", + SY: "Syria", + JO: "Jordan", + LB: "Lebanon", + KW: "Kuwait", + QA: "Qatar", + BH: "Bahrain", + OM: "Oman", + YE: "Yemen", + // 北美 US: "United States of America", CA: "Canada", MX: "Mexico", + GL: "Greenland", + PM: "Saint Pierre and Miquelon", + // 中美洲 + GT: "Guatemala", + BZ: "Belize", + HN: "Honduras", + SV: "El Salvador", + NI: "Nicaragua", + CR: "Costa Rica", + PA: "Panama", + // 加勒比 + CU: "Cuba", + JM: "Jamaica", + HT: "Haiti", + DO: "Dominican Republic", + PR: "Puerto Rico", + TT: "Trinidad and Tobago", + BB: "Barbados", + LC: "Saint Lucia", + VC: "Saint Vincent and the Grenadines", + GD: "Grenada", + AG: "Antigua and Barbuda", + DM: "Dominica", + KN: "Saint Kitts and Nevis", + BS: "Bahamas", + TC: "Turks and Caicos Islands", + KY: "Cayman Islands", + BM: "Bermuda", + VG: "British Virgin Islands", + VI: "United States Virgin Islands", + AW: "Aruba", + CW: "Curacao", + SX: "Sint Maarten", + MF: "Saint Martin", + BL: "Saint Barthelemy", + BQ: "Bonaire, Saint Eustatius and Saba", + GP: "Guadeloupe", + MQ: "Martinique", + MS: "Montserrat", + AI: "Anguilla", + // 南美 BR: "Brazil", AR: "Argentina", + CL: "Chile", + CO: "Colombia", + PE: "Peru", + VE: "Venezuela", + EC: "Ecuador", + BO: "Bolivia", + PY: "Paraguay", + UY: "Uruguay", + GY: "Guyana", + SR: "Suriname", + GF: "French Guiana", + FK: "Falkland Is.", + // 西欧 GB: "United Kingdom", - DE: "Germany", + IE: "Ireland", FR: "France", + DE: "Germany", NL: "Netherlands", + BE: "Belgium", + LU: "Luxembourg", + CH: "Switzerland", + AT: "Austria", + ES: "Spain", + PT: "Portugal", + IT: "Italy", + MC: "Monaco", + AD: "Andorra", + SM: "San Marino", + VA: "Vatican", + LI: "Liechtenstein", + GI: "Gibraltar", + // 北欧 + SE: "Sweden", + NO: "Norway", + FI: "Finland", + DK: "Denmark", + IS: "Iceland", + FO: "Faroe Is.", + AX: "Aland", + SJ: "Svalbard and Jan Mayen", + // 南欧 + GR: "Greece", + CY: "Cyprus", + MT: "Malta", + // 英属皇家属地 + GG: "Guernsey", + JE: "Jersey", + IM: "Isle of Man", + // 东欧 RU: "Russia", - TR: "Turkey", - AU: "Australia", + UA: "Ukraine", + BY: "Belarus", + PL: "Poland", + CZ: "Czech Republic", + SK: "Slovakia", + HU: "Hungary", + RO: "Romania", + BG: "Bulgaria", + MD: "Moldova", + LT: "Lithuania", + LV: "Latvia", + EE: "Estonia", + // 巴尔干 + RS: "Serbia", + XK: "Kosovo", + HR: "Croatia", + SI: "Slovenia", + BA: "Bosnia and Herzegovina", + ME: "Montenegro", + AL: "Albania", + MK: "North Macedonia", + // 北非 + EG: "Egypt", + LY: "Libya", + TN: "Tunisia", + DZ: "Algeria", + MA: "Morocco", + EH: "W. Sahara", + SD: "Sudan", + // 东非 + ET: "Ethiopia", + ER: "Eritrea", + DJ: "Djibouti", + SO: "Somalia", + KE: "Kenya", + TZ: "Tanzania", + UG: "Uganda", + RW: "Rwanda", + BI: "Burundi", + SS: "S. Sudan", + // 西非 + NG: "Nigeria", + GH: "Ghana", + SN: "Senegal", + CI: "Ivory Coast", + CM: "Cameroon", + ML: "Mali", + BF: "Burkina Faso", + NE: "Niger", + TD: "Chad", + MR: "Mauritania", + GM: "Gambia", + GW: "Guinea-Bissau", + GN: "Guinea", + SL: "Sierra Leone", + LR: "Liberia", + TG: "Togo", + BJ: "Benin", + CV: "Cape Verde", + ST: "Sao Tome and Principe", + // 中非 + CF: "Central African Rep.", + CG: "Congo", + CD: "Dem. Rep. Congo", + GA: "Gabon", + GQ: "Eq. Guinea", + AO: "Angola", + // 南非洲 ZA: "South Africa", + NA: "Namibia", + BW: "Botswana", + ZW: "Zimbabwe", + ZM: "Zambia", + MW: "Malawi", + MZ: "Mozambique", + SZ: "Swaziland", + LS: "Lesotho", + // 印度洋岛屿 + MG: "Madagascar", + MU: "Mauritius", + SC: "Seychelles", + KM: "Comoros", + RE: "Reunion", + YT: "Mayotte", + SH: "Saint Helena", + IO: "Br. Indian Ocean Ter.", + // 大洋洲 + AU: "Australia", + NZ: "New Zealand", + PG: "Papua New Guinea", + FJ: "Fiji", + SB: "Solomon Is.", + VU: "Vanuatu", + NC: "New Caledonia", + WS: "Samoa", + TO: "Tonga", + KI: "Kiribati", + FM: "Micronesia", + MH: "Marshall Is.", + PW: "Palau", + NR: "Nauru", + TV: "Tuvalu", + CK: "Cook Islands", + NU: "Niue", + WF: "Wallis and Futuna", + PF: "Fr. Polynesia", + GU: "Guam", + MP: "N. Mariana Is.", + AS: "American Samoa", + NF: "Norfolk Island", + CC: "Cocos (Keeling) Islands", + CX: "Christmas Island", + TK: "Tokelau", + PN: "Pitcairn Is.", + // 大西洋 & 偏远领地 + GS: "S. Georgia and S. Sandwich Isl.", + BV: "Bouvet Island", + HM: "Heard I. and McDonald Is.", + TF: "Fr. S. Antarctic Lands", + UM: "United States Minor Outlying Islands", + // 极地 + AQ: "Antarctica", }; function getCountryNameFromRegion(region?: string) { From 2c172587b602734662874ad80576b2c432f14293 Mon Sep 17 00:00:00 2001 From: LloydAsp Date: Thu, 21 May 2026 22:07:37 +0800 Subject: [PATCH 2/3] Revert "fix(backend): normalize backend URL on load and manual edit" This reverts commit c68d469ecaac13b94c568ff72b090757d9fcfa5c. --- src/composables/useBackendStore.ts | 22 ++++--------------- .../dashboard/servers-detail/[backendId].vue | 4 ++-- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/src/composables/useBackendStore.ts b/src/composables/useBackendStore.ts index 45c485a..01ff297 100644 --- a/src/composables/useBackendStore.ts +++ b/src/composables/useBackendStore.ts @@ -12,15 +12,6 @@ const LS_KEY_CURRENT = "nodeget_current_backend"; const backends = ref([]); const currentBackend = ref(null); -export const normalizeUrl = (url: string): string => { - try { - const parsed = new URL(url); - return `${parsed.protocol}//${parsed.host}`; - } catch { - return url; - } -}; - const init = () => { // Load backends from localStorage const storedBackends = localStorage.getItem(LS_KEY_BACKENDS); @@ -28,10 +19,7 @@ const init = () => { try { const parsed = JSON.parse(storedBackends); if (Array.isArray(parsed)) { - backends.value = (parsed as Backend[]).map((b) => ({ - ...b, - url: normalizeUrl(b.url), - })); + backends.value = parsed as Backend[]; } } catch (e) { console.error("Failed to parse backends from localStorage", e); @@ -44,10 +32,7 @@ const init = () => { try { const parsed = JSON.parse(storedCurrent); if (parsed && typeof parsed === "object") { - currentBackend.value = { - ...(parsed as Backend), - url: normalizeUrl((parsed as Backend).url), - }; + currentBackend.value = parsed as Backend; } } catch (e) { console.error("Failed to parse current backend from localStorage", e); @@ -118,9 +103,10 @@ watch( ); const addBackend = (backend: Backend) => { + const parsed = new URL(backend.url); const normalized: Backend = { ...backend, - url: normalizeUrl(backend.url), + url: `${parsed.protocol}//${parsed.host}`, }; backends.value.push(normalized); if (!currentBackend.value) { diff --git a/src/pages/dashboard/servers-detail/[backendId].vue b/src/pages/dashboard/servers-detail/[backendId].vue index 94304a7..0f2fd67 100644 --- a/src/pages/dashboard/servers-detail/[backendId].vue +++ b/src/pages/dashboard/servers-detail/[backendId].vue @@ -16,7 +16,7 @@ import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs"; // import { RadioGroup, RadioGroupItem, } from '@/components/ui/radio-group' -import { useBackendStore, normalizeUrl } from "@/composables/useBackendStore"; +import { useBackendStore } from "@/composables/useBackendStore"; import { useBackendExtra } from "@/composables/useBackendExtra"; import { getWsConnection } from "@/composables/useWsConnection"; import { useThemeStore } from "@/stores/theme"; @@ -233,7 +233,7 @@ function saveEdit(field: string) { if (field === "name") { backends.value[idx]!.name = editValue.value; } else if (field === "url") { - backends.value[idx]!.url = normalizeUrl(editValue.value); + backends.value[idx]!.url = editValue.value; } else if (field === "token") { backends.value[idx]!.token = editValue.value; } From 3bbe74f6dc4a3c8ce25a62c305a60f0bdf945e89 Mon Sep 17 00:00:00 2001 From: LloydAsp Date: Thu, 21 May 2026 23:30:09 +0800 Subject: [PATCH 3/3] fix: use correct base URL for extension worker routes - Use bucketBaseUrl instead of httpBaseUrl for worker-route paths in extensions - Simplify URL origin construction using url.origin property - Update backend routing to use backend name instead of encoded URL/token - Remove unused encoded backend ID page parameter --- .../node-manage/NodeManageTabServers.vue | 4 +--- src/composables/useBackendStore.ts | 6 +----- src/composables/useExtensions.ts | 6 +++--- .../{[backendId].vue => [backendName].vue} | 21 +++++++++++-------- src/types/typed-router.d.ts | 18 ++++++++-------- 5 files changed, 26 insertions(+), 29 deletions(-) rename src/pages/dashboard/servers-detail/{[backendId].vue => [backendName].vue} (97%) diff --git a/src/components/node-manage/NodeManageTabServers.vue b/src/components/node-manage/NodeManageTabServers.vue index c7d5890..cd30597 100644 --- a/src/components/node-manage/NodeManageTabServers.vue +++ b/src/components/node-manage/NodeManageTabServers.vue @@ -89,9 +89,7 @@ const initForm = ref<{ }); const handleManage = (backend: Backend) => { - router.push( - `/dashboard/servers-detail/${encodeURIComponent(backend.url)}:::${encodeURIComponent(backend.token)}`, - ); + router.push(`/dashboard/servers-detail/${backend.name}`); }; const handleSelect = async (backend: Backend) => { diff --git a/src/composables/useBackendStore.ts b/src/composables/useBackendStore.ts index 01ff297..b5d5119 100644 --- a/src/composables/useBackendStore.ts +++ b/src/composables/useBackendStore.ts @@ -103,11 +103,7 @@ watch( ); const addBackend = (backend: Backend) => { - const parsed = new URL(backend.url); - const normalized: Backend = { - ...backend, - url: `${parsed.protocol}//${parsed.host}`, - }; + const normalized: Backend = backend; backends.value.push(normalized); if (!currentBackend.value) { currentBackend.value = normalized; diff --git a/src/composables/useExtensions.ts b/src/composables/useExtensions.ts index 707ce3a..5f88f1b 100644 --- a/src/composables/useExtensions.ts +++ b/src/composables/useExtensions.ts @@ -131,7 +131,7 @@ export function useExtensions() { const bucketBaseUrl = computed(() => { try { const url = new URL(httpBaseUrl.value); - return `${url.protocol}//${url.host}`; + return url.origin; } catch { return httpBaseUrl.value; } @@ -674,7 +674,7 @@ export function useExtensions() { if (storage === "static") { return `${bucketBaseUrl.value}/nodeget/static/${getBucketName(extensionId)}/${path}`; } - return `${httpBaseUrl.value}/worker-route/static-worker-route/${extensionId}/${path}`; + return `${bucketBaseUrl.value}/worker-route/static-worker-route/${extensionId}/${path}`; }; const getIframeUrl = async ( @@ -692,7 +692,7 @@ export function useExtensions() { const route = workerName ? ((await jsRuntime.getWorker(workerName))?.route ?? extensionId) : extensionId; - base = `${httpBaseUrl.value}/worker-route/${route}/${workerEntry}`; + base = `${bucketBaseUrl.value}/worker-route/${route}/${workerEntry}`; } else { base = getStaticUrl(extensionId, entry, storage); } diff --git a/src/pages/dashboard/servers-detail/[backendId].vue b/src/pages/dashboard/servers-detail/[backendName].vue similarity index 97% rename from src/pages/dashboard/servers-detail/[backendId].vue rename to src/pages/dashboard/servers-detail/[backendName].vue index 0f2fd67..440c742 100644 --- a/src/pages/dashboard/servers-detail/[backendId].vue +++ b/src/pages/dashboard/servers-detail/[backendName].vue @@ -40,15 +40,15 @@ const { serverInfo, saveAgentConfigWsUrl, refreshAll, serverInfoLoading } = const themeStore = useThemeStore(); const backend = computed(() => { - const raw = (route.params as { backendId: string }).backendId; - const sep = raw.indexOf(":::"); - if (sep === -1) { - const token = decodeURIComponent(raw); - return backends.value.find((b) => b.token === token) ?? null; - } - const url = decodeURIComponent(raw.slice(0, sep)); - const token = decodeURIComponent(raw.slice(sep + 3)); - return backends.value.find((b) => b.url === url && b.token === token) ?? null; + const backendName = (route.params as { backendName: string }).backendName; + // const sep = raw.indexOf(":::"); + // if (sep === -1) { + // const token = decodeURIComponent(raw); + // return backends.value.find((b) => b.token === token) ?? null; + // } + // const url = decodeURIComponent(raw.slice(0, sep)); + // const token = decodeURIComponent(raw.slice(sep + 3)); + return backends.value.find((b) => b.name === backendName) ?? null; }); const isActive = computed( @@ -232,6 +232,9 @@ function saveEdit(field: string) { if (field === "name") { backends.value[idx]!.name = editValue.value; + router.replace( + `/dashboard/servers-detail/${encodeURIComponent(editValue.value)}`, + ); } else if (field === "url") { backends.value[idx]!.url = editValue.value; } else if (field === "token") { diff --git a/src/types/typed-router.d.ts b/src/types/typed-router.d.ts index 81e1855..3a51c2a 100644 --- a/src/types/typed-router.d.ts +++ b/src/types/typed-router.d.ts @@ -65,7 +65,7 @@ declare module 'vue-router/auto-routes' { | '/dashboard/overview' | '/dashboard/scripts' | '/dashboard/servers' - | '/dashboard/servers-detail/[backendId]' + | '/dashboard/servers-detail/[backendName]' | '/dashboard/settings' | '/dashboard/settings/general' | '/dashboard/settings/site' @@ -298,11 +298,11 @@ declare module 'vue-router/auto-routes' { Record, | never >, - '/dashboard/servers-detail/[backendId]': RouteRecordInfo< - '/dashboard/servers-detail/[backendId]', - '/dashboard/servers-detail/:backendId', - { backendId: ParamValue }, - { backendId: ParamValue }, + '/dashboard/servers-detail/[backendName]': RouteRecordInfo< + '/dashboard/servers-detail/[backendName]', + '/dashboard/servers-detail/:backendName', + { backendName: ParamValue }, + { backendName: ParamValue }, | never >, '/dashboard/settings': RouteRecordInfo< @@ -456,7 +456,7 @@ declare module 'vue-router/auto-routes' { | '/dashboard/overview' | '/dashboard/scripts' | '/dashboard/servers' - | '/dashboard/servers-detail/[backendId]' + | '/dashboard/servers-detail/[backendName]' | '/dashboard/settings' | '/dashboard/settings/general' | '/dashboard/settings/site' @@ -664,9 +664,9 @@ declare module 'vue-router/auto-routes' { views: | never } - 'src/pages/dashboard/servers-detail/[backendId].vue': { + 'src/pages/dashboard/servers-detail/[backendName].vue': { routes: - | '/dashboard/servers-detail/[backendId]' + | '/dashboard/servers-detail/[backendName]' views: | never }