const HomePage = { async render() { return `
`; }, mount() { const tabBtns = document.querySelectorAll('.tab-nav button'); const tabContent = document.getElementById('home-tab'); let currentTab = 'report'; function switchTab(tab) { currentTab = tab; tabBtns.forEach(b => b.classList.toggle('active', b.dataset.tab === tab)); if (tab === 'tracking') renderTracking(tabContent); else TicketCreate.render(tabContent, { type: tab, prefill: {}, backLink: null }); } function renderTracking(ct) { const token = document.cookie.split('; ').find(r => r.startsWith('tracking_token='))?.split('=')[1]; ct.innerHTML = `
`; } tabBtns.forEach(b => b.onclick = () => switchTab(b.dataset.tab)); switchTab('report'); 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(t => ` `).join('')}
#类型标题状态时间操作
${t.id}${U.badge(t.type,'type')}${U.esc(t.title)} ${U.badge(t.status,'status')}${U.date(t.created_at)}
` : '

未找到工单

'; } catch (ex) { ct.innerHTML = `
${ex.message}
`; } }; }, showTrackDetail(id, token) { U.modal(`工单 #${id}`, `
`, '700px'); const ct = document.getElementById('track-detail-content'); U.loading(ct); 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}
`; }); } };