fix: restore from regex corruption, JS-bind modal close, data-action delegation

This commit is contained in:
2026-07-15 03:53:16 +08:00
parent 80f8342c0b
commit 021351d898
20 changed files with 140 additions and 152 deletions

View File

@@ -4,7 +4,7 @@ const UnclaimedPage = {
async render() { return '<div class="loading"><i class="fas fa-spinner"></i></div>'; },
async mount() {
document.getElementById('page-title').textContent = '待处ç<EFBFBD>†å·¥å<EFBFBD>?;
document.getElementById('page-title').textContent = '待处理工单';
document.getElementById('page-actions').innerHTML = '';
const ct = document.getElementById('page-content');
@@ -35,7 +35,7 @@ const UnclaimedPage = {
ct.innerHTML = tickets.length === 0
? `<div class="empty"><i class="fas fa-check-circle"></i><p>所有工单已处理完毕</p></div>`
: `<div class="card"><div class="card-h"><span>${tickets.length} 个待处理工单</span><span class="ts tm">按状态优先级排序</span></div><div class="table-wrap"><table><thead><tr>
<th>#</th><th>类型</th><th>标题</th><th>æ<EFBFBD><EFBFBD>交è€?/th><th>对象/详情</th><th>状æ€?/th><th>优先çº?/th><th>æ—¶é—´</th><th>æ“<EFBFBD>作</th>
<th>#</th><th>类型</th><th>标题</th><th>提交者</th><th>对象/详情</th><th>状态</th><th>优先级</th><th>时间</th><th>操作</th>
</tr></thead><tbody>${tickets.map(t => `
<tr>
<td>${t.id}</td><td>${U.badge(t.type,'type')}</td>
@@ -55,7 +55,7 @@ const UnclaimedPage = {
},
async quickClaim(id) {
U.modal('接å<EFBFBD>认é¢', `<form id="qc-form"><div class="form-group"><label>åˆ<EFBFBD>å§åžå¤<EFBFBD> (玩家å<C2B6>¯è§<C3A8>)</label><textarea id="qc-reply" rows="3" placeholder="接å<EFBFBD>•æ—¶å<EFBFBD>é€<EFBFBD>给玩家的åžå¤?.."></textarea></div><div class="form-group"><label>处ç<EFBFBD>†å¤‡æ³¨ (内部)</label><textarea id="qc-note" rows="2" placeholder="内部备注,玩家ä¸<EFBFBD>å<EFBFBD>¯è§<EFBFBD>"></textarea></div><div class="modal-f"><button type="button" class="btn btn-o" data-action="App:closeModal">å<>消</button><button type="submit" class="btn btn-s"><i class="fas fa-hand-paper"></i> 确认接å<EFBFBD></button></div></form>`);
U.modal('接单认领', `<form id="qc-form"><div class="form-group"><label>初始回复 (玩家可见)</label><textarea id="qc-reply" rows="3" placeholder="接单时发送给玩家的回复..."></textarea></div><div class="form-group"><label>处理备注 (内部)</label><textarea id="qc-note" rows="2" placeholder="内部备注,玩家不可见"></textarea></div><div class="modal-f"><button type="button" class="btn btn-o" onclick="App.closeModal()">取消</button><button type="submit" class="btn btn-s"><i class="fas fa-hand-paper"></i> 确认接单</button></div></form>`);
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);}
};