zhouwx
2024-08-05 4f6cdee3d3a9967b6955aacc354bf557430c0643
src/views/onlineEducation/groupExams/components/student.vue
@@ -1,18 +1,55 @@
<template>
  <div class="app-container">
    <div style="margin-bottom: 10px;display: flex;align-items: center;justify-content: space-between">
      <el-button
          type="primary"
          plain
          icon="Plus"
          @click="openDialog()"
      >选择学员</el-button>
      <el-button
          type="danger"
          plain
          icon="Delete"
          @click="handleDeleteBatch"
      >批量删除</el-button>
    <div style="display: flex;justify-content: space-between">
      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
        <el-form-item>
          <el-button
              type="primary"
              plain
              icon="Plus"
              @click="openDialog()"
          >选择学员</el-button>
        </el-form-item>
        <el-form-item label="学生姓名:" >
          <el-input v-model="data.queryParams.studentName" placeholder="请输入学生姓名"></el-input>
        </el-form-item>
        <el-form-item label="试卷状态:" >
          <el-select
              v-model="data.queryParams.state"
              class="w100"
              style="max-width: 180px"
              clearable
              size="default"
          >
            <el-option v-for="item in data.completeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item >
          <el-button
              type="primary"
              @click="getList"
          >查询</el-button>
          <el-button
              type="primary"
              plain
              @click="reset"
          >重置</el-button>
        </el-form-item>
      </el-form>
      <div>
        <el-button
            type="danger"
            plain
            icon="Delete"
            @click="handleDeleteBatch"
        >批量删除</el-button>
        <el-button
            type="primary"
            plain
            @click="back"
        >返回</el-button>
      </div>
    </div>
    <!-- 表格数据 -->
    <el-table ref="tableRef" v-loading="loading" :data="dataList" :border="true" :row-key="getRowKey"  @selection-change="handleSelectionChange">
@@ -33,14 +70,29 @@
          <span>{{scope.row.student.phone}}</span>
        </template>
      </el-table-column>
      <el-table-column label="成绩" prop="score" align="center"  />
      <el-table-column label="试卷状态" prop="state" align="center" >
        <template #default="scope">
          <span>{{scope.row.state ===0 ? '待考试' : scope.row.state ===1 ? '待批阅':'批阅完成'}}</span>
        </template>
      </el-table-column>
<!--      <el-table-column label="考试是否完成" prop="completed" align="center" >-->
<!--        <template #default="scope">-->
<!--          <span>{{scope.row.completed ===0 ? '未完成' : '已完成'}}</span>-->
<!--        </template>-->
<!--      </el-table-column>-->
      <el-table-column label="成绩" prop="score" align="center" >
        <template #default="scope">
          <span>{{scope.row.state ===0 ? '--' : scope.row.score}}</span>
        </template>
      </el-table-column>
      <el-table-column label="是否合格" prop="passed" align="center"  >
        <template #default="scope">
          <span>{{scope.row.passed === 0 ? '不合格' : '合格'}}</span>
          <span>{{scope.row.state ===0 ? '--' : scope.row.passed === 0 ? '不合格' : '合格'}}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="180">
        <template #default="scope">
          <el-button link type="primary" @click="correct(scope.row)" v-if="scope.row.state != 0">批阅</el-button>
          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
        </template>
      </el-table-column>
@@ -64,11 +116,11 @@
import Cookies from "js-cookie";
import {delQuestionBank, getQuestionBank} from "@/api/onlineEducation/questionBank";
import {batchDelStudent, delBatchStu, getBatchStudent} from "@/api/onlineEducation/batch";
import {useRoute} from 'vue-router'
import {useRoute, useRouter} from 'vue-router'
import {delExamStu, examDelStudent, getExamStudent} from "@/api/onlineEducation/exam";
import ExamChooseStudent from "@/views/onlineEducation/groupExams/components/examChooseStudent.vue";
const route = useRoute()
const router = useRouter();
const { proxy } = getCurrentInstance();
const loading = ref(false);
@@ -77,19 +129,49 @@
const data = reactive({
  queryParams: {
    paperId: null,
    studentName: '',
    state: null,
    pageNum: 1,
    pageSize: 10,
  },
  total: 0,
  dataList: [],
  isAdmin: false,
  chooseStu: []
  chooseStu: [],
  completeList: [
    {
      id: 0,
      name: '待考试'
    },
    {
      id: 1,
      name: '待批阅'
    },
    {
      id: 2,
      name: '批阅完成'
    },
  ]
});
const { queryParams, total, dataList } = toRefs(data);
const backValue = ref()
onMounted(async ()=>{
  if(route.query.val){
    const val = JSON.parse(route.query.val)
    if(val.type == 'index'){
      data.queryParams.pageNum = val.pageNum;
      data.queryParams.pageSize = val.pageSize;
      data.queryParams.paperId = val.id
    }else {
      data.queryParams.paperId = val.paperId
      data.queryParams.pageNum = val.pageNum;
      data.queryParams.pageSize = val.pageSize;
    }
  }
  const userInfo = JSON.parse(Cookies.get('userInfo'))
  console.log("userInfo",userInfo)
  if(userInfo.userType === 0){
@@ -97,9 +179,6 @@
  }else {
    data.isAdmin = false;
  }
  const val = JSON.parse(route.query.val)
  // data.queryParams.pageId = val.id
  data.queryParams.paperId = val.id
  await getList()
})
onUnmounted(()=>{
@@ -108,6 +187,18 @@
const getRowKey = (row) => {
  return row.id
}
const back = () => {
  // router.push("/group");
  const obj = {
    pageNum: data.queryParams.pageNum,
    pageSize: data.queryParams.pageSize,
  }
  const v = JSON.stringify(obj)
  router.push({ path: "/group", query: { val: v } });
}
const getList = async () => {
  loading.value = true
@@ -127,13 +218,32 @@
/** 重置新增的表单以及其他数据  */
function reset() {
  proxy.resetForm("roleRef");
  data.queryParams = {
    paperId: data.queryParams.paperId,
    studentName: '',
    state: null,
    pageNum: 1,
    pageSize: 10,
  }
  getList()
}
const handleSelectionChange = (val) => {
  console.log("选中的行", val)
  data.chooseStu = val.map(item => item.id)
}
const correct = (val) => {
  const obj = {
    id: val.id,
    paperId: data.queryParams.paperId,
    pageNum: data.queryParams.pageNum,
    pageSize: data.queryParams.pageSize,
    state: val.state
  }
  const v = JSON.stringify(obj)
  router.push({ path: "/correctExam", query: { val: v } });
}
const handleDelete = (val) => {
  ElMessageBox.confirm(
      '确定删除此条数据?',