deepseek
2 处改动: 1. ValidateRequestAsync — 当 classIds 为空时跳过行政班验证(选修课可不选班) 2. ValidatePublishingTasksAsync — 移除了"发布前至少需要关联一个行政班"的强制校验,允许无行政班的教学任务直接发布
This commit is contained in:
@@ -614,12 +614,15 @@ public sealed class TeachingTasksController(
|
||||
return ValidationProblem("授课教师必须已完成该课程申报并经学院审核通过。");
|
||||
|
||||
var classIds = request.ClassIds.Distinct().ToArray();
|
||||
if (classIds.Length > 0)
|
||||
{
|
||||
var classes = db.AdministrativeClasses.AsNoTracking()
|
||||
.Where(x => classIds.Contains(x.Id));
|
||||
if (collegeId.HasValue)
|
||||
classes = classes.Where(x => x.Major!.CollegeId == collegeId.Value);
|
||||
if (await classes.CountAsync(cancellationToken) != classIds.Length)
|
||||
return ValidationProblem("存在无效或不在当前数据范围内的行政班。");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -661,13 +664,6 @@ public sealed class TeachingTasksController(
|
||||
invalidPrimaryTeacher,
|
||||
"发布前必须指定且只能指定一名主讲教师。");
|
||||
|
||||
var missingClass = tasks.FirstOrDefault(x => x.Classes.Count == 0);
|
||||
if (missingClass is not null)
|
||||
return PublishingProblem(
|
||||
tasks,
|
||||
missingClass,
|
||||
"发布前至少需要关联一个行政班。");
|
||||
|
||||
var termIds = tasks.Select(x => x.AcademicTermId).Distinct().ToArray();
|
||||
var courseIds = tasks.Select(x => x.CourseId).Distinct().ToArray();
|
||||
var teacherIds = tasks
|
||||
|
||||
@@ -597,7 +597,7 @@ onMounted(async () => {
|
||||
|
||||
<section class="task-summary">
|
||||
<div><span>当前结果</span><b>{{ total }}</b><small>个教学班</small></div>
|
||||
<p>{{ responsibilityText }} 发布时还会校验教师授课资格、行政班、容量和周次。</p>
|
||||
<p>{{ responsibilityText }} 发布时还会校验教师授课资格、容量和周次;选修课可不关联行政班。</p>
|
||||
</section>
|
||||
|
||||
<section class="data-card">
|
||||
@@ -681,7 +681,7 @@ onMounted(async () => {
|
||||
</el-table-column>
|
||||
<el-table-column prop="termName" label="开课学期" min-width="180" />
|
||||
<el-table-column label="授课教师" min-width="130"><template #default="{ row }">{{ row.teacherNames.join('、') || '未安排' }}</template></el-table-column>
|
||||
<el-table-column label="行政班" min-width="150"><template #default="{ row }">{{ row.classNames.join('、') || '未关联' }}</template></el-table-column>
|
||||
<el-table-column label="行政班" min-width="150"><template #default="{ row }">{{ row.classNames.join('、') || '开放选课' }}</template></el-table-column>
|
||||
<el-table-column label="人数 / 容量" width="105"><template #default="{ row }">{{ row.studentCount }} / {{ row.capacity }}</template></el-table-column>
|
||||
<el-table-column label="周次" width="105"><template #default="{ row }">{{ row.startWeek }}—{{ row.endWeek }} 周</template></el-table-column>
|
||||
<el-table-column label="状态" width="90"><template #default="{ row }"><span class="table-status" :class="{ off: row.status === 'Closed' }">{{ statusLabels[row.status] }}</span></template></el-table-column>
|
||||
@@ -768,7 +768,7 @@ onMounted(async () => {
|
||||
<el-option v-for="item in selectedTeachers" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联行政班">
|
||||
<el-form-item label="关联行政班(选修课可留空)">
|
||||
<div class="class-picker">
|
||||
<div class="option-filter-grid classes">
|
||||
<el-input v-model="manualClassFilters.keyword" clearable placeholder="班级代码、名称或专业" />
|
||||
|
||||
Reference in New Issue
Block a user