Browse Source

客观题异常数据逻辑处理

dengshaobo 6 days ago
parent
commit
948a4f81ff
1 changed files with 49 additions and 135 deletions
  1. 49 135
      src/views/exam/abnormal/abnormal.vue

+ 49 - 135
src/views/exam/abnormal/abnormal.vue

@@ -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