// admin.js - 后台管理公共功能模块 /** * 侧边栏切换 */ function toggleSidebar() { const sidebar = document.getElementById('sidebar'); const mainArea = document.querySelector('.main-area'); const toggleIcon = document.querySelector('.sidebar-toggle i'); if (sidebar && mainArea && toggleIcon) { if (sidebar.classList.contains('collapsed')) { sidebar.classList.remove('collapsed'); mainArea.style.marginLeft = '256px'; toggleIcon.className = 'fas fa-chevron-left'; } else { sidebar.classList.add('collapsed'); mainArea.style.marginLeft = '0'; toggleIcon.className = 'fas fa-chevron-right'; } } } /** * 自定义弹窗提示 * @param {string} type - 类型: success, error, info, warning * @param {string} title - 标题 * @param {string} message - 消息内容 */ function showCustomAlert(type, title, message) { const modal = document.getElementById('customAlertModal'); const icon = document.getElementById('alertIcon'); const alertTitle = document.getElementById('alertTitle'); const alertMessage = document.getElementById('alertMessage'); if (!modal || !icon || !alertTitle || !alertMessage) return; const icons = { success: '', error: '', info: '', warning: '' }; icon.innerHTML = icons[type] || icons.info; alertTitle.textContent = title; alertMessage.textContent = message; modal.style.display = 'flex'; } /** * 关闭自定义弹窗 */ function closeCustomAlert() { const modal = document.getElementById('customAlertModal'); if (modal) modal.style.display = 'none'; } /** * HTML转义,防止XSS攻击 * @param {string} text - 需要转义的文本 * @returns {string} 转义后的文本 */ function escapeHtml(text) { if (!text) return ''; const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } /** * 验证邮箱格式 * @param {string} email - 邮箱地址 * @returns {boolean} 是否有效 */ function isValidEmail(email) { const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return re.test(email); } /** * 验证手机号格式 * @param {string} phone - 手机号码 * @returns {boolean} 是否有效 */ function isValidPhone(phone) { const re = /^1[3-9]\d{9}$/; return re.test(phone); } // 点击模态框外部关闭弹窗 document.addEventListener('click', function(e) { const alertModal = document.getElementById('customAlertModal'); if (alertModal && e.target === alertModal) { closeCustomAlert(); } });