修正实验室选择

This commit is contained in:
biss committed 2026-08-15 22:42:20 +08:00
1 parent 57372cf615
commit 90877ae428
3 files changed
+110 -42

No files matched your search

+20 -11
View File
@@ -46,6 +46,7 @@ const projectForm = reactive({
name: '',
projectNames: '',
nameMode: 'Sequence',
projectCount: 1,
arrangementMode: 'Centralized',
description: '',
requirements: '',
@@ -142,6 +143,7 @@ const activePeriods = computed(() =>
|| period.academicTermId === selectedProject.value.academicTermId,
),
)
const experimentClassrooms = computed(() => options.classrooms)
const modeMeta: Record<string, { label: string; note: string }> = {
Centralized: {
@@ -170,6 +172,7 @@ function resetProjectForm() {
name: '',
projectNames: '',
nameMode: 'Sequence',
projectCount: 1,
arrangementMode: 'Centralized',
description: '',
requirements: '',
@@ -252,6 +255,9 @@ async function saveProject() {
scheduleEntryId: projectForm.scheduleEntryId || null,
code: projectForm.code,
name: projectForm.nameMode === 'InputNames' && !editingProjectId.value ? names[0] : projectForm.name,
projectCount: projectForm.arrangementMode === 'SelfScheduled'
? (projectForm.nameMode === 'InputNames' ? names.length : projectForm.projectCount)
: 1,
arrangementMode: projectForm.arrangementMode,
description: projectForm.description || null,
requirements: projectForm.requirements || null,
@@ -283,7 +289,7 @@ async function saveProject() {
})
ElMessage.success(projectForm.arrangementMode === 'Centralized'
? `已按 ${projectForm.teachingTaskIds.length} 个教学班的全部实验课生成项目`
: `已为 ${projectForm.teachingTaskIds.length} 个教学任务创建实验项目`)
: `已为 ${projectForm.teachingTaskIds.length} 个教学任务创建 ${projectForm.teachingTaskIds.length * payload.projectCount} 个自选实验项目`)
}
projectDialog.value = false
await load()
@@ -1117,9 +1123,8 @@ onMounted(async () => {
:key="task.id"
:value="task.id"
:disabled="projectForm.arrangementMode === 'SelfScheduled'
&& (task.schedulingMode !== 'Flexible'
|| (!!selectedTask && (task.academicTermId !== selectedTask.academicTermId
|| task.courseId !== selectedTask.courseId)))"
&& !!selectedTask && (task.academicTermId !== selectedTask.academicTermId
|| task.courseId !== selectedTask.courseId)"
>
<b>{{ task.taskNumber }}</b>
<span>{{ task.classNames.join('、') || task.name }}</span>
@@ -1130,7 +1135,7 @@ onMounted(async () => {
</el-checkbox-group>
<small v-if="!editingProjectId" class="form-help">
<template v-if="projectForm.arrangementMode === 'Centralized'">已选 {{ projectForm.teachingTaskIds.length }} 个教学班;系统会为每个教学班的全部已发布实验课生成项目。</template>
<template v-else>自行安排仅可选择“非排时课程”的教学任务;只能勾选同一学期、同一课程,实验编码、名称、内容和开放日期将一次应用到这些教学任务。</template>
<template v-else>自行安排不写入课表;只能勾选同一学期、同一课程。每个项目都可另行设置多个可预约场次。</template>
</small>
</el-form-item>
<div class="form-grid two">
@@ -1151,6 +1156,10 @@ onMounted(async () => {
<el-form-item v-if="projectForm.nameMode === 'Sequence'" label="项目名称前缀" required>
<el-input v-model="projectForm.name" maxlength="116" placeholder="如 数据库实验;将生成“数据库实验 01、数据库实验 02”" />
</el-form-item>
<el-form-item v-if="projectForm.arrangementMode === 'SelfScheduled' && projectForm.nameMode === 'Sequence'" label="生成项目数" required>
<el-input-number v-model="projectForm.projectCount" :min="1" :max="100" />
<small class="form-help">同一门课程会生成 {{ projectForm.projectCount }} 个自选项目;编码和名称均自动追加顺序号。</small>
</el-form-item>
<el-form-item v-else label="实验项目名称" required>
<el-input
v-model="projectForm.projectNames"
@@ -1159,7 +1168,7 @@ onMounted(async () => {
maxlength="120000"
placeholder="每行一个名称,可直接从 Excel 粘贴;系统按实际生成顺序逐行对应"
/>
<small class="form-help">已输入 {{ projectNameLines(projectForm.projectNames).length }} 行有效名称。</small>
<small class="form-help">已输入 {{ projectNameLines(projectForm.projectNames).length }} 行有效名称;同一门课程将按这些名称生成多个自选项目。</small>
</el-form-item>
</template>
</div>
@@ -1295,10 +1304,10 @@ onMounted(async () => {
<el-input-number v-model="sessionForm.capacity" :min="1" :max="10000" />
</el-form-item>
</div>
<el-form-item label="实验室" required>
<el-select v-model="sessionForm.classroomId" filterable placeholder="选择实验室或教学场所">
<el-form-item label="实验场地" required>
<el-select v-model="sessionForm.classroomId" filterable placeholder="选择教学场地">
<el-option
v-for="room in options.classrooms.filter((item: any) => (Number(item.teachingVenueNature) & (2 | 4 | 8 | 16)) !== 0)"
v-for="room in experimentClassrooms"
:key="room.id"
:label="`${room.campusName} · ${room.buildingName} ${room.name} · ${room.capacity} 人`"
:value="room.id"
@@ -1388,9 +1397,9 @@ onMounted(async () => {
/>
</el-select>
<el-input-number v-model="row.periodCount" :min="1" :max="12" controls-position="right" />
<el-select v-model="row.classroomId" filterable placeholder="实验室">
<el-select v-model="row.classroomId" filterable placeholder="实验场地">
<el-option
v-for="room in options.classrooms.filter((item: any) => (Number(item.teachingVenueNature) & (2 | 4 | 8 | 16)) !== 0)"
v-for="room in experimentClassrooms"
:key="room.id"
:label="`${room.campusName} · ${room.buildingName} ${room.name} · ${room.capacity} 人`"
:value="room.id"