From 116b2af4effd3b5a978c4f1b1b56cf0fc6add2ca Mon Sep 17 00:00:00 2001 From: HenryDu8133 <813367384@qq.com> Date: Sat, 11 Jul 2026 21:46:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E4=BC=98=E5=8C=96=E6=8D=A2?= =?UTF-8?q?=E4=B9=98=E8=AE=BE=E7=BD=AE=E4=B8=8E=E5=9D=90=E6=A0=87=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E9=80=BB=E8=BE=91=EF=BC=8C=E8=87=AA=E5=8A=A8=E8=AF=86?= =?UTF-8?q?=E5=88=AB=E5=90=8C=E5=90=8D=E6=8D=A2=E4=B9=98=E7=AB=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/services/logic.js | 27 +++++++++++++ web/.asset-version-state.json | 4 +- web/asset-versions.json | 2 +- web/index.html | 33 +++++++++++----- web/index.js | 74 +++++++++++++++++++++++++++++------ 5 files changed, 117 insertions(+), 23 deletions(-) diff --git a/server/services/logic.js b/server/services/logic.js index 478a7cc..3cfaebf 100644 --- a/server/services/logic.js +++ b/server/services/logic.js @@ -86,6 +86,33 @@ const buildRouteGraph = (stations, lines, fares, cfg) => { }); }; + // Auto-link stations with the same name (Chinese or English) + const stationsByName = new Map(); + const normKey = (s) => String(s || '').trim().toLowerCase().replace(/\s+/g, ''); + for (const s of (stations || [])) { + const code = String(s?.code || '').trim(); + if (!code) continue; + const cn = normKey(s?.name || s?.cn_name || s?.station_name); + const en = normKey(s?.en_name || s?.en || s?.enName); + if (cn) { + if (!stationsByName.has(cn)) stationsByName.set(cn, []); + stationsByName.get(cn).push(code); + } + if (en && en !== cn) { + if (!stationsByName.has(en)) stationsByName.set(en, []); + stationsByName.get(en).push(code); + } + } + + for (const codes of stationsByName.values()) { + if (codes.length < 2) continue; + for (let i = 0; i < codes.length; i++) { + for (let j = i + 1; j < codes.length; j++) { + addTransferEdge(codes[i], codes[j]); + } + } + } + const transfers = Array.isArray(cfg?.transfers) ? cfg.transfers : []; for (const p of transfers) { const u = String(p?.[0] || '').trim(); diff --git a/web/.asset-version-state.json b/web/.asset-version-state.json index debe566..8a94c67 100644 --- a/web/.asset-version-state.json +++ b/web/.asset-version-state.json @@ -28,8 +28,8 @@ "mtimeMs": 1783666241687.1482 }, "index.js": { - "size": 82021, - "mtimeMs": 1783775091220.4558 + "size": 84094, + "mtimeMs": 1783777527829.4636 }, "ic-card-admin.js": { "size": 19095, diff --git a/web/asset-versions.json b/web/asset-versions.json index f9e70ba..647954a 100644 --- a/web/asset-versions.json +++ b/web/asset-versions.json @@ -6,7 +6,7 @@ "ticket-order.js": 17, "ticket-search.js": 12, "ticket-route.js": 3, - "index.js": 3, + "index.js": 4, "ic-card-admin.js": 3, "ic-card-order.js": 3, "ic-card-detail.js": 2, diff --git a/web/index.html b/web/index.html index 2e6613d..e2b041f 100644 --- a/web/index.html +++ b/web/index.html @@ -361,16 +361,27 @@ +

+ 提示:系统会自动将中文名或英文名相同的站点连接为换乘站,无需手动设置。 +

-
+
- + + + + + + +

按住 Ctrl / Cmd 键多选

@@ -963,7 +978,7 @@
- +