|
|
@@ -41,7 +41,10 @@
|
|
|
<div class="right_search">
|
|
|
<div class="search_input">
|
|
|
<el-input type="text" v-model="keyWord" placeholder="学生姓名、考号" >
|
|
|
- <el-button slot="append" icon="el-icon-search" ></el-button>
|
|
|
+
|
|
|
+ <template #append>
|
|
|
+ <el-button :icon="Search"/>
|
|
|
+ </template>
|
|
|
</el-input>
|
|
|
</div>
|
|
|
<div class="search_button el_button">
|
|
|
@@ -51,7 +54,7 @@
|
|
|
<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(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>
|
|
|
+ <el-button :class="multiSelection.length>0?'delete_btn':'delete_btn_disable'" @click="AllUploadDelete()" v-if="scanState == 1" :disabled=" !multiSelection.length"> 批量删除</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="page_table table_row_42" style="width: calc(100% - 40px); margin: auto;" v-loading="isLoading" element-loading-text="加载中……" element-loading-spinner="el-icon-loading" element-loading-background="#ffffff">
|
|
|
@@ -334,6 +337,7 @@ import { ElMessageBox, ElMessage } from 'element-plus'
|
|
|
import PaperPreview from '../components/PaperPreview.vue'//图片预览组件
|
|
|
import ActionImage from '@/components/ActionImage.vue'// 画布图片组件
|
|
|
import ReIdentify from '@/views/exam/components/ReIdentify.vue';//重新识别弹窗
|
|
|
+import { Search } from '@element-plus/icons-vue'
|
|
|
// 实例化 Store
|
|
|
const examStore = useExamStore()
|
|
|
const userStore = useUserStore()
|
|
|
@@ -782,6 +786,7 @@ const GetTemplateDetail = async () => {
|
|
|
|
|
|
};
|
|
|
currentTemplateList.value.push(obj);
|
|
|
+ localStorage.setItem("templateData",JSON.stringify(currentTemplateList.value));//保存模板数据到本地
|
|
|
|
|
|
})
|
|
|
|
|
|
@@ -1137,6 +1142,67 @@ const UploadDelete = async (item: any) => {
|
|
|
}
|
|
|
|
|
|
|
|
|
+/**
|
|
|
+ * 批量已上传删除 - 实际为修改状态为未扫描
|
|
|
+ * @param item - 要删除的学生对象
|
|
|
+ * @description 调用删除接口移除学生的答题卡数据,并刷新列表
|
|
|
+ */
|
|
|
+const AllUploadDelete = async () => {
|
|
|
+
|
|
|
+ console.log("已上传删除item",multiSelection.value);
|
|
|
+ if(multiSelection.value.length==0)
|
|
|
+ {
|
|
|
+ ElMessage.warning("请选择需要操作的学生");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ // 显示确认对话框
|
|
|
+ await ElMessageBox.confirm('是否要批量删除所选的数据?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ closeOnClickModal: false,
|
|
|
+ type: 'warning',
|
|
|
+ customClass: 'page_dialog'
|
|
|
+ });
|
|
|
+
|
|
|
+ // 确定按钮点击事件处理
|
|
|
+ let studentScanIds=[];
|
|
|
+ for(let i=0;i<multiSelection.value.length;i++)
|
|
|
+ {
|
|
|
+ studentScanIds.push(multiSelection.value[i].id);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建请求参数
|
|
|
+ const param = {
|
|
|
+ ids: studentScanIds,
|
|
|
+ examSubjectId: examSubjectId.value,
|
|
|
+ schoolId: schoolId.value
|
|
|
+ // scannedStatus: 2, // 扫描状态 0-未扫描 2-缺考(修改时传,删除不传)
|
|
|
+ };
|
|
|
+
|
|
|
+ console.log("删除参数:", param);
|
|
|
+
|
|
|
+ // 调用删除接口
|
|
|
+ const res = await deleteAnswerCard(param);
|
|
|
+
|
|
|
+ if (res.code === 200) {
|
|
|
+ ElMessage.success('删除成功');
|
|
|
+
|
|
|
+ // 刷新列表数据
|
|
|
+ GetExamScanList();
|
|
|
+ } else {
|
|
|
+ ElMessage.error('删除失败!' + (res.msg || '未知错误'));
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ // 用户点击取消或发生错误
|
|
|
+ if (error !== 'cancel') {
|
|
|
+ console.error("删除操作错误:", error);
|
|
|
+ ElMessage.error('操作失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
//单个标缺
|
|
|
const MarkToMiss=(item:any)=>{
|
|
|
console.log("打印选择的学生数据",item);
|