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