feat: 多班级版 v2.0 - Go后端重写 + 43轮代码审查

- 后端从 Python FastAPI 重写为 Go Gin(端口 56789)
- 多班级完全隔离
- 超级管理员独立登录
- 课代表作业管理、排行榜分项排行
- 角色加减分上下限可配置
- 家长改密功能(可开关)
- 周度/月度重置功能
- MySQL 5.7 兼容
- 43轮代码审查+全部修复
- Apache 2.0 许可证
This commit is contained in:
2026-06-22 10:06:10 +08:00
parent 4084afc53c
commit d6dec878bd
214 changed files with 12622 additions and 9725 deletions

View File

@@ -1,10 +1,10 @@
/**
* 班级操行分管理系统 - 公共JS
* 多班级版班级管理系统 - 公共JS
*
* 开发者: Canglan
* 联系方式: admin@sea-studio.top
* 版权归属: Sea Network Technology Studio
* 许可证: MIT License
* 许可证: Apache License 2.0
*
* 版权所有 © Sea Network Technology Studio
*/
@@ -18,7 +18,7 @@ function getUserInfo() {
if (!userStr) return null;
try {
return JSON.parse(userStr);
} catch {
} catch (e) {
return null;
}
}
@@ -191,11 +191,13 @@ async function logout() {
function escapeHtml(str) {
if (!str) return '';
return String(str)
.replace(/&/g, '\x26amp;')
.replace(/</g, '\x26lt;')
.replace(/>/g, '\x26gt;')
.replace(/"/g, '\x26quot;')
.replace(/'/g, '\x26#x27;');
.replace(/&/g, '&amp;')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, '&#x27;')
.replace(/`/g, '&#x60;')
.replace(/\//g, '&#x2F;');
}
/**
@@ -383,21 +385,19 @@ document.addEventListener('click', function(e) {
}
});
// 全局textarea键盘事件Enter提交表单Ctrl+Enter换行
// 全局textarea键盘事件Ctrl+Enter提交表单Enter换行(默认行为)
document.addEventListener('keydown', function(e) {
if (e.target.tagName !== 'TEXTAREA') return;
if (e.key === 'Enter' && !e.ctrlKey && !e.shiftKey && !e.metaKey) {
// Enter键提交表单
if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {
// Ctrl+Enter / Cmd+Enter 提交表单
e.preventDefault();
var form = e.target.closest('form');
if (form) {
// 触发form的submit事件
var submitEvent = new Event('submit', { cancelable: true, bubbles: true });
form.dispatchEvent(submitEvent);
}
}
// Ctrl+Enter和Shift+Enter保持默认换行行为不拦截
});
window.selectDeductionType = function(points, reason) {