班级课表自动选中功能

This commit is contained in:
2026-08-11 16:44:58 +08:00 Unverified
parent 130bffbd01
commit e8482b26f2
2 changed files with 29 additions and 1 deletions
@@ -45,6 +45,30 @@ public sealed class TimetablesController(
CancellationToken cancellationToken) => CancellationToken cancellationToken) =>
BuildTimetableAsync(classId, academicTermId, null, cancellationToken); BuildTimetableAsync(classId, academicTermId, null, cancellationToken);
[HttpGet("my-class")]
[Authorize(Roles = SystemRoles.Student)]
public async Task<ActionResult> GetMyClass(CancellationToken cancellationToken)
{
if (!Guid.TryParse(User.FindFirstValue(ClaimTypes.NameIdentifier), out var userId))
return Unauthorized();
var administrativeClassId = await db.Students.AsNoTracking()
.Where(x => x.UserId == userId)
.Select(x => (Guid?)x.AdministrativeClassId)
.FirstOrDefaultAsync(cancellationToken);
if (!administrativeClassId.HasValue)
{
return Conflict(new ProblemDetails
{
Title = "档案未关联",
Detail = "当前登录账号没有关联学生档案,请联系教务管理员。",
Status = StatusCodes.Status409Conflict
});
}
return Ok(new { AdministrativeClassId = administrativeClassId.Value });
}
[HttpGet("teachers/{teacherId:guid}")] [HttpGet("teachers/{teacherId:guid}")]
[AllowAnonymous] [AllowAnonymous]
public async Task<ActionResult> GetTeacherTimetable( public async Task<ActionResult> GetTeacherTimetable(
+5 -1
View File
@@ -403,7 +403,11 @@ async function loadPublicOptions() {
termId.value = defaultAcademicTermId(data.terms) termId.value = defaultAcademicTermId(data.terms)
?? data.terms.find((item: any) => item.hasPublishedTimetable)?.id ?? data.terms.find((item: any) => item.hasPublishedTimetable)?.id
?? '' ?? ''
const initialClass = data.classes.find((item: any) => item.hasPublishedTimetable) const studentClassId = auth.user?.roles.includes('Student')
? (await http.get('/timetables/my-class')).data.administrativeClassId
: undefined
const initialClass = data.classes.find((item: any) => item.id === studentClassId)
?? data.classes.find((item: any) => item.hasPublishedTimetable)
?? data.classes[0] ?? data.classes[0]
classId.value = initialClass?.id ?? '' classId.value = initialClass?.id ?? ''
setClassFilters(initialClass) setClassFilters(initialClass)