|
|
@@ -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)=>{
|