diff --git a/public/js/app.js b/public/js/app.js
index f8d316d..da8bffa 100644
--- a/public/js/app.js
+++ b/public/js/app.js
@@ -67,7 +67,7 @@ const App = {
}
if (page === 'install') { this.showPublic('install'); return; }
- if (page === 'home') { this.showPublic('home', param); document.getElementById('top-auth').classList.add('hidden'); return; }
+ if (page === 'home') { this.showPublic('home', param); return; }
if (page === 'login' || page === 'register' || page === 'forgot' || page === 'reset') { this.showPublic(page); return; }
if (!Auth.logged()) { location.hash = '#/login'; return; }
@@ -107,7 +107,7 @@ const App = {
document.getElementById('main-layout').classList.add('hidden');
const pub = document.getElementById('public-page');
pub.classList.remove('hidden');
- this.updateTopAuth();
+ if (page !== 'home') this.updateTopAuth();
const comp = page === 'login' ? LoginPage : page === 'register' ? RegisterPage : page === 'install' ? InstallPage : HomePage;
comp.render(param).then(html => { pub.innerHTML = html; if (comp.mount) comp.mount(param); }).catch(() => {
pub.innerHTML = '
';
diff --git a/public/js/pages/home.js b/public/js/pages/home.js
index ddb62fc..df1563c 100644
--- a/public/js/pages/home.js
+++ b/public/js/pages/home.js
@@ -1,81 +1,54 @@
const HomePage = {
- async render(tab) {
- const t = tab || 'report';
- return `
-
-
-
-
-
-
-
-
`;
+ async render() {
+ return ``;
},
mount(tab) {
const t = tab || 'report';
- const tabBtns = document.querySelectorAll('.tab-nav button');
- const tabContent = document.getElementById('home-tab');
+ const topAuth = document.getElementById('top-auth');
+ topAuth.innerHTML = ` 登录
+ 注册
+ |
+
+
+
+ `;
+ topAuth.style.display = 'flex';
- function switchContent(type) {
- if (type === 'tracking') renderTracking(tabContent);
- else TicketCreate.render(tabContent, { type, prefill: {}, backLink: null });
- }
+ topAuth.querySelectorAll('[data-tab]').forEach(b => { b.onclick = () => App.navigate('home', b.dataset.tab); });
- function renderTracking(ct) {
- const token = document.cookie.split('; ').find(r => r.startsWith('tracking_token='))?.split('=')[1];
- ct.innerHTML = `
-
-
-
-
-
-
-
`;
- }
+ const ct = document.getElementById('home-tab');
+ if (t === 'tracking') this.renderTracking(ct);
+ else TicketCreate.render(ct, { type: t, prefill: {}, backLink: null });
+ },
- tabBtns.forEach(b => b.onclick = () => App.navigate('home', b.dataset.tab));
- switchContent(t);
+ renderTracking(ct) {
+ const token = document.cookie.split('; ').find(r => r.startsWith('tracking_token='))?.split('=')[1];
+ ct.innerHTML = `
+
+
+
+
`;
+ document.getElementById('track-search-btn').onclick = () => this.doSearchTracking();
+ },
- this.searchTracking = async () => {
- const token = document.getElementById('track-token').value.trim();
- if (!token) return alert('请输入追踪标识');
- const ct = document.getElementById('track-result');
- ct.innerHTML = '
';
- try {
- const tickets = await API.get(`/tickets/tracking?token=${token}`);
- ct.innerHTML = tickets.length ? `
-
- | # | 类型 | 标题 | 状态 | 时间 | 操作 |
-
${tickets.map(tick => `
- | ${tick.id} | ${U.badge(tick.type,'type')} | ${U.esc(tick.title)} |
- ${U.badge(tick.status,'status')} | ${U.date(tick.created_at)} |
- |
- `).join('')}
` : '';
- } catch (ex) { ct.innerHTML = `${ex.message}
`; }
- };
+ async doSearchTracking() {
+ const token = document.getElementById('track-token').value.trim();
+ if (!token) return alert('请输入追踪标识');
+ const r = document.getElementById('track-result');
+ r.innerHTML = '
';
+ try {
+ const tickets = await API.get(`/tickets/tracking?token=${token}`);
+ r.innerHTML = tickets.length ? `| # | 类型 | 标题 | 状态 | 时间 |
${tickets.map(tk=>`| ${tk.id} | ${U.badge(tk.type,'type')} | ${U.esc(tk.title)} | ${U.badge(tk.status,'status')} | ${U.date(tk.created_at)} |
`).join('')}
` : '';
+ } catch (e) { r.innerHTML = `${e.message}
`; }
},
showTrackDetail(id, token) {
- U.modal(`工单 #${id}`, ``, '700px');
- const ct = document.getElementById('track-detail-content');
- U.loading(ct);
+ U.modal(`工单 #${id}`, ``, '700px');
API.get(`/tickets/tracking?token=${token}`).then(tickets => {
- const t = tickets.find(x => x.id === id);
- if (!t) { ct.innerHTML = '未找到
'; return; }
- ct.innerHTML = `
- 基本信息
-
标题${U.esc(t.title)}
-
类型${U.badge(t.type,'type')}
-
状态${U.badge(t.status,'status')}
-
提交者${U.esc(t.reporter_game_name)} (UID: ${U.esc(t.reporter_game_uid)})
- ${t.type==='report'?`
-
被举报人${U.esc(t.target_game_name||'?')} (UID: ${U.esc(t.target_game_uid||'?')})
-
原因${U.esc(t.reason)}
`:''}
- ${t.description?`
详情${U.esc(t.description)}
`:''}
-
时间${U.date(t.created_at)}
-
- 如需回复,请注册账号后关联此工单。
`;
- }).catch(e => { ct.innerHTML = `${e.message}
`; });
+ const t = tickets.find(x=>x.id===id);
+ if(!t) return;
+ document.getElementById('tkd').innerHTML = `基本信息
标题${U.esc(t.title)}
类型${U.badge(t.type,'type')}
状态${U.badge(t.status,'status')}
提交者${U.esc(t.reporter_game_name)} (UID: ${U.esc(t.reporter_game_uid)})
如需回复请注册账号
`;
+ }).catch(()=>{});
}
};