99 lines
3.3 KiB
JavaScript
99 lines
3.3 KiB
JavaScript
/**
|
|
* 班级操行分管理系统 - 加减分管理函数
|
|
*
|
|
* 开发者: Canglan
|
|
* 联系方式: admin@sea-studio.top
|
|
* 版权归属: Sea Network Technology Studio
|
|
* 许可证: MIT License
|
|
*
|
|
* 版权所有 © Sea Network Technology Studio
|
|
*/
|
|
|
|
(function() {
|
|
'use strict';
|
|
|
|
// 全局变量
|
|
var selectedStudentIds = [];
|
|
var currentHistoryPage = 1;
|
|
|
|
// 显示批量加减分模态框
|
|
function showBatchPointsModal() {
|
|
selectedStudentIds = [];
|
|
document.querySelectorAll('.student-checkbox:checked').forEach(cb => {
|
|
selectedStudentIds.push(parseInt(cb.dataset.id));
|
|
});
|
|
|
|
if (selectedStudentIds.length === 0) {
|
|
showToast('请先选择学生', 'warning');
|
|
return;
|
|
}
|
|
|
|
document.getElementById('selectedStudentsCount').innerHTML = `${selectedStudentIds.length} 人`;
|
|
document.getElementById('pointsChange').value = '';
|
|
document.getElementById('pointsReason').value = '';
|
|
document.getElementById('batchPointsModal').style.display = 'flex';
|
|
}
|
|
|
|
// 提交批量加减分
|
|
async function submitBatchPoints() {
|
|
const pointsChange = parseInt(document.getElementById('pointsChange').value);
|
|
const reason = document.getElementById('pointsReason').value;
|
|
|
|
if (isNaN(pointsChange) || pointsChange === 0) {
|
|
showToast('分值不能为0', 'error');
|
|
return;
|
|
}
|
|
|
|
if (!reason.trim()) {
|
|
showToast('请填写原因', 'error');
|
|
return;
|
|
}
|
|
|
|
const res = await apiPost('/api/admin/conduct/add', {
|
|
student_ids: selectedStudentIds,
|
|
points_change: pointsChange,
|
|
reason: reason
|
|
});
|
|
|
|
if (res && res.success) {
|
|
showToast(`操作成功: ${res.data.success_count} 人成功`);
|
|
closeModal('batchPointsModal');
|
|
loadStudents();
|
|
if (typeof loadConductStudents === 'function') loadConductStudents();
|
|
} else {
|
|
showToast(res?.message || '操作失败', 'error');
|
|
}
|
|
}
|
|
|
|
// 撤销扣分记录
|
|
async function revokeRecord(recordId) {
|
|
if (!confirm('确定要撤销这条记录吗?撤销后学生分数将恢复。')) return;
|
|
|
|
const res = await apiPost('/api/admin/conduct/revoke', { record_id: recordId });
|
|
if (res && res.success) {
|
|
showToast('撤销成功');
|
|
loadHistory(currentHistoryPage);
|
|
} else {
|
|
showToast(res?.message || '撤销失败', 'error');
|
|
}
|
|
}
|
|
|
|
// 反撤销(恢复)记录
|
|
async function restoreRecord(recordId) {
|
|
if (!confirm('确定要反撤销这条记录吗?分数变动将重新生效。')) return;
|
|
|
|
const res = await apiPost('/api/admin/conduct/restore', { record_id: recordId });
|
|
if (res && res.success) {
|
|
showToast('反撤销成功');
|
|
loadHistory(currentHistoryPage);
|
|
} else {
|
|
showToast(res?.message || '反撤销失败', 'error');
|
|
}
|
|
}
|
|
|
|
window.showBatchPointsModal = showBatchPointsModal;
|
|
window.submitBatchPoints = submitBatchPoints;
|
|
window.revokeRecord = revokeRecord;
|
|
window.restoreRecord = restoreRecord;
|
|
})();
|