fix: data-action delegation + convert onclick to event listeners, sidebar+logout+modals
This commit is contained in:
@@ -34,38 +34,38 @@ const TicketCreate = {
|
||||
|
||||
${isReport ? `
|
||||
<div class="grid-2">
|
||||
<div class="form-group"><label>对方游戏名称 (至少一项)</label><input name="target_game_name" placeholder="被举报者Minecraft ID"></div>
|
||||
<div class="form-group"><label>对方游戏UID (至少一项)</label><input name="target_game_uid" placeholder="被举报者UID"></div>
|
||||
<div class="form-group"><label>对方游æˆ<EFBFBD>å<EFBFBD><EFBFBD>ç§° (至少一é¡?</label><input name="target_game_name" placeholder="被举报者Minecraft ID"></div>
|
||||
<div class="form-group"><label>对方游æˆ<EFBFBD>UID (至少一é¡?</label><input name="target_game_uid" placeholder="被举报者UID"></div>
|
||||
</div>
|
||||
<div class="form-group"><label>ä¸¾æŠ¥åŽŸå› *</label>
|
||||
<input name="reason" list="reason-list" required placeholder="选择或自行输入举报原因">
|
||||
<input name="reason" list="reason-list" required placeholder="选择或自行输入举报原�>
|
||||
<datalist id="reason-list">
|
||||
<option value="ç ´å<C2B4><C3A5>建ç‘"><option value="盗窃物å“<C3A5>"><option value="外挂作弊">
|
||||
<option value="è¯è¨€éªšæ‰°"><option value="æ<>¶æ„<C3A6>PVP"><option value="利用æ¼<C3A6>æ´ž">
|
||||
<option value="å…¶ä»–è¿<C3A8>è§„"><option value="诈骗"><option value="æ<>¶æ„<C3A6>辱骂">
|
||||
</datalist>
|
||||
</div>
|
||||
<div class="form-group"><label>详细描述</label><textarea name="description" rows="4" placeholder="请详细描述事件经过..."></textarea></div>
|
||||
<div class="form-group"><label>详细æ<EFBFBD><EFBFBD>è¿°</label><textarea name="description" rows="4" placeholder="请详细æ<EFBFBD><EFBFBD>述事件ç»<EFBFBD>è¿?.."></textarea></div>
|
||||
<div class="form-group" style="display:flex;align-items:center;gap:8px;margin-top:12px">
|
||||
<input type="checkbox" name="is_admin_complaint" value="1" id="cb-admin" style="width:auto">
|
||||
<label for="cb-admin" style="margin:0;font-weight:500;text-transform:none;letter-spacing:0;color:var(--d)"><i class="fas fa-exclamation-triangle"></i> 投诉管ç<C2A1>†å‘˜ï¼ˆä»…æœ<C3A6>主å<C2BB>¯è§<C3A8>)</label>
|
||||
</div>
|
||||
` : isAppeal ? `
|
||||
<div class="form-group"><label>申诉理由 *</label><input name="reason" required placeholder="如:误封、证据不足被封、违规行为已纠正等"></div>
|
||||
<div class="form-group"><label>详细说明 *</label><textarea name="description" rows="5" placeholder="请详细说明情况,包括被封时间、可能原因、为什么应解封等..." required></textarea></div>
|
||||
<div class="form-group"><label>申诉ç<EFBFBD>†ç”± *</label><input name="reason" required placeholder="如:误å°<EFBFBD>ã€<EFBFBD>è¯<EFBFBD>æ<EFBFBD>®ä¸<EFBFBD>足被å°<EFBFBD>ã€<EFBFBD>è¿<EFBFBD>è§„è¡Œä¸ºå·²çº æ£ç?></div>
|
||||
<div class="form-group"><label>详细说明 *</label><textarea name="description" rows="5" placeholder="请详细说明情况,包括被å°<EFBFBD>æ—¶é—´ã€<EFBFBD>å<EFBFBD>¯èƒ½åŽŸå› ã€<EFBFBD>为什么应解å°<EFBFBD>ç?.." required></textarea></div>
|
||||
` : `
|
||||
<div class="form-group"><label>建议内容 *</label><textarea name="description" rows="5" placeholder="请详细描述您的建议..." required></textarea></div>
|
||||
<div class="form-group"><label>建议内容 *</label><textarea name="description" rows="5" placeholder="请详细æ<EFBFBD><EFBFBD>述您的建è®?.." required></textarea></div>
|
||||
`}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-h">上传文件 (图片/视频,每个最大20MB)</div>
|
||||
<div class="card-h">ä¸Šä¼ æ–‡ä»¶ (图片/视频,æ¯<C3A6>个最å¤?0MB)</div>
|
||||
<div class="card-b">
|
||||
<div class="file-upload" id="file-drop">
|
||||
<i class="fas fa-cloud-upload-alt"></i>
|
||||
<p>点击选择文件或拖拽到æ¤å¤„</p>
|
||||
<p class="help">支持: JPG/PNG/GIF/WebP/MP4/WebM 每个最大50MB</p>
|
||||
<p class="help">支æŒ<EFBFBD>: JPG/PNG/GIF/WebP/MP4/WebM æ¯<EFBFBD>个最å¤?0MB</p>
|
||||
</div>
|
||||
<input type="file" id="file-input" multiple accept="image/jpeg,image/png,image/gif,image/webp,video/mp4,video/webm" style="display:none">
|
||||
<div class="file-list" id="file-list"></div>
|
||||
@@ -104,7 +104,7 @@ const TicketCreate = {
|
||||
for (const f of fileList) {
|
||||
if (!allowed.includes(f.type)) { alert(`ä¸<EFBFBD>支æŒ<EFBFBD>的文件类型: ${f.name}`); continue; }
|
||||
if (f.size > 50 * 1024 * 1024) { alert(`文件过大: ${f.name}`); continue; }
|
||||
if (this.files.length >= 5) { alert('最多5个文件'); break; }
|
||||
if (this.files.length >= 5) { alert('最�个文�); break; }
|
||||
this.files.push(f);
|
||||
}
|
||||
this.refreshFileList(listEl);
|
||||
@@ -137,13 +137,13 @@ const TicketCreate = {
|
||||
|
||||
const btn = form.querySelector('[type="submit"]');
|
||||
btn.disabled = true;
|
||||
btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> 提交中...';
|
||||
btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> æ<EFBFBD><EFBFBD>交ä¸?..';
|
||||
try {
|
||||
const res = await API.req('POST', '/tickets', fd);
|
||||
if (res.tracking_token) {
|
||||
document.cookie = `tracking_token=${res.tracking_token};path=/;max-age=${365*24*3600};SameSite=Lax`;
|
||||
}
|
||||
alert('提交成功!工单编号: #' + res.id);
|
||||
alert('æ<EFBFBD><EFBFBD>交æˆ<EFBFBD>功ï¼<EFBFBD>å·¥å<EFBFBD>•ç¼–å<EFBFBD>? #' + res.id);
|
||||
if (Auth.logged()) App.navigate('tickets');
|
||||
else App.navigate('home');
|
||||
} catch (ex) {
|
||||
|
||||
Reference in New Issue
Block a user