Răsfoiți Sursa

缺考 标缺 标正常 标记考号异常更新

dengshaobo 3 săptămâni în urmă
părinte
comite
6ad9ea8e37
2 a modificat fișierele cu 162 adăugiri și 5 ștergeri
  1. 19 0
      src/api/exam.ts
  2. 143 5
      src/views/exam/abnormal/tableList.vue

+ 19 - 0
src/api/exam.ts

@@ -245,4 +245,23 @@ export const getExamStudentList= (data:any):Promise<ApiResponse> => {
 }
 
 
+// 扫描学生 标记缺考 恢复正常
+export const updateScannedStatus= (data:any):Promise<ApiResponse> => {
+  return request({
+    url: '/api/v1/ai_exam_scan/update_scanned_status',
+    method: 'post',
+    data
+  })
+}
+
+//扫描学生  标记考号异常
+export const updateExamNumberException= (data:any):Promise<ApiResponse> => {
+  return request({
+    url: '/api/v1/ai_exam_scan/mark_to_card_number_exception',
+    method: 'post',
+    data
+  })
+}
+
+
 

+ 143 - 5
src/views/exam/abnormal/tableList.vue

@@ -49,7 +49,7 @@
                 <el-button class="marke_miss_exam_btn" @click="AllMarkedMiss()" v-if="scanState == 0" >全部标缺</el-button>
                 <el-button  class="refresh_btn" @click="ExportData()"><i class="iconfont icon_export" style="margin-right: 5px;"></i>导出</el-button>
                 <el-button style="padding:0px 10px;"  @click="OpenReldentify()" v-if="scanState == 1">重新识别客观题</el-button>
-                <el-button :class="multiSelection.length>0?'marke_normal_btn':'marke_normal_btn_disable'" @click="MarkStudent(2)"  v-if="scanState == 2" :disabled="!multiSelection.length">标记为正常</el-button>
+                <el-button :class="multiSelection.length>0?'marke_normal_btn':'marke_normal_btn_disable'" @click="MarkStudent(0)"  v-if="scanState == 2" :disabled="!multiSelection.length">标记为正常</el-button>
                 <el-button :class="multiSelection.length>0?'marke_anomaly_btn':'marke_anomaly_btn_disable'" @click="MarkCardNumberAbnormal()"  v-if="scanState == 1" :disabled="!multiSelection.length>0">标记为异常</el-button>
                 <el-button :class="multiSelection.length>0?'delete_btn':'delete_btn_disable'"  @click="MarkStudent(4)" v-if="scanState == 1" :disabled=" !multiSelection.length"> 批量删除</el-button>
             </div>
@@ -103,7 +103,7 @@
                     <template #default="scope">
                             <!-- 未扫描 -->
                         <div class="table_row_option" v-if="scanState == 0">
-                            <span class="option_button_editor" @click="OpenMissExam(scope)">标记为缺考</span>
+                            <span class="option_button_editor" @click="MarkToMiss(scope.row)">标记为缺考</span>
                         </div>
                         <!-- 缺考 -->
                         <div class="table_row_option" v-if="scanState == 2">
@@ -323,8 +323,8 @@ import { useExamStore } from '@/store/exam'
 import { useUserStore } from '@/store/user'
 import { useRouter } from 'vue-router'
 import { onMounted ,ref,nextTick,onUnmounted,computed, watch} from 'vue';
-import { getExamStudentList } from '@/api/exam';
-
+import { getExamStudentList,updateScannedStatus,updateExamNumberException } from '@/api/exam';
+import { ElMessageBox, ElMessage } from 'element-plus'
 // 实例化 Store
 const examStore = useExamStore()
 const userStore = useUserStore()
@@ -445,12 +445,150 @@ const tableHeight=ref(200);//学生表格高度
 const subjectReviewTableHeight=ref(200);//主观题复查表格高度
 const tableKey=ref(0);//表格key
 
+//全部标缺
+const AllMarkedMiss=async()=>{
+    if(studentList.value.length==0)
+    {
+        return;
+    }
+
+    // 1. 增加二次确认弹窗
+    await ElMessageBox.confirm(
+        `确定要将当前列表下的 ${studentList.value.length} 名学生全部标记为缺考吗?`,
+        '提示',
+        {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning',
+        }
+    );
+    let studentScanIds=[];
+    for(let i=0;i<studentList.value.length;i++)
+    {
+        studentScanIds.push(studentList.value[i].id);   
+    }
+    UpdateScanStatus(studentScanIds,2);//修改状态 0 未扫描 1 已上传 2  缺考  3 异常   0-未扫描 2-缺考(修改时传,删除不传)
+    
+
+}
+
+//单个标缺
+const MarkToMiss=(item:any)=>{ 
+    console.log("打印选择的学生数据",item);
+    ElMessageBox.confirm(
+        `确定要将 ${item.studentName} 标记为缺考吗?`,
+        '提示',
+        {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning',
+        }
+    ).then(() => {
+        // 确定按钮点击事件处理
+        let studentScanIds=[];
+        studentScanIds.push(item.id);   
+        UpdateScanStatus(studentScanIds,2);//修改状态 0 未扫描 1 已上传 2  缺考  3 异常   0-未扫描 2-缺考(修改时传,删除不传)
+    }).catch(() => {
+        // 取消按钮点击事件处理
+    });
+
+}
+
+//标记状态
+const MarkStudent=(status:number)=>{ 
+    console.log("打印选择的学生数据",multiSelection.value);
+    if(multiSelection.value.length==0)
+    {
+        ElMessage.warning("请选择需要操作的学生");
+        return;
+    }
+    let statusStr=status==2?'缺考':'正常';
+
+    //二次弹窗提示
+    ElMessageBox.confirm(
+        `确定要将选择的 ${multiSelection.value.length} 名学生标记为${statusStr}吗?`,
+        '提示',
+        {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning',
+        }
+    ).then(() => {
+        // 确定按钮点击事件处理
+        let studentScanIds=[];
+        for(let i=0;i<multiSelection.value.length;i++)
+        {
+            studentScanIds.push(multiSelection.value[i].id);   
+        }
+        UpdateScanStatus(studentScanIds,status);//修改状态 0 未扫描 1 已上传 2  缺考  3 异常   0-未扫描 2-缺考(修改时传,删除不传)
+    })
+
+}
+
+//标记考号异常
+const MarkCardNumberAbnormal=()=>{ 
+    ElMessageBox.confirm(
+        `确定要将选择的 ${multiSelection.value.length} 名学生标记为考号异常吗?`,
+        '提示',
+        {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning',
+        }
+    ).then(() => {
+        // 确定按钮点击事件处理
+        let studentScanIds=[];
+        for(let i=0;i<multiSelection.value.length;i++)
+        {
+            studentScanIds.push(multiSelection.value[i].id);   
+        }
+        const params={
+            examSubjectId:examSubjectId.value,
+            studentScanIds:studentScanIds,
+        };
+        updateExamNumberException(params).then((res)=>{
+            if(res.code==200)
+            {
+                ElMessage.success("操作成功")
+                GetExamStudentList();
+            }
+            else
+            {
+                ElMessage.error(res.msg)
+            }
+        })
+        
+    })
+}
+
+
+//修改学生状态
+const UpdateScanStatus=async( studentIds:any, status:number )=>{
+    
+    const params={
+        examSubjectId:examSubjectId.value,
+        ids:studentIds,
+        scannedStatus:status,//0 未扫描 1 已上传 2  缺考  3 异常   0-未扫描 2-缺考(修改时传,删除不传)
+    };
+    let res=await updateScannedStatus(params);
+    console.log("批量修改状态返回结果",res);
+    if(res.code==200)
+    {
+        ElMessage.success("操作成功")
+        GetExamStudentList();
+    }
+    else
+    {
+        ElMessage.error(res.msg)
+    }
+}
 
 const SelectCheckAll=()=>{
 
 }
 const HandleSelectionChange=(selection:any)=>{
-    
+    console.log("打印选中的数据",selection);
+    multiSelection.value=selection;
 }
 
 const TreeHandleNodeClick=(node:any)=>{