已完成“成绩管理与学业档案”模块:

教师批量录入平时、期中、期末成绩。
自动计算总评、绩点和及格状态。
支持缺考、缓考、免修。
教师提交 → 学院审核/退回 → 校级发布。
学生只能查看正式发布成绩。
自动统计平均分、完成度、及格率和加权 GPA。
SQLite 本地增量升级和 MySQL 正式迁移均已完成。
分级权限在前后端同时校验。
This commit is contained in:
2026-07-24 15:33:47 +08:00 Unverified
parent 151a22554f
commit af52e27a3a
18 changed files with 3686 additions and 22 deletions
+10 -1
View File
@@ -10,6 +10,7 @@ import {
Tickets,
Calendar,
CircleCheck,
DocumentChecked,
User,
UserFilled,
} from '@element-plus/icons-vue'
@@ -41,6 +42,7 @@ const pageTitle = computed(() => {
'teaching-tasks': '教学任务',
schedules: '排课与课表',
'course-selections': '选课与教学班',
grades: '成绩与学业档案',
users: '用户与权限',
}
return titles[String(route.name)] ?? '教务管理'
@@ -129,6 +131,13 @@ onMounted(() => auth.refresh().catch(() => undefined))
<el-icon><CircleCheck /></el-icon>
<template #title>{{ auth.user?.roles.some((role) => ['SuperAdmin', 'AcademicAdmin', 'CollegeAdmin'].includes(role)) ? '选课管理' : '学生选课' }}</template>
</el-menu-item>
<el-menu-item
v-if="auth.user?.roles.some((role) => ['SuperAdmin', 'AcademicAdmin', 'CollegeAdmin', 'Teacher', 'Student'].includes(role))"
index="/grades"
>
<el-icon><DocumentChecked /></el-icon>
<template #title>{{ auth.user?.roles.includes('Student') ? '学业成绩' : '成绩管理' }}</template>
</el-menu-item>
<el-menu-item v-if="auth.isSuperAdmin" index="/users">
<el-icon><User /></el-icon>
<template #title>用户与权限</template>
@@ -137,7 +146,7 @@ onMounted(() => auth.refresh().catch(() => undefined))
<div v-if="!collapsed" class="phase-note">
<span>第一阶段 · 核心可用版</span>
<p>教学运行排课与学生选课已就绪</p>
<p>教学运行选课与成绩管理已就绪</p>
</div>
</aside>