fuliqi
2024-10-17 d70e74cf8f4e5d788e37c5ad91d7b8923cb7a956
src/views/exam/exam/ExamManage.vue
@@ -7,11 +7,11 @@
      <div>
        <el-form :inline="true" :model="searchForm" class="demo-form-inline">
          <el-form-item label="考试名称">
            <el-input v-model="searchForm.examName" @input="page" clearable size="small" clearable @clear="page"
            <el-input v-model="searchForm.examName" @input="page" clearable size="small" @clear="page"
                      placeholder="班级名称"></el-input>
          </el-form-item>
          <el-form-item label="参考班级">
            <el-select v-model="searchForm.classesId" @change="page" clearable @clear="page">
            <el-select v-model="searchForm.classesId" @change="page" clearable size="small" @clear="page">
              <el-option v-for="classes in classesList" :key="classes.id" :value="classes.id"
                         :label="classes.className"/>
            </el-select>
@@ -22,26 +22,30 @@
        </el-form>
      </div>
    </div>
    <el-table :data="tableData" border>
    <el-table :data="tableData" border style="width: 100%">
      <el-table-column
        label="考试名称"
        width="150px"
        prop="examName"
      ></el-table-column>
      <el-table-column
        label="考试试卷"
        prop="examPaperName"
        width="200px"
      ></el-table-column>
      <el-table-column
        label="参考班级"
        width="200px"
        prop="className"
      ></el-table-column>
      <el-table-column
        label="班级人数"
        prop="studentNum"
      ></el-table-column>
      <!--      <el-table-column-->
      <!--        label="班级人数"-->
      <!--        prop="studentNum"-->
      <!--      ></el-table-column>-->
      <el-table-column
        label="考试地点"
        prop="examPlace"
        width="150px"
      ></el-table-column>
      <el-table-column
        label="考试状态"
@@ -61,19 +65,53 @@
      </el-table-column>
      <el-table-column
        label="创建时间"
        width="150px"
        width="160px"
        prop="createTime"
      ></el-table-column>
      <el-table-column label="操作" fiexd="right" width="210px">
      <el-table-column label="操作" fixed="right" width="220px">
        <template slot-scope="scope">
          <el-button
            type="primary"
            size="small"
            @click="handlerEdit(scope.row)"
            v-if="scope.row.status === 'not_start'"
            v-show="scope.row.status !== 'cancel'"
          >修改
          </el-button>
          <el-button type="danger" size="small" @click="deleteExam(scope.row.id)">删除</el-button>
          <el-button type="success" size="small" @click="markPaper(scope.row)">阅卷</el-button>
          <el-popconfirm
            v-if="scope.row.status === 'not_start'"
            v-show="scope.row.status !== 'cancel'"
            style="margin: 0 5px"
            title="确定要删除该考试吗?"
            @confirm="deleteExam(scope.row.id)"
          >
            <el-button slot="reference" type="danger" size="small" v-show="scope.row.status !== 'cancel'">删除</el-button>
          </el-popconfirm>
          <el-button v-if="scope.row.status === 'finished'" type="success" size="small" @click="markPaper(scope.row)" v-show="scope.row.status !== 'cancel'">
            阅卷
          </el-button>
          <el-button v-if="scope.row.status === 'ing'" type="warning" size="small" @click="monitor(scope.row)" v-show="scope.row.status !== 'cancel'">监控</el-button>
          <el-popconfirm
            class="confirm"
            style="margin: 0 5px"
            title="确定要作废该考试记录吗?"
            @confirm="cancel(scope.row.id)"
          >
            <el-button slot="reference" v-show="scope.row.status !== 'cancel'" type="danger"
                       size="small"
                       v-if="scope.row.status !== 'ing'">作废
            </el-button>
          </el-popconfirm>
          <el-popconfirm
            class="confirm"
            title="确定要恢复该考试记录吗?"
            @confirm="recover(scope.row.id)"
          >
            <el-button slot="reference" v-show="scope.row.status === 'cancel'" type="success"
                       size="small">恢复正常
            </el-button>
          </el-popconfirm>
        </template>
      </el-table-column>
    </el-table>
@@ -81,7 +119,7 @@
      class="flex"
      style="justify-content:center;margin-top:20px;"
    >
      <pagination v-show="total>0" :total="total" :page.sync="searchForm.pageIndex" :limit.sync="searchForm.pageSize"
      <pagination v-show="total>0" :total="total" :page.sync="searchForm.currentPage" :limit.sync="searchForm.pageSize"
                  @pagination="page"/>
    </div>
    <el-dialog width="500px" :title="title" @close="closeHandler" :visible.sync="open" :destroy-on-close="true"
@@ -111,10 +149,13 @@
        <el-form-item label="开始时间" :label-width="formLabelWidth" prop="time">
          <el-date-picker
            v-model="examForm.time"
            type="daterange"
            type="datetimerange"
            format="yyyy-MM-dd HH:mm:ss"
            value-format="yyyy-MM-dd HH:mm:ss"
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期">
            end-placeholder="结束日期"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="考试地点" :label-width="formLabelWidth" prop="examPlace">
@@ -131,7 +172,7 @@
<script>
import Pagination from '@/components/Pagination'
import { getExams, addExam, editExam, deleteExamById } from '@/api/exam'
import { getExams, addExam, editExam, deleteExamById, cancel, recover } from '@/api/exam'
import { myClasses } from '@/api/classes'
import examPaperAPI from '@/api/examPaper'
@@ -150,9 +191,9 @@
        examPaperType: null,
        examPlace: '',
        status: '',
        startTime: '',
        endTime: '',
        time: [],
        startTime: null,
        endTime: null,
        time: []
      },
      examRules: {
        examName: [
@@ -172,7 +213,7 @@
        ],
        time: [
          { required: true, message: '请选择考试时间', trigger: 'change' }
        ],
        ]
      },
      total: 0,
      title: '安排考试',
@@ -180,10 +221,10 @@
      searchForm: {
        examName: '',
        subject: null,
        pageIndex: 1,
        currentPage: 1,
        pageSize: 10
      },
      tableData: [],
      tableData: []
    }
  },
  mounted () {
@@ -192,6 +233,24 @@
    this.MyExamPaperList()
  },
  methods: {
    // 作废考试
    cancel (id) {
      cancel(id).then(res => {
        this.$message.success(res.data.message)
        this.page()
      })
    },
    // 恢复考试
    recover (id) {
      recover(id).then(res => {
        this.$message.success(res.data.message)
        this.page()
      })
    },
    // 考试监控列表
    monitor (row) {
      this.$router.push({ path: '/exam/monitor', query: { examId: row.id } })
    },
    markPaper (row) {
      // 跳转阅卷页面
      this.$router.push({ path: '/exam/mark/paper', query: { examName: row.examName, examId: row.id } })
@@ -206,6 +265,8 @@
        return '未开始'
      } else if (row.status === 'finished') {
        return '已结束'
      } else if (row.status === 'cancel') {
        return '已作废'
      }
    },
    MyExamPaperList () {
@@ -228,15 +289,23 @@
        this.classesList = res.data.data
      })
    },
    deleteExam (id) {
      deleteExamById(id).then(res => {
        this.$message.success('删除成功')
        this.page()
    deleteExam (row) {
      this.$confirm('确认是否删除' + row.examName + '?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteExamById(row.id).then(res => {
          this.$message.success('删除成功')
          this.page()
        })
      })
    },
    handlerEdit (row) {
      this.examForm = row
      this.examForm.time = [row.startTime, row.endTime]
      this.examForm = {
        ...row,
        time: [row.startTime, row.endTime]
      }
      this.title = '修改考试'
      this.open = true
    },
@@ -272,8 +341,9 @@
        examPaperType: '',
        examPlace: '',
        status: '',
        startTime: '',
        endTime: '',
        startTime: null,
        endTime: null,
        time: []
      }
    },
    closeHandler () {
@@ -295,7 +365,7 @@
    routerTo (url) {
      this.$router.push(url)
    },
  },
  }
}
</script>