feat: 多班级版 v2.0 - Go后端重写 + 43轮代码审查
- 后端从 Python FastAPI 重写为 Go Gin(端口 56789) - 多班级完全隔离 - 超级管理员独立登录 - 课代表作业管理、排行榜分项排行 - 角色加减分上下限可配置 - 家长改密功能(可开关) - 周度/月度重置功能 - MySQL 5.7 兼容 - 43轮代码审查+全部修复 - Apache 2.0 许可证
This commit is contained in:
59
frontend/assets/js/rankings.js
Normal file
59
frontend/assets/js/rankings.js
Normal file
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* 多班级版班级管理系统 - 排行榜JS
|
||||
*
|
||||
* 开发者: Canglan
|
||||
* 版权归属: Sea Network Technology Studio
|
||||
*
|
||||
* 版权所有 © Sea Network Technology Studio
|
||||
*/
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
let currentType = 'conduct';
|
||||
|
||||
async function loadRankings(type) {
|
||||
const res = await apiGet('/api/admin/rankings', { type: type, limit: 50 });
|
||||
if (res && res.success && res.data) {
|
||||
const rankings = res.data.ranking || [];
|
||||
let html = '';
|
||||
if (rankings.length === 0) {
|
||||
html = '<tr><td colspan="4" style="text-align:center;">暂无排行数据</td></tr>';
|
||||
} else {
|
||||
rankings.forEach(function(item, index) {
|
||||
let rankClass = '';
|
||||
if (index === 0) rankClass = 'rank-gold';
|
||||
else if (index === 1) rankClass = 'rank-silver';
|
||||
else if (index === 2) rankClass = 'rank-bronze';
|
||||
|
||||
let pointsText = Number(item.points !== undefined ? item.points : (item.total_points || 0));
|
||||
if (pointsText > 0) {
|
||||
pointsText = '+' + pointsText;
|
||||
}
|
||||
|
||||
html += '<tr>' +
|
||||
'<td><span class="rank-badge ' + rankClass + '">' + (index + 1) + '</span></td>' +
|
||||
'<td>' + escapeHtml(item.student_no || '-') + '</td>' +
|
||||
'<td>' + escapeHtml(item.name || '-') + '</td>' +
|
||||
'<td><span class="record-points ' + (pointsText > 0 ? 'plus' : (pointsText < 0 ? 'minus' : '')) + '">' + pointsText + '</span></td>' +
|
||||
'</tr>';
|
||||
});
|
||||
}
|
||||
document.getElementById('rankingList').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('rankingList').innerHTML = '<tr><td colspan="4" style="text-align:center;">加载失败</td></tr>';
|
||||
}
|
||||
}
|
||||
|
||||
window.switchTab = function(type, btn) {
|
||||
currentType = type;
|
||||
document.querySelectorAll('.tab-btn').forEach(function(b) { b.classList.remove('active'); });
|
||||
btn.classList.add('active');
|
||||
loadRankings(type);
|
||||
};
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
loadRankings(currentType);
|
||||
});
|
||||
|
||||
})();
|
||||
Reference in New Issue
Block a user