// 高级搜索功能
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: 初始化完成');
});