fix: simplify player ticket list - hide type/priority/tab filters
This commit is contained in:
@@ -18,16 +18,14 @@ const TicketsPage = {
|
||||
const ct = document.getElementById('page-content');
|
||||
const isStaff = Auth.isAdmin();
|
||||
ct.innerHTML = `
|
||||
<div class="tab-nav" id="ticket-tabs">
|
||||
${isStaff ? `<div class="tab-nav" id="ticket-tabs">
|
||||
<button data-tab="all" class="active">全部</button>
|
||||
<button data-tab="pending">待认领</button>
|
||||
<button data-tab="pending">待处理</button>
|
||||
<button data-tab="claimed">已接单</button>
|
||||
${Auth.user().role === 'player' ? '<button data-tab="mine">我的工单</button>' : ''}
|
||||
</div>
|
||||
</div>` : ''}
|
||||
<div class="filter-bar">
|
||||
<select id="ft-type" onchange="TicketsPage.applyFilters()"><option value="">全部类型</option>${Object.entries(U.TYPE).map(([k,v])=>`<option value="${k}">${v}</option>`).join('')}</select>
|
||||
${isStaff ? `<select id="ft-type" onchange="TicketsPage.applyFilters()"><option value="">全部类型</option>${Object.entries(U.TYPE).map(([k,v])=>`<option value="${k}">${v}</option>`).join('')}</select>` : ''}
|
||||
<select id="ft-status" onchange="TicketsPage.applyFilters()"><option value="">全部状态</option>${Object.entries(U.STATUS).map(([k,v])=>`<option value="${k}">${v}</option>`).join('')}</select>
|
||||
<select id="ft-priority" onchange="TicketsPage.applyFilters()"><option value="">全部优先级</option>${Object.entries(U.PRIORITY).map(([k,v])=>`<option value="${k}">${v}</option>`).join('')}</select>
|
||||
<input id="ft-search" placeholder="搜索..." onkeyup="if(event.key==='Enter')TicketsPage.applyFilters()">
|
||||
<button class="btn btn-o btn-sm" onclick="TicketsPage.applyFilters()"><i class="fas fa-search"></i></button>
|
||||
<button class="btn btn-o btn-sm" onclick="TicketsPage.resetFilters()"><i class="fas fa-undo"></i></button>
|
||||
@@ -35,14 +33,16 @@ const TicketsPage = {
|
||||
<div id="ticket-list"></div>
|
||||
`;
|
||||
|
||||
document.querySelectorAll('#ticket-tabs button').forEach(btn => {
|
||||
btn.onclick = () => {
|
||||
document.querySelectorAll('#ticket-tabs button').forEach(b => b.classList.remove('active'));
|
||||
btn.classList.add('active');
|
||||
this.tab = btn.dataset.tab;
|
||||
this.loadTab(this.tab);
|
||||
};
|
||||
});
|
||||
if (document.getElementById('ticket-tabs')) {
|
||||
document.querySelectorAll('#ticket-tabs button').forEach(btn => {
|
||||
btn.onclick = () => {
|
||||
document.querySelectorAll('#ticket-tabs button').forEach(b => b.classList.remove('active'));
|
||||
btn.classList.add('active');
|
||||
this.tab = btn.dataset.tab;
|
||||
this.loadTab(this.tab);
|
||||
};
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
async loadTab(tab) {
|
||||
@@ -52,20 +52,11 @@ const TicketsPage = {
|
||||
const params = new URLSearchParams();
|
||||
if (this.filters.type) params.set('type', this.filters.type);
|
||||
if (this.filters.status) params.set('status', this.filters.status);
|
||||
if (this.filters.priority) params.set('priority', this.filters.priority);
|
||||
if (this.filters.search) params.set('search', this.filters.search);
|
||||
|
||||
if (tab === 'pending') params.set('claimed', '0');
|
||||
else if (tab === 'claimed') params.set('claimed', '1');
|
||||
else if (tab === 'mine') params.set('status', '');
|
||||
|
||||
if (this.filters.search) params.set('search', this.filters.search);
|
||||
const qs = params.toString();
|
||||
const tickets = await API.get('/tickets' + (qs ? '?' + qs : ''));
|
||||
|
||||
if (tab === 'mine') {
|
||||
this.renderList(list, tickets);
|
||||
return;
|
||||
}
|
||||
this.renderList(list, tickets);
|
||||
} catch (e) { list.innerHTML = `<div class="alert alert-e">${e.message}</div>`; }
|
||||
},
|
||||
@@ -92,9 +83,8 @@ const TicketsPage = {
|
||||
|
||||
applyFilters() {
|
||||
this.filters = {
|
||||
type: document.getElementById('ft-type').value,
|
||||
type: document.getElementById('ft-type')?.value,
|
||||
status: document.getElementById('ft-status').value,
|
||||
priority: document.getElementById('ft-priority').value,
|
||||
search: document.getElementById('ft-search').value,
|
||||
};
|
||||
this.loadTab(this.tab);
|
||||
|
||||
Reference in New Issue
Block a user