Parcourir la source

feat(考试管理): 添加考试类型字段并关联试卷类型选择

在表单和列表页面添加考试类型字段,根据考试类型自动设置对应的试卷类型
移除不再使用的试卷类型选项,优化表单交互逻辑
tanshanming il y a 6 mois
Parent
commit
c661379dae

+ 25 - 9
src/views/exm/examinationManagement/form.vue

@@ -9,6 +9,13 @@
 			:loading="formLoading"
 			layout="horizontal"
 		>
+			<a-form-item label="试卷类型:">
+				<a-select v-model:value="form.examType" placeholder="请选择试卷类型" @change="examTypeChange" allow-clear>
+					<a-select-option v-for="item in examTypeEnum" :key="item.value" :value="item.value">
+						{{ item.label }}
+					</a-select-option>
+				</a-select>
+			</a-form-item>
 			<a-form-item label="考试标题" name="examName" :rules="rules.examName">
 				<a-input v-model:value="form.examName" placeholder="请输入考试标题" />
 			</a-form-item>
@@ -88,12 +95,7 @@
 		>
 			<a-form layout="inline">
 				<a-form-item label="试卷类型">
-					<a-select
-						v-model:value="paperPage.queryParam.paperType"
-						placeholder="请选择试卷类型"
-						@change="paperTypeChange"
-						disabled
-					>
+					<a-select v-model:value="paperPage.queryParam.paperType" placeholder="请选择试卷类型" disabled>
 						<a-select-option v-for="item in paperTypeEnum" :key="item.key" :value="item.key">
 							{{ item.value }}
 						</a-select-option>
@@ -140,7 +142,7 @@
 	import examManagerApi from '@/api/exam/paper/examManager.js'
 	import examPaperApi from '@/api/exam/paper/examPaperApi.js'
 	import resourceAuditApi from '@/api/resourceAudit.js'
-
+	import tool from '@/utils/tool'
 	import dayjs from 'dayjs'
 	const emit = defineEmits(['success'])
 	const props = defineProps({
@@ -151,8 +153,8 @@
 	})
 	const formRef = ref()
 	const examStore = useExamStore()
-	const { subjectEnumFormat } = examStore
-	const paperTypeEnum = computed(() => examStore.paperTypeEnum)
+	const paperTypeEnum = computed(() => examStore.paperTypeEnum.filter((item) => item.key !== '5'))
+	const examTypeEnum = tool.dictList('EXAM_TYPE').filter((item) => item.value !== '3')
 	const formLoading = ref(false)
 	const semesterList = ref([])
 	const majorList = ref([])
@@ -274,6 +276,20 @@
 		form.paperId = null
 		selectedPaperName.value = ''
 	}
+	// 考试类型变更
+	const examTypeChange = (type) => {
+		switch (type) {
+			case '1': // 普通考试
+				paperPage.queryParam.paperType = '6'
+				break
+			case '2': // 章节测验
+				paperPage.queryParam.paperType = '3'
+				break
+			case '4': // 课时作业
+				paperPage.queryParam.paperType = '2'
+				break
+		}
+	}
 
 	// 选择试卷
 	const addPaper = () => {

+ 11 - 1
src/views/exm/examinationManagement/index.vue

@@ -1,6 +1,13 @@
 <template>
 	<div class="task-container">
 		<a-form layout="inline" :model="queryParam">
+			<a-form-item label="考试类型:">
+				<a-select v-model:value="queryParam.examType" placeholder="请选择试卷类型" @change="examTypeChange">
+					<a-select-option v-for="item in examTypeEnum" :key="item.value" :value="item.value">
+						{{ item.label }}
+					</a-select-option>
+				</a-select>
+			</a-form-item>
 			<a-form-item label="考试标题:">
 				<a-input v-model:value="queryParam.examName" placeholder="请输入考试标题" style="min-width: 200px" allowClear />
 			</a-form-item>
@@ -98,6 +105,8 @@
 	import { useExamStore } from '@/store/exam.js'
 	import { storeToRefs } from 'pinia'
 	import { parseTime } from '@/utils/exam'
+	import tool from '@/utils/tool'
+
 	const examStore = useExamStore()
 	const { levelEnum, enumFormat } = storeToRefs(examStore)
 	const drawerVisible = ref(false)
@@ -108,13 +117,14 @@
 	const statisticVisible = ref(false)
 	const statisticTitle = ref('')
 	const statisticPaperId = ref(null)
+	const examTypeEnum = tool.dictList('EXAM_TYPE').filter((item) => item.value !== '3')
 
 	const queryParam = reactive({
 		examName: null,
 		examStatus: null,
 		pageIndex: 1,
 		pageSize: 10,
-		examType: 1
+		examType: '1'
 	})
 	const listLoading = ref(false)
 	const tableData = ref([])

+ 3 - 1
src/views/exm/questionnaireManagement/form.vue

@@ -165,7 +165,8 @@
 		startTime: null,
 		endTime: null,
 		examStatus: 0,
-		semesterId: null
+		semesterId: null,
+		examType: '3'
 		// majorId: null
 	})
 
@@ -368,6 +369,7 @@
 		form.startTime = null
 		form.endTime = null
 		form.examStatus = 0
+		form.examType = '3'
 		selectedPaperName.value = ''
 		paperPage.queryParam.paperType = null
 		majorList.value = [] // 清空专业列表