feat(exam): 支持按单个学生和考试类型生成考试试题
- 修改生成试题按钮仅在选中特定一个学生时可用,避免多选时误操作 - 在考试生成对话框新增“类型”选择项,支持“摸底”和“期中|期末”类型 - 调整后台接口,使用单个学生ID和考试类型替代学生ID列表参数 - 优化考试生成服务,新增摸底考试生成逻辑,按年级分区随机抽词汇 - 考试相关数据对象新增类型字段,保持数据完整性和一致性 - 修改考试判卷服务,将错误信息字段统一为msg,避免字段混淆 - 调整数据库操作,支持单个学生考试与词汇随机获取 - 同步更新测试用例和词汇库数据插入逻辑,确保环境一致性 - 修复界面生成按钮状态和对话框提交按钮的校验逻辑,提升用户体验
This commit is contained in:
@@ -14,6 +14,12 @@
|
||||
<el-option :label="'三级'" :value="3" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="类型">
|
||||
<el-select v-model="type" placeholder="请选择类型" style="width: 240px">
|
||||
<el-option :label="'摸底'" :value="1" />
|
||||
<el-option :label="'期中|期末'" :value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="text-sm text-gray-500">
|
||||
已选学生数量:{{ studentIds.length }}
|
||||
@@ -22,7 +28,7 @@
|
||||
<template #footer>
|
||||
<div class="flex justify-end gap-2">
|
||||
<el-button @click="visible = false">取消</el-button>
|
||||
<el-button type="primary" :disabled="!gradeId || !level" @click="handleGenerate">生成并下载</el-button>
|
||||
<el-button type="primary" :disabled="!gradeId || !level || !type" @click="handleGenerate">生成并下载</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@@ -49,7 +55,7 @@ const loading = ref(false)
|
||||
const gradeOptions = ref([])
|
||||
const gradeId = ref(null)
|
||||
const level = ref(null)
|
||||
|
||||
const type = ref(null)
|
||||
async function fetchGrades() {
|
||||
loading.value = true
|
||||
try {
|
||||
@@ -65,11 +71,12 @@ async function fetchGrades() {
|
||||
}
|
||||
|
||||
async function handleGenerate() {
|
||||
if (!gradeId.value || !level.value || props.studentIds.length === 0) return
|
||||
if (!gradeId.value || !level.value || !type.value || props.studentIds.length === 0) return
|
||||
await generateExamWords({
|
||||
gradeId: Number(gradeId.value),
|
||||
level: Number(level.value),
|
||||
studentIds: props.studentIds
|
||||
type: Number(type.value),
|
||||
studentId: props.studentIds[0]
|
||||
})
|
||||
ElMessage.success('生成任务已提交,正在下载')
|
||||
visible.value = false
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
selectedGradeId }})</el-tag>
|
||||
<el-button type="primary" @click="fetchStudents">查询</el-button>
|
||||
<el-button @click="resetStudentFilters">重置</el-button>
|
||||
<el-button type="success" :disabled="selectedStudentIds.length === 0"
|
||||
<el-button type="success" :disabled="selectedStudentIds.length !== 1"
|
||||
@click="showGenerateDialog = true">
|
||||
生成试题
|
||||
</el-button>
|
||||
|
||||
Reference in New Issue
Block a user