// 高级搜索功能 let isAdvancedSearchVisible = false; function toggleAdvancedSearch() { console.log('toggleAdvancedSearch called'); // 调试信息 const advancedArea = document.getElementById('advancedSearchArea'); const toggleButton = document.querySelector('button[onclick="toggleAdvancedSearch()"]'); if (!advancedArea) { console.error('找不到高级搜索区域元素'); return; } if (!toggleButton) { console.error('找不到高级搜索切换按钮'); return; } if (isAdvancedSearchVisible) { // 隐藏高级搜索 advancedArea.style.display = 'none'; toggleButton.innerHTML = ''; toggleButton.title = '高级搜索'; toggleButton.classList.remove('btn-info'); toggleButton.classList.add('btn-outline-info'); isAdvancedSearchVisible = false; console.log('高级搜索已隐藏'); } else { // 显示高级搜索 advancedArea.style.display = 'block'; toggleButton.innerHTML = ''; toggleButton.title = '关闭高级搜索'; toggleButton.classList.remove('btn-outline-info'); toggleButton.classList.add('btn-info'); isAdvancedSearchVisible = true; console.log('高级搜索已显示'); } } // 导师选择功能 function selectAllSupervisors() { const checkboxes = document.querySelectorAll('.supervisor-checkboxes input[type="checkbox"]'); checkboxes.forEach(checkbox => { checkbox.checked = true; }); updateSupervisorCount(); } function clearAllSupervisors() { const checkboxes = document.querySelectorAll('.supervisor-checkboxes input[type="checkbox"]'); checkboxes.forEach(checkbox => { checkbox.checked = false; }); updateSupervisorCount(); } // 年级选择功能 function selectAllGrades() { const checkboxes = document.querySelectorAll('.grade-checkboxes input[type="checkbox"]'); checkboxes.forEach(checkbox => { checkbox.checked = true; }); updateGradeCount(); } function clearAllGrades() { const checkboxes = document.querySelectorAll('.grade-checkboxes input[type="checkbox"]'); checkboxes.forEach(checkbox => { checkbox.checked = false; }); updateGradeCount(); } // 更新导师选择计数 function updateSupervisorCount() { const checkedCount = document.querySelectorAll('.supervisor-checkboxes input[type="checkbox"]:checked').length; const label = document.querySelector('.supervisor-checkboxes').previousElementSibling; if (label) { if (checkedCount > 0) { label.innerHTML = `导师(已选${checkedCount}个)`; label.classList.add('text-primary'); } else { label.innerHTML = '导师(多选)'; label.classList.remove('text-primary'); } } } // 更新年级选择计数 function updateGradeCount() { const checkedCount = document.querySelectorAll('.grade-checkboxes input[type="checkbox"]:checked').length; const label = document.querySelector('.grade-checkboxes').previousElementSibling; if (label) { if (checkedCount > 0) { label.innerHTML = `年级(已选${checkedCount}个)`; label.classList.add('text-primary'); } else { label.innerHTML = '年级(多选)'; label.classList.remove('text-primary'); } } } // 检查是否有高级搜索条件被选中 function hasAdvancedSearchFilters() { const supervisorChecked = document.querySelectorAll('.supervisor-checkboxes input[type="checkbox"]:checked').length > 0; const gradeChecked = document.querySelectorAll('.grade-checkboxes input[type="checkbox"]:checked').length > 0; return supervisorChecked || gradeChecked; } // 智能搜索提示 function setupSearchHints() { const supervisorCheckboxes = document.querySelectorAll('.supervisor-checkboxes input[type="checkbox"]'); const gradeCheckboxes = document.querySelectorAll('.grade-checkboxes input[type="checkbox"]'); // 导师搜索计数提示 supervisorCheckboxes.forEach(checkbox => { checkbox.addEventListener('change', updateSupervisorCount); }); // 年级搜索计数提示 gradeCheckboxes.forEach(checkbox => { checkbox.addEventListener('change', updateGradeCount); }); } // 清空所有筛选条件 function clearAllFilters() { // 清空基本搜索 const startDate = document.getElementById('start_date'); const endDate = document.getElementById('end_date'); const studentSearch = document.getElementById('student_search'); const sortBy = document.getElementById('sort_by'); if (startDate) startDate.value = ''; if (endDate) endDate.value = ''; if (studentSearch) studentSearch.value = ''; if (sortBy) sortBy.value = 'week_start_date_desc'; // 清空高级搜索 clearAllSupervisors(); clearAllGrades(); // 提交表单 const form = document.getElementById('searchForm'); if (form) { form.submit(); } } // 导出当前筛选结果 function exportCurrentFilter() { const form = document.getElementById('searchForm'); if (!form) { console.error('找不到搜索表单'); return; } const formData = new FormData(form); const params = new URLSearchParams(); for (let [key, value] of formData.entries()) { params.append(key, value); } params.set('export', 'excel'); const exportUrl = window.location.pathname + '?' + params.toString(); console.log('导出URL:', exportUrl); window.location.href = exportUrl; } // 页面加载完成后的初始化 document.addEventListener('DOMContentLoaded', function() { console.log('admin.js: 页面加载完成,开始初始化'); // 检查高级搜索区域是否存在 const advancedArea = document.getElementById('advancedSearchArea'); if (!advancedArea) { console.warn('高级搜索区域不存在,可能模板未正确更新'); return; } // 设置搜索提示 setupSearchHints(); // 检查URL参数,如果有高级搜索参数则自动展开 const urlParams = new URLSearchParams(window.location.search); const hasSupervisorParam = urlParams.getAll('supervisor').length > 0; const hasGradeParam = urlParams.getAll('grade').length > 0; if (hasSupervisorParam || hasGradeParam || hasAdvancedSearchFilters()) { console.log('检测到高级搜索参数,自动展开'); toggleAdvancedSearch(); } // 初始化计数显示 setTimeout(() => { updateSupervisorCount(); updateGradeCount(); }, 100); console.log('admin.js: 初始化完成'); });