superlishunqin 77b57a9876 0914
2025-09-14 01:28:47 +08:00

207 lines
6.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 高级搜索功能
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 = '<i class="fas fa-cog"></i>';
toggleButton.title = '高级搜索';
toggleButton.classList.remove('btn-info');
toggleButton.classList.add('btn-outline-info');
isAdvancedSearchVisible = false;
console.log('高级搜索已隐藏');
} else {
// 显示高级搜索
advancedArea.style.display = 'block';
toggleButton.innerHTML = '<i class="fas fa-times"></i>';
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: 初始化完成');
});