feat: 新增自定义单程票价、站点名称展示及中文事件类型支持
后端调整:支持单程订单使用客户端传入的自定义票价,无需通过系统自动计算 前端优化:新增中文事件类型支持,添加站点编码转中文名称功能,更新日志展示站点中文名称,自动拉取站点列表构建解析映射
This commit is contained in:
+13
-3
@@ -257,9 +257,19 @@ router.post('/orders', async (req, res) => {
|
|||||||
return res.status(400).json({ ok: false, error: 'missing start/terminal/ride_date' });
|
return res.status(400).json({ ok: false, error: 'missing start/terminal/ride_date' });
|
||||||
}
|
}
|
||||||
const resolveStation = buildStationResolver();
|
const resolveStation = buildStationResolver();
|
||||||
const fromCode = resolveStation(from);
|
let fromCode = resolveStation(from);
|
||||||
const toCode = resolveStation(to);
|
let toCode = resolveStation(to);
|
||||||
const priceSingle = LogicService.computePrice(fromCode, toCode, type);
|
|
||||||
|
let priceSingle = 0;
|
||||||
|
if (type === 'single') {
|
||||||
|
priceSingle = Math.max(0, Number(req.body.price) || 0);
|
||||||
|
// keep from and to as whatever string was passed (e.g. line and fare)
|
||||||
|
fromCode = from;
|
||||||
|
toCode = to;
|
||||||
|
} else {
|
||||||
|
priceSingle = LogicService.computePrice(fromCode, toCode, type);
|
||||||
|
}
|
||||||
|
|
||||||
const price = Math.max(0, priceSingle * t);
|
const price = Math.max(0, priceSingle * t);
|
||||||
const code = LogicService.genVoucherCode();
|
const code = LogicService.genVoucherCode();
|
||||||
const rec = { code, start: fromCode, terminal: toCode, train_type: type, trips: t, ride_date: date, price, created_ts: Date.now(), consumed: false };
|
const rec = { code, start: fromCode, terminal: toCode, train_type: type, trips: t, ride_date: date, price, created_ts: Date.now(), consumed: false };
|
||||||
|
|||||||
+21
-5
@@ -199,18 +199,23 @@
|
|||||||
const cardType = ev?.detail?.card_type || ev?.card_type || ev?.["类型"] || '储值卡';
|
const cardType = ev?.detail?.card_type || ev?.card_type || ev?.["类型"] || '储值卡';
|
||||||
return `[${cardType}];余额: ${balance};时间: ${timeStr}`;
|
return `[${cardType}];余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (type === 'topup' || type === 'refill' || action === 'topup') {
|
if (type === 'topup' || type === 'refill' || action === 'topup' || type === '充值') {
|
||||||
const amount = ev?.amount ?? ev?.["充值数额"] ?? 0;
|
const amount = ev?.amount ?? ev?.["充值数额"] ?? 0;
|
||||||
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
|
if (code !== '---' || ev?.station_name) {
|
||||||
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};充值数额: ${amount};余额: ${balance};时间: ${timeStr}`;
|
||||||
|
}
|
||||||
return `机器ID: ${deviceId};充值数额: ${amount};余额: ${balance};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};充值数额: ${amount};余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (action === 'entry' || type === 'entry') {
|
if (action === 'entry' || type === 'entry' || type === '进站') {
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (action === 'exit' || type === 'exit') {
|
if (action === 'exit' || type === 'exit' || type === '出站') {
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,7 +360,18 @@
|
|||||||
}, 240);
|
}, 240);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let stationMap = {};
|
||||||
|
window.getStationName = (code) => stationMap[code] || code;
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
|
try {
|
||||||
|
const res = await fetch('/api/public/stations');
|
||||||
|
const list = await res.json();
|
||||||
|
if (Array.isArray(list)) {
|
||||||
|
list.forEach(s => { stationMap[s.code] = s.name || s.cn_name; });
|
||||||
|
}
|
||||||
|
} catch(e) {}
|
||||||
|
|
||||||
await pingServer();
|
await pingServer();
|
||||||
await refreshList(false);
|
await refreshList(false);
|
||||||
if (state.cards[0]) await loadCard(state.cards[0].card_id);
|
if (state.cards[0]) await loadCard(state.cards[0].card_id);
|
||||||
|
|||||||
+22
-2
@@ -100,16 +100,21 @@
|
|||||||
}
|
}
|
||||||
if (type === 'topup' || type === 'refill' || action === 'topup' || type === '充值') {
|
if (type === 'topup' || type === 'refill' || action === 'topup' || type === '充值') {
|
||||||
const amount = ev?.amount ?? ev?.["充值数额"] ?? 0;
|
const amount = ev?.amount ?? ev?.["充值数额"] ?? 0;
|
||||||
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
|
if (code !== '---' || ev?.station_name) {
|
||||||
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};充值数额: ${amount};余额: ${balance};时间: ${timeStr}`;
|
||||||
|
}
|
||||||
return `机器ID: ${deviceId};充值数额: ${amount};余额: ${balance};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};充值数额: ${amount};余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (action === 'entry' || type === 'entry' || type === '进站') {
|
if (action === 'entry' || type === 'entry' || type === '进站') {
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (action === 'exit' || type === 'exit' || type === '出站') {
|
if (action === 'exit' || type === 'exit' || type === '出站') {
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,10 +266,25 @@
|
|||||||
|
|
||||||
const params = new URLSearchParams(location.search);
|
const params = new URLSearchParams(location.search);
|
||||||
const q = params.get('q');
|
const q = params.get('q');
|
||||||
|
|
||||||
|
let stationMap = {};
|
||||||
|
window.getStationName = (code) => stationMap[code] || code;
|
||||||
|
|
||||||
|
async function init() {
|
||||||
|
try {
|
||||||
|
const res = await fetch('/api/public/stations');
|
||||||
|
const list = await res.json();
|
||||||
|
if (Array.isArray(list)) {
|
||||||
|
list.forEach(s => { stationMap[s.code] = s.name || s.cn_name; });
|
||||||
|
}
|
||||||
|
} catch(e) {}
|
||||||
|
|
||||||
if (q) {
|
if (q) {
|
||||||
inputEl.value = q;
|
inputEl.value = q;
|
||||||
doQuery().catch((error) => renderQueryError(error.message || String(error)));
|
doQuery().catch((error) => renderQueryError(error.message || String(error)));
|
||||||
} else {
|
} else {
|
||||||
loadAllCards().catch((error) => renderQueryError(error.message || String(error)));
|
loadAllCards().catch((error) => renderQueryError(error.message || String(error)));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
init();
|
||||||
})();
|
})();
|
||||||
|
|||||||
+14
-7
@@ -353,22 +353,24 @@ createApp({
|
|||||||
|
|
||||||
if (type === 'sale' || type === '售票') {
|
if (type === 'sale' || type === '售票') {
|
||||||
const cost = ev?.cost ?? ev?.price ?? ev?.amount ?? ev?.["票价"] ?? ev?.["售票额"] ?? '0';
|
const cost = ev?.cost ?? ev?.price ?? ev?.amount ?? ev?.["票价"] ?? ev?.["售票额"] ?? '0';
|
||||||
return `机器ID: ${deviceId};票价: ${cost};时间: ${timeStr}`;
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
|
const name = ev?.station_name || ev?.["售票站"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};票价: ${cost};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (type === 'entry' || action === 'entry') {
|
if (type === 'entry' || action === 'entry') {
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (type === 'exit' || action === 'exit') {
|
if (type === 'exit' || action === 'exit') {
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// fallback
|
// fallback
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -459,18 +461,23 @@ createApp({
|
|||||||
const cardType = ev?.detail?.card_type || ev?.card_type || ev?.["类型"] || '储值卡';
|
const cardType = ev?.detail?.card_type || ev?.card_type || ev?.["类型"] || '储值卡';
|
||||||
return `[${cardType}];余额: ${balance};时间: ${timeStr}`;
|
return `[${cardType}];余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (type === 'topup' || type === 'refill' || action === 'topup') {
|
if (type === 'topup' || type === 'refill' || action === 'topup' || type === '充值') {
|
||||||
const amount = ev?.amount ?? ev?.["充值数额"] ?? 0;
|
const amount = ev?.amount ?? ev?.["充值数额"] ?? 0;
|
||||||
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
|
if (code !== '---' || ev?.station_name) {
|
||||||
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};充值数额: ${amount};余额: ${balance};时间: ${timeStr}`;
|
||||||
|
}
|
||||||
return `机器ID: ${deviceId};充值数额: ${amount};余额: ${balance};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};充值数额: ${amount};余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (action === 'entry' || type === 'entry') {
|
if (action === 'entry' || type === 'entry') {
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (action === 'exit' || type === 'exit') {
|
if (action === 'exit' || type === 'exit') {
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};余额: ${balance};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-4
@@ -233,22 +233,24 @@ createApp({
|
|||||||
|
|
||||||
if (type === 'sale' || type === '售票') {
|
if (type === 'sale' || type === '售票') {
|
||||||
const cost = ev?.cost ?? ev?.price ?? ev?.amount ?? ev?.["票价"] ?? ev?.["售票额"] ?? '0';
|
const cost = ev?.cost ?? ev?.price ?? ev?.amount ?? ev?.["票价"] ?? ev?.["售票额"] ?? '0';
|
||||||
return `机器ID: ${deviceId};票价: ${cost};时间: ${timeStr}`;
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
|
const name = ev?.station_name || ev?.["售票站"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};票价: ${cost};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (type === 'entry' || action === 'entry') {
|
if (type === 'entry' || action === 'entry') {
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (type === 'exit' || action === 'exit') {
|
if (type === 'exit' || action === 'exit') {
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// fallback
|
// fallback
|
||||||
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
const code = ev?.station_code || ev?.["站点编号"] || '---';
|
||||||
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || '---';
|
const name = ev?.station_name || ev?.["站点中文"] || ev?.["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+20
-4
@@ -115,22 +115,24 @@
|
|||||||
|
|
||||||
if (type === 'sale' || type === '售票') {
|
if (type === 'sale' || type === '售票') {
|
||||||
const cost = ev.cost ?? ev.price ?? ev.amount ?? ev["票价"] ?? ev["售票额"] ?? '0';
|
const cost = ev.cost ?? ev.price ?? ev.amount ?? ev["票价"] ?? ev["售票额"] ?? '0';
|
||||||
return `机器ID: ${deviceId};票价: ${cost};时间: ${timeStr}`;
|
const code = ev.station_code || ev["站点编号"] || '---';
|
||||||
|
const name = ev.station_name || ev["售票站"] || ev["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};票价: ${cost};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (type === 'entry' || action === 'entry') {
|
if (type === 'entry' || action === 'entry') {
|
||||||
const code = ev.station_code || ev["站点编号"] || '---';
|
const code = ev.station_code || ev["站点编号"] || '---';
|
||||||
const name = ev.station_name || ev["站点中文"] || ev["发生站"] || '---';
|
const name = ev.station_name || ev["站点中文"] || ev["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
if (type === 'exit' || action === 'exit') {
|
if (type === 'exit' || action === 'exit') {
|
||||||
const code = ev.station_code || ev["站点编号"] || '---';
|
const code = ev.station_code || ev["站点编号"] || '---';
|
||||||
const name = ev.station_name || ev["站点中文"] || ev["发生站"] || '---';
|
const name = ev.station_name || ev["站点中文"] || ev["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// fallback
|
// fallback
|
||||||
const code = ev.station_code || ev["站点编号"] || '---';
|
const code = ev.station_code || ev["站点编号"] || '---';
|
||||||
const name = ev.station_name || ev["站点中文"] || ev["发生站"] || '---';
|
const name = ev.station_name || ev["站点中文"] || ev["发生站"] || (typeof getStationName === 'function' && code !== '---' ? getStationName(code) : code);
|
||||||
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
return `机器ID: ${deviceId};站点编号: ${code};站点中文: ${name};时间: ${timeStr}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -302,6 +304,18 @@
|
|||||||
|
|
||||||
const sp = new URLSearchParams(location.search);
|
const sp = new URLSearchParams(location.search);
|
||||||
const qid = sp.get('id');
|
const qid = sp.get('id');
|
||||||
|
let stationMap = {};
|
||||||
|
window.getStationName = (code) => stationMap[code] || code;
|
||||||
|
|
||||||
|
async function init() {
|
||||||
|
try {
|
||||||
|
const res = await fetch('/api/public/stations');
|
||||||
|
const list = await res.json();
|
||||||
|
if (Array.isArray(list)) {
|
||||||
|
list.forEach(s => { stationMap[s.code] = s.name || s.cn_name; });
|
||||||
|
}
|
||||||
|
} catch(e) {}
|
||||||
|
|
||||||
if (qid) {
|
if (qid) {
|
||||||
qEl.value = qid;
|
qEl.value = qid;
|
||||||
loadDetail(qid);
|
loadDetail(qid);
|
||||||
@@ -310,5 +324,7 @@
|
|||||||
doSearch();
|
doSearch();
|
||||||
}
|
}
|
||||||
loadPopular();
|
loadPopular();
|
||||||
|
}
|
||||||
|
init();
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user