diff --git a/templates/admin/static/js/audit.js b/templates/admin/static/js/audit.js index 1945d58..297e2cd 100644 --- a/templates/admin/static/js/audit.js +++ b/templates/admin/static/js/audit.js @@ -13,6 +13,34 @@ const pages = { }; let pendingRejectId = null; +// 审核操作按钮事件委托(避免 inline onclick) +function handleAuditClick(e) { + const btn = e.target.closest('[data-audit-action]'); + if (!btn) return; + const action = btn.dataset.auditAction; + const id = parseInt(btn.dataset.auditId); + if (action === 'approve') approveAudit(id); + else if (action === 'reject') openRejectModal(id); +} + +// 分页按钮事件委托 +function handlePaginationClick(e) { + const btn = e.target.closest('[data-go-page]'); + if (!btn) return; + goPage(parseInt(btn.dataset.goPage)); +} + +// 为动态插入的图片绑定 error 处理 +function attachImageErrorHandlers(container) { + if (!container) return; + container.querySelectorAll('img[data-fallback]').forEach(img => { + img.addEventListener('error', function handler() { + this.src = 'data:image/svg+xml,' + encodeURIComponent(''); + this.removeEventListener('error', handler); + }); + }); +} + document.addEventListener('DOMContentLoaded', () => { // TAB 切换 document.querySelectorAll('.audit-tab').forEach(tab => { @@ -26,6 +54,10 @@ document.addEventListener('DOMContentLoaded', () => { }); }); + // 全局事件委托:审核操作 & 分页 + document.addEventListener('click', handleAuditClick); + document.addEventListener('click', handlePaginationClick); + // 初始加载 loadCurrentTab(); }); @@ -122,8 +154,8 @@ function renderUsernameRow(item) {