|
@@ -80,35 +80,26 @@
|
|
<a-row>
|
|
<a-row>
|
|
<a-col :span="12">
|
|
<a-col :span="12">
|
|
<a-form-item label="客观题作答">
|
|
<a-form-item label="客观题作答">
|
|
- <a-select
|
|
|
|
|
|
+ <SelectBoolean
|
|
v-model:value="customSearchModel.questionFilled"
|
|
v-model:value="customSearchModel.questionFilled"
|
|
- placeholder="请选择"
|
|
|
|
- :options="booleanOptions"
|
|
|
|
style="width: 85px"
|
|
style="width: 85px"
|
|
- allow-clear
|
|
|
|
- ></a-select>
|
|
|
|
|
|
+ />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-col>
|
|
<a-col :span="12">
|
|
<a-col :span="12">
|
|
<a-form-item label="主观题作答">
|
|
<a-form-item label="主观题作答">
|
|
- <a-select
|
|
|
|
|
|
+ <SelectBoolean
|
|
v-model:value="customSearchModel.subjectiveFilled"
|
|
v-model:value="customSearchModel.subjectiveFilled"
|
|
- placeholder="请选择"
|
|
|
|
- :options="booleanOptions"
|
|
|
|
style="width: 100%"
|
|
style="width: 100%"
|
|
- allow-clear
|
|
|
|
- ></a-select>
|
|
|
|
|
|
+ />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-col>
|
|
<a-col :span="12">
|
|
<a-col :span="12">
|
|
<a-form-item label="有作答">
|
|
<a-form-item label="有作答">
|
|
- <a-select
|
|
|
|
|
|
+ <SelectBoolean
|
|
v-model:value="customSearchModel.hasFilled"
|
|
v-model:value="customSearchModel.hasFilled"
|
|
- placeholder="请选择"
|
|
|
|
- :options="booleanOptions"
|
|
|
|
style="width: 85px"
|
|
style="width: 85px"
|
|
- allow-clear
|
|
|
|
- ></a-select>
|
|
|
|
|
|
+ />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-col>
|
|
<a-col :span="12">
|
|
<a-col :span="12">
|
|
@@ -152,8 +143,8 @@
|
|
|
|
|
|
<a-radio-group v-model:value="imageType" @change="onImageTypeChange">
|
|
<a-radio-group v-model:value="imageType" @change="onImageTypeChange">
|
|
<a-radio
|
|
<a-radio
|
|
- v-for="item in imageTypeOptions"
|
|
|
|
- :key="item.value"
|
|
|
|
|
|
+ v-for="(item, index) in imageTypeOptions"
|
|
|
|
+ :key="index"
|
|
:value="item.value"
|
|
:value="item.value"
|
|
>{{ item.label }}</a-radio
|
|
>{{ item.label }}</a-radio
|
|
>
|
|
>
|
|
@@ -163,6 +154,7 @@
|
|
<template #header><IdcardFilled />题卡信息 </template>
|
|
<template #header><IdcardFilled />题卡信息 </template>
|
|
|
|
|
|
<QuestionPanel
|
|
<QuestionPanel
|
|
|
|
+ v-if="dataCheckStore.curStudent && dataCheckStore.curPage"
|
|
v-model:questions="questions"
|
|
v-model:questions="questions"
|
|
:info="questionInfo"
|
|
:info="questionInfo"
|
|
:simple="isSliceImage"
|
|
:simple="isSliceImage"
|
|
@@ -194,14 +186,20 @@ import {
|
|
import { message } from "ant-design-vue";
|
|
import { message } from "ant-design-vue";
|
|
|
|
|
|
import { useUserStore, useDataCheckStore } from "@/store";
|
|
import { useUserStore, useDataCheckStore } from "@/store";
|
|
-import { DataCheckListFilter, ExamStatus } from "@/ap/types/dataCheck";
|
|
|
|
|
|
+import {
|
|
|
|
+ DataCheckListFilter,
|
|
|
|
+ DataStatus,
|
|
|
|
+ ExamStatus,
|
|
|
|
+} from "@/ap/types/dataCheck";
|
|
import { SubjectItem } from "@/ap/types/base";
|
|
import { SubjectItem } from "@/ap/types/base";
|
|
import { ReviewExportType } from "@/ap/types/review";
|
|
import { ReviewExportType } from "@/ap/types/review";
|
|
|
|
+import { QuestionInfo } from "./types";
|
|
|
|
+
|
|
import { dataCheckStudentExport, dataCheckRoomExport } from "@/ap/dataCheck";
|
|
import { dataCheckStudentExport, dataCheckRoomExport } from "@/ap/dataCheck";
|
|
import { examStatusSave } from "@/ap/absentCheck";
|
|
import { examStatusSave } from "@/ap/absentCheck";
|
|
import useDictOption from "@/hooks/dictOption";
|
|
import useDictOption from "@/hooks/dictOption";
|
|
import useLoading from "@/hooks/useLoading";
|
|
import useLoading from "@/hooks/useLoading";
|
|
-import { ImageType, booleanOptionList } from "@/constants/enumerate";
|
|
|
|
|
|
+import { ImageType } from "@/constants/enumerate";
|
|
import { objModifyAssign } from "@/utils/tool";
|
|
import { objModifyAssign } from "@/utils/tool";
|
|
|
|
|
|
import ExportTypeDialog from "../Review/ExportTypeDialog.vue";
|
|
import ExportTypeDialog from "../Review/ExportTypeDialog.vue";
|
|
@@ -221,7 +219,6 @@ const { optionList: dataCheckOptions } = useDictOption("DATA_CHECK_TYPE");
|
|
const { optionList: paperTypeOptions } = useDictOption("PAPER_TYPE_STATUS");
|
|
const { optionList: paperTypeOptions } = useDictOption("PAPER_TYPE_STATUS");
|
|
const { optionList: imageTypeOptions } = useDictOption("IMAGE_TYPE");
|
|
const { optionList: imageTypeOptions } = useDictOption("IMAGE_TYPE");
|
|
const { optionList: examStatusOptions } = useDictOption("EXAM_STATUS");
|
|
const { optionList: examStatusOptions } = useDictOption("EXAM_STATUS");
|
|
-const booleanOptions = ref(booleanOptionList);
|
|
|
|
const panelKey = ref(["1", "2", "3", "4"]);
|
|
const panelKey = ref(["1", "2", "3", "4"]);
|
|
|
|
|
|
// course data
|
|
// course data
|
|
@@ -236,8 +233,8 @@ const fieldNames = { label: "name", value: "code" };
|
|
// search
|
|
// search
|
|
const initSearchModel = {
|
|
const initSearchModel = {
|
|
examId: userStore.curExam.id,
|
|
examId: userStore.curExam.id,
|
|
- status: "",
|
|
|
|
- examStatus: [],
|
|
|
|
|
|
+ status: [] as DataStatus[],
|
|
|
|
+ examStatus: [] as ExamStatus[],
|
|
examNumber: "",
|
|
examNumber: "",
|
|
studentCode: "",
|
|
studentCode: "",
|
|
name: "",
|
|
name: "",
|
|
@@ -348,16 +345,18 @@ function onImageTypeChange() {
|
|
|
|
|
|
// question panel
|
|
// question panel
|
|
const questionInfo = computed(() => {
|
|
const questionInfo = computed(() => {
|
|
|
|
+ if (!dataCheckStore.curStudent) return {} as QuestionInfo;
|
|
return {
|
|
return {
|
|
- examNumber: dataCheckStore.curStudent?.examNumber,
|
|
|
|
- name: dataCheckStore.curStudent?.name,
|
|
|
|
- examSite: dataCheckStore.curStudent?.examSite,
|
|
|
|
- seatNumber: dataCheckStore.curStudent?.seatNumber,
|
|
|
|
- paperType: dataCheckStore.curStudent?.paperType,
|
|
|
|
|
|
+ examNumber: dataCheckStore.curStudent.examNumber,
|
|
|
|
+ name: dataCheckStore.curStudent.name,
|
|
|
|
+ examSite: dataCheckStore.curStudent.examSite,
|
|
|
|
+ seatNumber: dataCheckStore.curStudent.seatNumber,
|
|
|
|
+ paperType: dataCheckStore.curStudent.paperType,
|
|
|
|
+ examStatus: dataCheckStore.curStudent.examStatus as string,
|
|
};
|
|
};
|
|
});
|
|
});
|
|
|
|
|
|
-const questions = ref([]);
|
|
|
|
|
|
+const questions = ref([] as string[]);
|
|
watch(
|
|
watch(
|
|
() => dataCheckStore.curPageIndex,
|
|
() => dataCheckStore.curPageIndex,
|
|
(val, oldval) => {
|
|
(val, oldval) => {
|