|
|
@@ -307,7 +307,7 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column align="center" prop="studentName" width="70" label="姓名" show-overflow-tooltip></el-table-column>
|
|
|
- <el-table-column align="center" prop="exCode" label="考号" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column align="center" prop="examCode" label="考号" show-overflow-tooltip></el-table-column>
|
|
|
<el-table-column align="center" prop="adminClassName" width="65" label="班级"></el-table-column>
|
|
|
</el-table>
|
|
|
<el-table @row-click="PendingListRowClick" :row-class-name="TableRowClassName" :data="objectData.processedList" border max-height="238" v-show="rightTab=='processed'">
|
|
|
@@ -319,7 +319,7 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column align="center" prop="studentName" width="70" label="姓名" show-overflow-tooltip></el-table-column>
|
|
|
- <el-table-column align="center" prop="exCode" label="考号" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column align="center" prop="examCode" label="考号" show-overflow-tooltip></el-table-column>
|
|
|
<el-table-column align="center" prop="adminClassName" width="65" label="班级" show-overflow-tooltip></el-table-column>
|
|
|
</el-table>
|
|
|
<div class="right_title">
|
|
|
@@ -359,137 +359,8 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <!-- 选做题异常区域 -->
|
|
|
- <div class="right_center" v-show="abnormalType==5">
|
|
|
|
|
|
- <!-- 已处理未开发完成 暂时先屏蔽切换 -->
|
|
|
- <div class="right_user_tab">
|
|
|
- <div class="tab_system_user" :class="rightTab == 'pending'?'select_cur':''" @click="ChangeTab('pending')">
|
|
|
- 待处理({{choiceData.pendingList.length}})
|
|
|
- </div>
|
|
|
- <div class="tab_temporay_user" :class="rightTab == 'processed'?'select_cur':''" @click="ChangeTab('processed')">
|
|
|
- 已处理({{choiceData.processedList.length}})
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="page_jg_20" ></div>
|
|
|
- <div class="right_table">
|
|
|
- <el-table @row-click="PendingListRowClick" :row-class-name="TableRowClassName" border :data="choiceData.pendingList" max-height="238" stripe v-show="rightTab=='pending'">
|
|
|
- <el-table-column align="center" width="60" type="index" label="序号"></el-table-column>
|
|
|
- <!-- <el-table-column align="left" prop="examName" label="批次"></el-table-column> -->
|
|
|
- <el-table-column align="center" prop="studentName" label="姓名"></el-table-column>
|
|
|
- <el-table-column align="center" prop="exCode" label="考号"></el-table-column>
|
|
|
- <el-table-column align="center" prop="adminClassName" label="班级"></el-table-column>
|
|
|
- </el-table>
|
|
|
- <el-table @row-click="PendingListRowClick" :data="choiceData.processedList" :row-class-name="TableRowClassName" border v-show="rightTab=='processed'" max-height="238" stripe >
|
|
|
- <el-table-column align="center" type="index" width="60" label="序号">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column align="center" prop="studentName" label="姓名"></el-table-column>
|
|
|
- <el-table-column align="center" prop="exCode" label="考号"></el-table-column>
|
|
|
- <el-table-column align="center" prop="adminClassName" label="班级"></el-table-column>
|
|
|
- </el-table>
|
|
|
- <div class="right_title">
|
|
|
- <div>选做题异常处理</div>
|
|
|
- <!-- <div ><el-checkbox v-model="isShowAbnormalQuestion" @change="ChanageObjectQuestionShow">只显示异常题</el-checkbox></div> -->
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
- <div class="answer_table">
|
|
|
- <el-table :data="choiceData.choiceQuestion" border :row-class-name="ObjectTableClassName" :key="tableKey" width="100%">
|
|
|
- <el-table-column align="center" prop="topicName" label="题号" ></el-table-column>
|
|
|
- <el-table-column align="center" :label="'选做'+choice" v-for="(choice,index) in choiceHeader" :key="index" >
|
|
|
- <template v-slot="scope">
|
|
|
- <div class="table_row_answer_choose" style="justify-content:center !important;">
|
|
|
- <!-- <div class="answer_item" :class="scope.row.selectValue==scope.row.answerVOS[index].option?'choose':''" @click="ChoiceAnswer(scope.row,scope.row.answerVOS[index].option)">
|
|
|
- {{GetLetterToNumber(scope.row.answerVOS[index].option)}}
|
|
|
- </div> -->
|
|
|
- <!-- 添加判断,确保 answerVOS[index] 存在 -->
|
|
|
- <div v-if="scope.row.answerVOS && scope.row.answerVOS[index]"
|
|
|
- class="answer_item"
|
|
|
- :class="scope.row.selectValue==scope.row.answerVOS[index].option?'choose':''"
|
|
|
- @click="ChoiceAnswer(scope.row,scope.row.answerVOS[index].option)">
|
|
|
- {{GetLetterToNumber(scope.row.answerVOS[index].option)}}
|
|
|
- </div>
|
|
|
- <div v-else>-</div> <!-- 当没有对应选项时显示占位符 -->
|
|
|
-
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </div>
|
|
|
- <div class="right_bottom_button el_button">
|
|
|
- <div class="bottom_button_two">
|
|
|
- <el-button @click="MarkPositionAbnormal" class="abnormal_other_btn">标记定位异常</el-button>
|
|
|
- <el-button @click="ChoiceCheck" class="re_cut_btn" :loading="correctionLoading">校正完成</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- 划分异常区域 -->
|
|
|
- <div class="right_center" v-show="abnormalType==6">
|
|
|
- <!-- 已处理未开发完成 暂时先屏蔽切换 -->
|
|
|
- <div class="right_user_tab">
|
|
|
- <div class="tab_system_user" :class="rightTab == 'pending'?'select_cur':''" @click="ChangeTab('pending')">
|
|
|
- 待处理({{subjectiveData.pendingList.length}})
|
|
|
- </div>
|
|
|
- <div class="tab_temporay_user" :class="rightTab == 'processed'?'select_cur':''" @click="ChangeTab('processed')">
|
|
|
- 已处理({{subjectiveData.processedList.length}})
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="page_jg_20" ></div>
|
|
|
- <div class="right_table" ref="subjectiveQuestionTable">
|
|
|
- <el-table @row-click="PendingListRowClick" :row-class-name="TableRowClassName" border :data="subjectiveData.pendingList" style="width:100%;" max-height="238" v-show="rightTab=='pending'" stripe align="left">
|
|
|
-
|
|
|
- <el-table-column align="center" type="index" label="序号" width="40"></el-table-column>
|
|
|
- <el-table-column align="center" width="55" label="批次">
|
|
|
- <template v-slot="scope">
|
|
|
- {{GetPositionSelNumber(scope.row)}}
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column align="center" prop="studentName" width="70" label="姓名" show-overflow-tooltip></el-table-column>
|
|
|
- <el-table-column align="center" prop="exCode" label="考号" show-overflow-tooltip></el-table-column>
|
|
|
- <el-table-column align="center" prop="adminClassName" width="65" label="班级"></el-table-column>
|
|
|
- </el-table>
|
|
|
- <el-table @row-click="PendingListRowClick" :row-class-name="TableRowClassName" :data="subjectiveData.processedList" border max-height="238" v-show="rightTab=='processed'">
|
|
|
- <el-table-column align="center" type="index" width="40" label="序号">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column align="center" width="55" label="批次">
|
|
|
- <template v-slot="scope">
|
|
|
- {{GetPositionSelNumber(scope.row)}}
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column align="center" prop="studentName" width="70" label="姓名" show-overflow-tooltip></el-table-column>
|
|
|
- <el-table-column align="center" prop="exCode" label="考号" show-overflow-tooltip></el-table-column>
|
|
|
- <el-table-column align="center" prop="adminClassName" width="65" label="班级" show-overflow-tooltip></el-table-column>
|
|
|
- </el-table>
|
|
|
- <div class="right_title">
|
|
|
- <div>
|
|
|
- 划分异常处理
|
|
|
- <!-- <span @click="ClearValue()" class="clear_value">清空</span> -->
|
|
|
- </div>
|
|
|
-
|
|
|
- <div v-if="rightTab == 'pending'"><el-checkbox v-model="isShowAbnormalQuestion" @change="SubjectDataChange">只显示异常题</el-checkbox></div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="answer_table">
|
|
|
- <el-table :data="subjectiveTableData" :height="subjectiveTableHeight" border :row-class-name="ObjectTableClassName" :key="tableKey" >
|
|
|
- <el-table-column align="center" prop="subjectiveName" label="题号" width="90"></el-table-column>
|
|
|
- <el-table-column align="center" prop="score" label="得分">
|
|
|
- <template v-slot="scope">
|
|
|
- <el-input v-model="scope.row.score" :class="parseFloat(scope.row.score)>parseFloat(scope.row.subjectiveScore)?'input_error':''" placeholder="" maxlength="5" @change="ChangeSubjectScore()">
|
|
|
- <!-- <div slot="append" class="score_count_append">
|
|
|
- {{scope.row.questionScore || 10.5}}
|
|
|
- </div> -->
|
|
|
- </el-input>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </div>
|
|
|
- <div class="right_bottom_button el_button">
|
|
|
- <div class="bottom_button_two">
|
|
|
- <el-button @click="MarkPositionAbnormal" class="abnormal_other_btn">标记定位异常</el-button>
|
|
|
- <el-button @click="SubjectiveCheck" class="re_cut_btn" :loading="correctionLoading">校正完成</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -526,6 +397,18 @@ const examSubjectCode=computed(() => {
|
|
|
return examStore.currentExam?.examSubjectCode
|
|
|
})
|
|
|
|
|
|
+////客观题异常校正表格数据
|
|
|
+const questionTableData=computed(() => {
|
|
|
+ // 使用可选链操作符和空值合并操作符提供默认值
|
|
|
+ const tableData = currentQuestionList.value || [];
|
|
|
+
|
|
|
+ if (isShowAbnormalQuestion.value) {
|
|
|
+ // 显示异常题
|
|
|
+ return tableData.filter(item => item?.hasAbnormal === 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ return tableData;
|
|
|
+})
|
|
|
|
|
|
|
|
|
|
|
|
@@ -571,6 +454,9 @@ const sourcePoints = ref<any[]>([]) // 模板点位
|
|
|
const targetPoints = ref<any[]>([]) // 学生点位
|
|
|
const currentTemplateList = ref<any[]>([]) // 模板页码列表
|
|
|
|
|
|
+//客观题异常相关
|
|
|
+const currentQuestionList= ref<any[]>([]);//客观题题目异常校正列表
|
|
|
+
|
|
|
// 右侧表格数据
|
|
|
const positionData = ref({ pendingList: [] }) // 定位异常待处理
|
|
|
const numberData = ref({ pendingList: [], processedList: [] }) // 考号异常
|
|
|
@@ -603,7 +489,6 @@ const correctionLoading = ref(false)
|
|
|
const subjectStudentIndex = ref(-1)
|
|
|
const subjectStudentAbnormal = ref<any[]>([])
|
|
|
const subjectStudentQuestion = ref<any[]>([])
|
|
|
-const questionTableData = ref<any[]>([])
|
|
|
const subjectiveTableData = ref<any[]>([])
|
|
|
const choiceHeader = ref([])
|
|
|
|
|
|
@@ -647,6 +532,18 @@ const AbnormalChanage = (type: number) => {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+ if(type==4)
|
|
|
+ {
|
|
|
+ console.log('客观题异常',objectData.value)
|
|
|
+ if(objectData.value.pendingList.length>0)
|
|
|
+ {
|
|
|
+ currentIndex.value=0;
|
|
|
+ currentItem.value=objectData.value.pendingList[currentIndex.value];//当前学生数据
|
|
|
+ currentPaperList.value=currentItem.value.scanPictureVOS || [];//试卷图片列表
|
|
|
+ currentPaperUrl.value=currentPaperList.value[0].recognizeUrl;//
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -739,6 +636,19 @@ const PendingListRowClick = (row: any, column: any, event: Event) => {
|
|
|
currentPaperUrl.value=currentPaperList.value[0].recognizeUrl;//当前图片地址
|
|
|
currentImagePageNo.value=currentPaperList.value[0].pageNo;//当前图片的页码
|
|
|
}
|
|
|
+
|
|
|
+ //客观题异常
|
|
|
+ if(abnormalType.value==4)
|
|
|
+ {
|
|
|
+ currentItem.value=row;
|
|
|
+
|
|
|
+ currentPaperList.value=currentItem.value.scanPictureVOS || [];//试卷图片列表
|
|
|
+ currentPaperUrl.value=currentPaperList.value[0].recognizeUrl;//当前图片地址
|
|
|
+ currentImagePageNo.value=currentPaperList.value[0].pageNo;//当前图片的页码
|
|
|
+
|
|
|
+ currentQuestionList.value=JSON.parse(JSON.stringify(currentItem.value.objectiveQuestionVOS || []));
|
|
|
+ console.log('客观题校正异常数据',currentQuestionList.value)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 14. 表格行样式
|
|
|
@@ -1033,10 +943,14 @@ const ClearValue = () => {
|
|
|
}
|
|
|
|
|
|
// 28. 客观题 - 选项转换辅助
|
|
|
-const GetLetterToNumber = (letter: string) => {
|
|
|
+const GetLetterToNumber = (num: String) => {
|
|
|
+ let index=Number(num);
|
|
|
// A->1, B->2...
|
|
|
- return letter.charCodeAt(0) - 64
|
|
|
+ const letters = ['', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
|
|
|
+ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
|
|
|
+ return letters[index] || '';
|
|
|
}
|
|
|
+//智能判分 没有判断题
|
|
|
const GetLetterToNumberTF = (letter: string) => {
|
|
|
// T/F 处理
|
|
|
return letter
|