const HomePage = { async render(tab) { const t = tab || 'report'; return `
`; }, mount(tab) { const t = tab || 'report'; document.querySelectorAll('#home-content .tab-nav button').forEach(b => { b.onclick = () => App.navigate('home', b.dataset.tab); }); const ct = document.getElementById('home-tab'); if (t === 'tracking') this.renderTracking(ct); else TicketCreate.render(ct, { type: t, prefill: {}, backLink: null, hideTabs: true }); }, 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(); }, 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=>``).join('')}
#类型标题状态时间
${tk.id}${U.badge(tk.type,'type')}${U.esc(tk.title)}${U.badge(tk.status,'status')}${U.date(tk.created_at)}
` : '

未找到工单

'; } catch (e) { r.innerHTML = `
${e.message}
`; } }, showTrackDetail(id, token) { U.modal(`工单 #${id}`, `
`, '700px'); API.get(`/tickets/tracking?token=${token}`).then(tickets => { 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(()=>{}); } };