v2.2更新
This commit is contained in:
@@ -118,11 +118,113 @@ async function exportMoralityRecords() {
|
||||
console.error('导出失败:', err);
|
||||
}
|
||||
}
|
||||
// 宿舍集体加分相关
|
||||
var dormitoryStudentIds = [];
|
||||
|
||||
async function showDormitoryPointsModal() {
|
||||
dormitoryStudentIds = [];
|
||||
document.getElementById('dormitorySelect').innerHTML = '<option value="">-- 请选择宿舍 --</option>';
|
||||
document.getElementById('dormitoryStudentsGroup').style.display = 'none';
|
||||
document.getElementById('dormitoryStudentsList').innerHTML = '';
|
||||
document.getElementById('dormitoryPointsChange').value = '';
|
||||
document.getElementById('dormitoryPointsReason').value = '';
|
||||
|
||||
// 加载宿舍列表
|
||||
const res = await apiGet('/api/admin/students/dormitories');
|
||||
if (res && res.success && res.data.dormitories) {
|
||||
const select = document.getElementById('dormitorySelect');
|
||||
res.data.dormitories.forEach(d => {
|
||||
const option = document.createElement('option');
|
||||
option.value = d;
|
||||
option.textContent = d;
|
||||
select.appendChild(option);
|
||||
});
|
||||
}
|
||||
|
||||
document.getElementById('dormitoryPointsModal').style.display = 'flex';
|
||||
}
|
||||
|
||||
async function onDormitorySelected() {
|
||||
const dormitory = document.getElementById('dormitorySelect').value;
|
||||
const studentsGroup = document.getElementById('dormitoryStudentsGroup');
|
||||
const studentsList = document.getElementById('dormitoryStudentsList');
|
||||
const studentsCount = document.getElementById('dormitoryStudentsCount');
|
||||
|
||||
dormitoryStudentIds = [];
|
||||
studentsList.innerHTML = '';
|
||||
|
||||
if (!dormitory) {
|
||||
studentsGroup.style.display = 'none';
|
||||
return;
|
||||
}
|
||||
|
||||
// 加载该宿舍的学生
|
||||
const res = await apiGet('/api/admin/students', { dormitory_number: dormitory, page_size: 1000 });
|
||||
if (res && res.success && res.data.students) {
|
||||
const students = res.data.students;
|
||||
if (students.length === 0) {
|
||||
studentsList.innerHTML = '<p style="color: var(--text-secondary);">该宿舍暂无学生</p>';
|
||||
studentsCount.textContent = '';
|
||||
} else {
|
||||
students.forEach(s => {
|
||||
dormitoryStudentIds.push(s.student_id);
|
||||
const div = document.createElement('div');
|
||||
div.style.cssText = 'display: flex; justify-content: space-between; padding: 4px 0; border-bottom: 1px solid var(--border-color);';
|
||||
div.innerHTML = `<span>${escapeHtml(s.name)}</span><span style="color: var(--text-secondary);">${escapeHtml(s.student_no)}</span>`;
|
||||
studentsList.appendChild(div);
|
||||
});
|
||||
studentsCount.textContent = `共 ${students.length} 人`;
|
||||
}
|
||||
studentsGroup.style.display = 'block';
|
||||
} else {
|
||||
studentsList.innerHTML = '<p style="color: var(--text-secondary);">加载失败</p>';
|
||||
studentsGroup.style.display = 'block';
|
||||
}
|
||||
}
|
||||
|
||||
async function submitDormitoryPoints() {
|
||||
if (dormitoryStudentIds.length === 0) {
|
||||
showToast('该宿舍没有学生', 'warning');
|
||||
return;
|
||||
}
|
||||
|
||||
const pointsChange = parseInt(document.getElementById('dormitoryPointsChange').value);
|
||||
const reason = document.getElementById('dormitoryPointsReason').value;
|
||||
|
||||
if (isNaN(pointsChange) || pointsChange === 0) {
|
||||
showToast('分值不能为0', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!reason.trim()) {
|
||||
showToast('请填写原因', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
const data = {
|
||||
student_ids: dormitoryStudentIds,
|
||||
points_change: pointsChange,
|
||||
reason: reason
|
||||
};
|
||||
|
||||
const res = await apiPost('/api/admin/conduct/add', data);
|
||||
|
||||
if (res && res.success) {
|
||||
showToast(`操作成功: ${res.data.success_count} 人成功`);
|
||||
closeModal('dormitoryPointsModal');
|
||||
loadStudents();
|
||||
} else {
|
||||
showToast(res?.message || '操作失败', 'error');
|
||||
}
|
||||
}
|
||||
|
||||
loadStudents();
|
||||
|
||||
window.loadStudents = loadStudents;
|
||||
window.showSinglePointsModal = showSinglePointsModal;
|
||||
window.exportMoralityRecords = exportMoralityRecords;
|
||||
window.showDormitoryPointsModal = showDormitoryPointsModal;
|
||||
window.onDormitorySelected = onDormitorySelected;
|
||||
window.submitDormitoryPoints = submitDormitoryPoints;
|
||||
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user