Browse Source

我的考试标记定位异常 删除试卷功能更新

dengshaobo 6 days ago
parent
commit
4cc9bb3112
2 changed files with 111 additions and 35 deletions
  1. 48 32
      src/api/exam.ts
  2. 63 3
      src/views/exam/abnormal/abnormal.vue

+ 48 - 32
src/api/exam.ts

@@ -3,7 +3,7 @@ import request from '../utils/request.ts'
 import type { ApiResponse } from '@/types/types' // 引入类型
 
 
-// 新建编辑考试接口
+// 1. 新建编辑考试接口
 export const createExamSubject = (data:any): Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_home/create_exam_subject',
@@ -12,7 +12,7 @@ export const createExamSubject = (data:any): Promise<ApiResponse> => {
   })
 }
 
-// 获取头部筛选信息
+// 2. 获取头部筛选信息
 export const getHeadData = ():Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_home/find_smart_head_data',
@@ -21,7 +21,7 @@ export const getHeadData = ():Promise<ApiResponse> => {
 }
 
 
-// 获取选择题智能判分首页列表
+// 3. 获取选择题智能判分首页列表
 export const getExamList = (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_home/query_smart_exam_page',
@@ -31,7 +31,7 @@ export const getExamList = (data:any):Promise<ApiResponse> => {
 }
 
 
-// 获取考试类型相关数据
+// 4. 获取考试类型相关数据
 export const getExamTypeData= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/common_exam/find_all_info_under_school',
@@ -40,7 +40,7 @@ export const getExamTypeData= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//删除考试接口
+// 5. 删除考试接口
 export const deleteExam= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_home/remove_ai_exam',
@@ -49,7 +49,7 @@ export const deleteExam= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//获取模版信息列表
+// 6. 获取模版信息列表
 export const getTemplateList= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/smart_template/query_template_by_page',
@@ -59,7 +59,7 @@ export const getTemplateList= (data:any):Promise<ApiResponse> => {
 }
 
 
-//更换模板 使用模版
+// 7. 更换模板 使用模版
 export const useTemplate= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/smart_question/use_smart_template',
@@ -68,8 +68,8 @@ export const useTemplate= (data:any):Promise<ApiResponse> => {
   })
 }
 
- //获取试题列表
- export const getSmartQuestionList= (data:any):Promise<ApiResponse> => {
+// 8. 获取试题列表
+export const getSmartQuestionList= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/smart_question/find_question_tbl',
     method: 'get',
@@ -77,7 +77,7 @@ export const useTemplate= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//试题结构 设置题目
+// 9. 试题结构 设置题目
 export const setQuestion= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/smart_question/set_question',
@@ -86,7 +86,7 @@ export const setQuestion= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//试题结构 查询模板信息
+// 10. 试题结构 查询模板信息
 export const getTemplateInfo= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/smart_template/find_ai_exam_template',
@@ -96,7 +96,7 @@ export const getTemplateInfo= (data:any):Promise<ApiResponse> => {
 }
 
 
-//试题结构 删除所有题目
+// 11. 试题结构 删除所有题目
 export const deleteAllQuestion= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/smart_question/remove_all_question',
@@ -105,7 +105,7 @@ export const deleteAllQuestion= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//试题结构 删除单个题目
+// 12. 试题结构 删除单个题目
 export const deleteSingleQuestion= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/smart_question/remove_single_question',
@@ -115,7 +115,7 @@ export const deleteSingleQuestion= (data:any):Promise<ApiResponse> => {
 }
 
 
-//试题结构  保存题目数据
+// 13. 试题结构  保存题目数据
 export const saveQuestion= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/smart_question/finish_smart_question',
@@ -124,7 +124,7 @@ export const saveQuestion= (data:any):Promise<ApiResponse> => {
   })
 } 
 
-//扫描学生 查询是否导入了学生名单
+// 14. 扫描学生 查询是否导入了学生名单
 export const hasImportStudent= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/has_import_student',
@@ -133,7 +133,7 @@ export const hasImportStudent= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生 查询班级名单
+// 15. 扫描学生 查询班级名单
 export const getClassList= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_room/find_class',
@@ -143,7 +143,7 @@ export const getClassList= (data:any):Promise<ApiResponse> => {
 }
 
 
-//扫描学生 使用班级名单
+// 16. 扫描学生 使用班级名单
 export const useClassList= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_room/use_sys_class_roster',
@@ -152,7 +152,7 @@ export const useClassList= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生 查询考场列表数据
+// 17. 扫描学生 查询考场列表数据
 export const getExamRoomList= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_room/find_exam_room',
@@ -161,7 +161,7 @@ export const getExamRoomList= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生 查询考场的学生列表数据
+// 18. 扫描学生 查询考场的学生列表数据
 export const getExamRoomStudentList= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_room/find_scan_student_by_exam_room',
@@ -171,7 +171,7 @@ export const getExamRoomStudentList= (data:any):Promise<ApiResponse> => {
 }
 
 
-//扫描学生  删除单个未扫描的学生
+// 19. 扫描学生  删除单个未扫描的学生
 export const deleteExamRoomStudent= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_room/delete_not_scan_student',
@@ -180,7 +180,7 @@ export const deleteExamRoomStudent= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生 查询批次列表
+// 20. 扫描学生 查询批次列表
 export const getBatchList= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/find_scanned_batch',
@@ -189,7 +189,7 @@ export const getBatchList= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生  点击开始扫描获取当前批次
+// 21. 扫描学生  点击开始扫描获取当前批次
 export const getCurrentBatchNo= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/obtain_current_batch_no',
@@ -198,7 +198,7 @@ export const getCurrentBatchNo= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生 删除批次信息
+// 22. 扫描学生 删除批次信息
 export const deleteBatch= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/delete_batch',
@@ -207,7 +207,7 @@ export const deleteBatch= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生 更新扫描张数 
+// 23. 扫描学生 更新扫描张数 
 export const updateScanCount= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/record_batch_scan_number',
@@ -217,7 +217,7 @@ export const updateScanCount= (data:any):Promise<ApiResponse> => {
 }
 
 
-//扫描学生 查看批次详情 列表模式 分页接口
+// 24. 扫描学生 查看批次详情 列表模式 分页接口
 export const getBatchDetailList= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/find_scanned_batch_detail',
@@ -226,7 +226,7 @@ export const getBatchDetailList= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生 查看批次详情  图片模式 分页接口 
+// 25. 扫描学生 查看批次详情  图片模式 分页接口 
 export const getBatchDetailImage= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/find_scanned_batch_pics',
@@ -235,7 +235,7 @@ export const getBatchDetailImage= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生 获取未扫描 缺考 已上传的学生列表数据
+// 26. 扫描学生 获取未扫描 缺考 已上传的学生列表数据
 export const getExamStudentList= (data:any):Promise<ApiResponse> => { 
   return request({
     url: '/api/v1/ai_exam_scan/find_stu_by_condition',
@@ -245,7 +245,7 @@ export const getExamStudentList= (data:any):Promise<ApiResponse> => {
 }
 
 
-// 扫描学生 标记缺考 恢复正常
+// 27. 扫描学生 标记缺考 恢复正常
 export const updateScannedStatus= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/update_scanned_status',
@@ -254,7 +254,7 @@ export const updateScannedStatus= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生  标记考号异常
+// 28. 扫描学生  标记考号异常
 export const updateExamNumberException= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/mark_to_card_number_exception',
@@ -263,7 +263,7 @@ export const updateExamNumberException= (data:any):Promise<ApiResponse> => {
   })
 }
 
-//扫描学生 获取异常列表数据
+// 29. 扫描学生 获取异常列表数据
 export const getExamAbnormalList= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/find_abnormal_detail',
@@ -273,7 +273,7 @@ export const getExamAbnormalList= (data:any):Promise<ApiResponse> => {
 }
 
 
-//扫描学生  考号异常搜索学生列表
+// 30. 扫描学生  考号异常搜索学生列表
 export const getSearchScanStudents= (data:any,config?: { signal?: AbortSignal }):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/find_scan_student_by_condition',
@@ -283,7 +283,7 @@ export const getSearchScanStudents= (data:any,config?: { signal?: AbortSignal })
   })
 }
 
-//扫描学生  考号异常  认领答题卡
+// 31. 扫描学生  考号异常  认领答题卡
 export const claimAnswerCard= (data:any):Promise<ApiResponse> => {
   return request({
     url: '/api/v1/ai_exam_scan/claim_card',
@@ -292,4 +292,20 @@ export const claimAnswerCard= (data:any):Promise<ApiResponse> => {
   })
 }
 
+// 32. 扫描学生  考号异常  删除当前试卷信息
+export const deletePaper= (data:any):Promise<ApiResponse> => {
+  return request({
+    url: '/api/v1/ai_exam_scan/delete_paper',
+    method: 'post',
+    data
+  })
+}
 
+// 33. 扫描学生  考号异常  将此考生的所有纸张标记为定位异常
+export const markPositionAbnormal= (data:any):Promise<ApiResponse> => {
+  return request({
+    url: '/api/v1/ai_exam_scan/mark_normal_to_dw_exception',
+    method: 'post',
+    data
+  })
+}

+ 63 - 3
src/views/exam/abnormal/abnormal.vue

@@ -500,7 +500,7 @@ import { onMounted,onUnmounted, ref, computed, nextTick, watch } from 'vue';
 import { ElMessage,ElMessageBox } from 'element-plus'
 
 // 引入可能需要的 API (请根据实际路径调整)
-import { getExamAbnormalList,getSearchScanStudents,claimAnswerCard, updateAbnormalStatus, deletePaper } from '@/api/exam'
+import { getExamAbnormalList,getSearchScanStudents,claimAnswerCard, updateAbnormalStatus,markPositionAbnormal, deletePaper } from '@/api/exam'
 
 // 引入子组件 (确保路径正确)
 // import PositionCanvas from './components/PositionCanvas.vue' // 假设路径
@@ -795,7 +795,32 @@ const ReCutPaper = () => {
 // 17. 删除当前试卷
 const DeleteCurrentPaper = () => {
     // TODO: 二次确认后删除
-    console.log('删除试卷')
+    console.log('删除试卷',currentItem.value)
+    ElMessageBox.confirm('确认删除该试卷吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+        customClass: 'page_dialog',
+    }).then(async () => {
+
+        const param={
+            examSubjectId:examSubjectId.value,//考试科目id
+            pictureIds:currentItem.value.scanPictureVOS.map((item: { id: any }) => item.id),//图片id列表
+            batchNo:currentItem.value.batchNo,//批次号
+            schoolId:schoolId.value,//学校id
+        };
+        const res = await deletePaper(param)
+        console.log('删除试卷结果:', res)
+        if(res.code==200)
+        {
+            ElMessage.success('删除成功')
+            GetAbnormalList(); 
+        }
+        else
+        {
+            ElMessage.error(res.msg);
+        }
+    })
 }
 
 // 18. 考号异常 - 搜索学生
@@ -945,7 +970,42 @@ const GetPaperPageNum = (row: any) => {
 // 23. 标记为定位异常 (从考号/缺页转定位)
 const MarkPositionAbnormal = () => {
     // TODO: 调用接口修改异常类型
-    console.log('标记为定位异常')
+    console.log('标记为定位异常',currentItem.value)
+
+    ElMessageBox.confirm('是否确定标记为定位异常?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        closeOnClickModal: false,
+        customClass: 'page_dialog',
+    }).then(async () => {
+        const pictureIds = currentItem.value.scanPictureVOS.map((item: { id: any }) => item.id);
+        
+        const param = {
+            pictureIds: pictureIds,
+            studentScanId: currentItem.value.id || '',
+        }
+        
+        try {
+            const res = await markPositionAbnormal(param);
+            if (res.code === 200) {
+                ElMessage({
+                    type: 'success',
+                    message: '已成功标记为定位异常'
+                });
+                GetAbnormalList();//获取异常列表
+            }
+            else {
+                ElMessage({
+                    type: 'error',
+                    message: res.msg + '!'
+                })
+            }
+        } catch (error) {
+            console.error('标记定位异常失败:', error);
+        }
+    }).catch(() => {
+        // 用户取消操作
+    });
 }
 
 // 24. 标记为考号异常 (从缺页转考号)