Files
FSE-Ticket.sys/web/home.html
T
Henry_Du e07536e8c0 chore(web,server): 移除全套AI助手功能相关代码
删除后端AI助手服务文件及对应的/api/ai-assistant接口路由,移除前端ai-assistant.js脚本及所有HTML页面中的脚本引用,清理静态资源版本配置文件里的相关配置项,同时更新bump-web-asset-version.js脚本的示例命令与错误提示文本。
2026-07-09 21:14:40 +08:00

250 lines
12 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>首页|FSE铁路运输票务系统</title>
<link rel="icon" type="image/png" href="/FSE-ticket.png">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="/style.css?v=13">
</head>
<body class="public-search jr-public-page">
<div class="jr-public-shell">
<header class="jr-topbar">
<div class="jr-topbar-inner">
<a href="https://ticket.fse-media.group" class="jr-top-link" id="homeTopLink">
<i class="fas fa-train"></i>
<span>FSE铁路运输票务系统</span>
</a>
<div class="jr-top-status is-checking" data-server-status-root>
<span class="jr-top-status-label">服务器状态</span>
<span class="jr-top-status-dot"></span>
<span class="jr-top-status-value" data-server-status-value>检测中</span>
</div>
</div>
</header>
<div class="jr-brandbar">
<div class="jr-brandbar-inner">
<a href="https://ticket.fse-media.group" class="jr-brand" id="brandLink">
<img src="/FSE-ticket.png" alt="FSE Railway" class="jr-brand-logo" />
<div class="jr-brand-copy">
<strong>FarSight-T.N.E铁路运输</strong>
<span>票务服务</span>
</div>
</a>
<nav class="jr-nav" aria-label="站点导航">
<a href="https://ticket.fse-media.group/home.html" data-link="home" class="is-active">首页</a>
<a href="https://ticket.fse-media.group/order" data-link="order">线上预定</a>
<a href="https://ticket.fse-media.group/search" data-link="search">车票查询</a>
<a href="https://ticket.fse-media.group/ic-card/search" data-link="card-search">IC 卡查询</a>
<a href="https://ticket.fse-media.group/ic-card/order" data-link="card-order">线上购卡</a>
</nav>
</div>
</div>
<main class="jr-public-main">
<section class="jr-home-hero">
<article class="jr-home-hero-main">
<span class="jr-kicker">FSE PUBLIC TICKET PORTAL</span>
<h1>FSE 铁路运输票务系统</h1>
<p class="jr-home-hero-text">
⌈票行千里,智通未来⌋
购票、查询、办卡
</p>
<div class="jr-home-hero-actions">
<a href="https://ticket.fse-media.group/order" data-link="order" class="jr-cta-primary">开始预定</a>
<a href="https://ticket.fse-media.group/search" data-link="search" class="jr-cta-secondary">查询票据</a>
</div>
<div class="jr-home-hero-stats">
<div class="jr-home-stat">
<strong>线上预定</strong>
<span>生成凭证码并在站内兑票</span>
</div>
<div class="jr-home-stat">
<strong>电子票查询</strong>
<span>支持票号、区间和日期检索</span>
</div>
<div class="jr-home-stat">
<strong>线路资源</strong>
<span>查看线路图与票价图</span>
</div>
</div>
</article>
<aside class="jr-home-hero-side">
<div class="jr-home-side-head">
<span class="jr-kicker">SERVICE GUIDE</span>
<h2>乘车流程</h2>
</div>
<ol class="jr-process-list jr-home-process">
<li>在线选择起点、终点、车型和乘次数量</li>
<li>确认票价与路径后生成订单凭证</li>
<li>前往游戏内售票机输入凭证码兑票</li>
</ol>
<div class="jr-home-side-strip">
<div>
<span>支持服务</span>
<strong>订票 / 查询 / 办卡</strong>
</div>
</div>
</aside>
</section>
<section class="jr-home-alert">
<div class="jr-alert-title">
<i class="fas fa-circle-info"></i>
<span>旅客提醒</span>
</div>
<p>线上预定生成的凭证码与IC卡订单号请及时保存;如需补查订单、车票状态或IC卡信息,可在对应查询页继续检索。</p>
</section>
<section class="jr-page-intro">
<span class="jr-kicker">SERVICE ENTRY</span>
<h1>从首页直接进入票务服务</h1>
<p>线上预定 / 车票查询 / 凭证核验 / IC卡</p>
</section>
<section class="jr-home-service-grid">
<a href="https://ticket.fse-media.group/order" data-link="order" class="jr-home-service-card jr-home-service-primary">
<span class="jr-feature-icon"><i class="fas fa-ticket-alt"></i></span>
<span class="jr-feature-copy">
<strong>线上预定</strong>
<span>在线选择区间、车型与乘次,并生成兑票凭证。</span>
</span>
</a>
<a href="https://ticket.fse-media.group/search" data-link="search" class="jr-home-service-card">
<span class="jr-feature-icon"><i class="fas fa-search"></i></span>
<span class="jr-feature-copy">
<strong>车票查询</strong>
<span>输入票号、站点或日期,快速查看票据详情和流转记录。</span>
</span>
</a>
<a href="https://ticket.fse-media.group/search" data-link="search" class="jr-home-service-card">
<span class="jr-feature-icon"><i class="fas fa-receipt"></i></span>
<span class="jr-feature-copy">
<strong>凭证核验</strong>
<span>查询订单凭证状态,确认是否已被使用或仍可兑票。</span>
</span>
</a>
<a href="https://ticket.fse-media.group/ic-card/order" data-link="ic-card-order" class="jr-home-service-card">
<span class="jr-feature-icon"><i class="fas fa-credit-card"></i></span>
<span class="jr-feature-copy">
<strong>线上购卡</strong>
<span>在线填写购卡信息,生成IC卡订单号与领卡卡号。</span>
</span>
</a>
<a href="https://ticket.fse-media.group/ic-card/search" data-link="ic-card-search" class="jr-home-service-card">
<span class="jr-feature-icon"><i class="fas fa-wallet"></i></span>
<span class="jr-feature-copy">
<strong>IC 卡查询</strong>
<span>输入卡号或订单号,查看卡状态、余额与最近记录。</span>
</span>
</a>
<article class="jr-home-mini-card">
<span class="jr-kicker">POPULAR</span>
<h3>常用操作</h3>
<ul class="jr-guide-list">
<li>先订票,再截图保存凭证码。</li>
<li>线上购卡后请同时保存卡号与订单号。</li>
<li>如票据状态不明,优先进入查询页核验。</li>
<li>查看线路资源时可对照票价图与线路图。</li>
</ul>
</article>
</section>
<section class="jr-home-assets">
<article class="jr-panel-card">
<div class="jr-panel-headline">
<h3>票价图</h3>
<span class="jr-panel-note">Fare Map</span>
</div>
<div id="fareMapBox" class="jr-asset-frame">
<div class="text-muted">加载中...</div>
</div>
</article>
<article class="jr-panel-card">
<div class="jr-panel-headline">
<h3>线路图</h3>
<span class="jr-panel-note">Route Map</span>
</div>
<div id="routeMapBox" class="jr-asset-frame">
<div class="text-muted">加载中...</div>
</div>
</article>
</section>
<footer class="site-footer jr-footer-space">
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener noreferrer">粤ICP备2025450093号</a>
<span class="version">v1.0.12</span>
</footer>
</main>
</div>
<script src="/custom-dialog.js?v=12"></script>
<script src="/public-status.js?v=13"></script>
<script>
const loadPublicAssets = async () => {
const fareMapBox = document.getElementById('fareMapBox');
const routeMapBox = document.getElementById('routeMapBox');
try {
const v = String(Date.now());
try {
const r2 = await fetch(`/api/public/fares/map/light?t=${encodeURIComponent(v)}`, { cache: 'no-store' });
const svg = await r2.text();
fareMapBox.innerHTML = `<div class="jr-asset-frame">${svg}</div>`;
} catch (e) {
fareMapBox.innerHTML = '<div class="text-muted">票价图加载失败</div>';
}
const r = await fetch('/api/assets/manifest', { cache: 'no-store' });
const m = await r.json();
const mv = (m && m.updatedAt) ? String(m.updatedAt) : v;
if (m && m.routeMap) {
const img = document.createElement('img');
img.alt = '线路图';
img.src = `/assets/${encodeURIComponent(m.routeMap)}?v=${encodeURIComponent(mv)}`;
routeMapBox.innerHTML = '<div class="jr-asset-frame"></div>';
routeMapBox.firstElementChild.appendChild(img);
} else {
routeMapBox.innerHTML = '<div class="text-muted">暂无线路图</div>';
}
} catch (e) {
fareMapBox.innerHTML = '<div class="text-muted">票价图加载失败</div>';
routeMapBox.innerHTML = '<div class="text-muted">线路图加载失败</div>';
}
};
document.addEventListener('DOMContentLoaded', () => {
const isDomain = location.hostname.includes('fse-media.group');
const links = {
home: isDomain ? 'https://ticket.fse-media.group' : '/home.html',
order: isDomain ? 'https://ticket.fse-media.group/order' : '/ticket-order.html',
search: isDomain ? 'https://ticket.fse-media.group/search' : '/ticket-search.html',
'card-search': isDomain ? 'https://ticket.fse-media.group/ic-card/search' : '/ic-card-search.html',
'card-order': isDomain ? 'https://ticket.fse-media.group/ic-card/order' : '/ic-card-order.html'
};
const homeTopLink = document.getElementById('homeTopLink');
const brandLink = document.getElementById('brandLink');
if (homeTopLink) homeTopLink.href = links.home;
if (brandLink) brandLink.href = links.home;
document.querySelectorAll('[data-link]').forEach((el) => {
const key = el.getAttribute('data-link');
if (links[key]) el.href = links[key];
});
loadPublicAssets();
});
</script>
</body>
</html>