// 通用工具函数 // AJAX全局设置 $.ajaxSetup({ beforeSend: function(xhr, settings) { if (!settings.url.includes('/api/login')) { const token = localStorage.getItem('access_token'); if (token) { xhr.setRequestHeader('Authorization', 'Bearer ' + token); } } } }); // 检查登录状态 function checkAuth() { const token = localStorage.getItem('access_token'); if (!token) { window.location.href = '/'; return false; } return true; } // 获取当前用户信息 function getCurrentUser() { if (!checkAuth()) return; $.ajax({ url: '/api/me', method: 'GET', success: function(data) { $('#current-username').text(data.username); localStorage.setItem('current_user', JSON.stringify(data)); if (data.role === 'admin') { $('.admin-only').show(); $('#nav-users').show(); } }, error: function(xhr) { if (xhr.status === 401 || xhr.status === 422) { logout(); } } }); } // 退出登录 function logout() { localStorage.removeItem('access_token'); localStorage.removeItem('current_user'); window.location.href = '/'; } // 格式化日期 function formatDate(dateString) { if (!dateString) return '-'; const date = new Date(dateString); return date.toLocaleDateString('zh-CN'); } // 格式化日期时间 function formatDateTime(dateString) { if (!dateString) return '-'; const date = new Date(dateString); return date.toLocaleString('zh-CN'); } // 显示错误消息 function showError(message) { alert(message); } // 显示成功消息 function showSuccess(message) { alert(message); } // AJAX错误处理 function handleAjaxError(xhr) { if (xhr.status === 401) { alert('登录已过期,请重新登录'); logout(); } else if (xhr.status === 403 && xhr.responseJSON?.code === 'USER_DISABLED') { alert('您的账号已被禁用,请联系管理员'); logout(); } else { const error = xhr.responseJSON?.error || '操作失败'; showError(error); } } // 获取状态徽章HTML function getStatusBadge(status) { const statusMap = { 'pending': { text: '待认领', class: 'status-pending' }, 'claimed': { text: '已认领', class: 'status-claimed' }, 'completed': { text: '已完成', class: 'status-completed' } }; const info = statusMap[status] || { text: status, class: '' }; return `${info.text}`; } // 获取优先级样式类 function getPriorityClass(priority) { const map = { '高': 'priority-high', '中': 'priority-medium', '低': 'priority-low' }; return map[priority] || ''; } // 页面加载时初始化 $(document).ready(function() { // 如果不是登录页,检查认证 if (!window.location.pathname.match(/^\/?$/)) { checkAuth(); getCurrentUser(); } });