/** * 多班级版班级管理系统 - 课代表作业管理JS * * 开发者: Canglan * 版权归属: Sea Network Technology Studio * * 版权所有 © Sea Network Technology Studio */ (function() { 'use strict'; var currentPage = 1; var pageSize = 20; var currentAssignmentId = null; async function loadHomework(page) { var res = await apiGet('/api/cadre/homework', { page: page, page_size: pageSize }); if (res && res.success && res.data) { var items = res.data.items || res.data.records || []; var total = res.data.total || 0; var html = ''; if (items.length === 0) { html = '暂无作业记录'; } else { items.forEach(function(item) { html += '' + '' + escapeHtml(item.title || '-') + '' + '' + escapeHtml(item.subject_name || '-') + '' + '' + formatDate(item.deadline) + '' + '' + escapeHtml(item.description || '-') + '' + '' + ''; }); } document.getElementById('homeworkList').innerHTML = html; var totalPages = Math.ceil(total / pageSize); if (totalPages > 1) { document.getElementById('pagination').style.display = 'flex'; document.getElementById('pageInfo').textContent = page + ' / ' + totalPages; document.getElementById('prevBtn').disabled = page <= 1; document.getElementById('nextBtn').disabled = page >= totalPages; } else { document.getElementById('pagination').style.display = 'none'; } } } window.changePage = function(delta) { currentPage += delta; loadHomework(currentPage); }; window.showPublishModal = function() { document.getElementById('publishForm').reset(); document.getElementById('hwDeadline').value = new Date().toISOString().split('T')[0]; document.getElementById('publishModal').style.display = 'flex'; }; window.submitHomework = async function() { var title = document.getElementById('hwTitle').value.trim(); var deadline = document.getElementById('hwDeadline').value; var description = document.getElementById('hwDescription').value.trim(); if (!title) { showToast('请填写作业标题', 'error'); return; } if (!deadline) { showToast('请选择截止日期', 'error'); return; } var res = await apiPost('/api/cadre/homework', { title: title, deadline: deadline, description: description }); if (res && res.success) { showToast('作业发布成功'); closeModal('publishModal'); loadHomework(currentPage); } else { showToast(res && res.message ? res.message : '发布失败', 'error'); } }; window.showAbsentModal = async function(assignmentId) { currentAssignmentId = assignmentId; var res = await apiGet('/api/admin/students', { page_size: 1000 }); if (res && res.success && res.data) { var students = res.data.students || res.data.items || []; var html = '
'; if (students.length === 0) { html += '

暂无学生数据

'; } else { html += '
' + '' + ''; students.forEach(function(s) { html += '' + '' + '' + '' + ''; }); html += '
学号姓名
' + escapeHtml(s.student_no) + '' + escapeHtml(s.name) + '
'; } document.getElementById('absentStudentList').innerHTML = html; document.getElementById('absentModal').style.display = 'flex'; } else { showToast('获取学生列表失败', 'error'); } }; window.toggleAllAbsent = function(el) { var checkboxes = document.querySelectorAll('.absent-checkbox'); checkboxes.forEach(function(cb) { cb.checked = el.checked; }); }; window.submitAbsent = async function() { var checkboxes = document.querySelectorAll('.absent-checkbox:checked'); if (checkboxes.length === 0) { showToast('请选择至少一名缺交学生', 'error'); return; } var studentIds = []; checkboxes.forEach(function(cb) { studentIds.push(parseInt(cb.getAttribute('data-id'))); }); var hwDeduct = window.DEDUCTION_HOMEWORK_NOT_SUBMIT || 2; var res = await apiPost('/api/cadre/conduct/add', { student_ids: studentIds, points_change: -hwDeduct, reason: '作业未提交', related_type: 'homework' }); if (res && res.success) { showToast('已登记 ' + studentIds.length + ' 名学生缺交'); closeModal('absentModal'); } else { showToast(res && res.message ? res.message : '提交失败', 'error'); } }; window.closeModal = function(id) { document.getElementById(id).style.display = 'none'; }; document.addEventListener('DOMContentLoaded', function() { loadHomework(currentPage); }); })();