const UnclaimedPage = { filters: {}, async render() { return '
'; }, async mount() { document.getElementById('page-title').textContent = '待处理工?; document.getElementById('page-actions').innerHTML = ''; const ct = document.getElementById('page-content'); ct.innerHTML = `
`; await this.load(); }, async load() { const list = document.getElementById('unclaimed-list'); U.loading(list); try { const params = new URLSearchParams(); if (this.filters.type) params.set('type', this.filters.type); const qs = params.toString(); const tickets = await API.get('/tickets/unclaimed' + (qs ? '?' + qs : '')); this.renderList(list, tickets); } catch (e) { list.innerHTML = `
${e.message}
`; } }, renderList(ct, tickets) { ct.innerHTML = tickets.length === 0 ? `

所有工单已处理完毕

` : `
${tickets.length} 个待处理工单按状态优先级排序
${tickets.map(t => ` `).join('')}
#类型标题提交?/th>对象/详情状?/th>优先?/th>时间操作
${t.id}${U.badge(t.type,'type')} ${U.esc(t.title)} ${U.esc(t.reporter_game_name)}
UID:${U.esc(t.reporter_game_uid)}
${t.type==='report'?`${U.esc(t.target_game_name||'?')}
${U.esc(t.reason||'')}` :(t.type==='appeal'||t.type==='result_appeal')?`${U.esc(t.reason||'')}` :`${U.esc((t.description||'').substring(0,30))}`}
${U.badge(t.status,'status')} ${U.badge(t.priority,'priority')} ${U.date(t.created_at)}
`; }, async quickClaim(id) { U.modal('接单认领', `
`); document.getElementById('qc-form').onsubmit = async e => { e.preventDefault(); try { await API.post(`/tickets/${id}/claim`, {claim_note: document.getElementById('qc-note').value, initial_reply: document.getElementById('qc-reply').value}); App.closeModal(); this.load(); } catch(ex){alert(ex.message);} }; }, applyFilters() { this.filters.type = document.getElementById('u-type').value; this.load(); }, reset() { this.filters = {}; this.load(); } };