xiangpei
2024-10-30 31f7b390b44db12308943492891e7e0ef96f32e8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<template>
  <div class="app-container">
    <el-form :model="queryParam" ref="queryForm" :inline="true">
      <el-form-item label="试卷名称:">
        <el-input v-model="queryParam.name" size="small" clearable @input="search"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm" size="small">查询</el-button>
        <router-link :to="{ path: '/exam/paper/edit' }" class="link-left">
          <el-button type="primary" size="small">添加</el-button>
        </router-link>
        <el-button class="link-left" type="danger" @click="downloadImportTemplate" size="small">下载模板</el-button>
        <router-link :to="{ path: '/exam/paper/import' }" class="link-left">
          <el-button type="success" size="small">导入</el-button>
        </router-link>
      </el-form-item>
    </el-form>
    <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
      <el-table-column align="center" prop="id" label="Id" width="90px" />
      <el-table-column align="center" prop="name" label="名称" />
      <el-table-column align="center" prop="paperType" label="试卷类型">
        <template slot-scope="scope">
          <div v-if="scope.row.paperType === 1">固定试卷</div>
          <div v-else-if="scope.row.paperType === 2">随机试卷</div>
          <div v-else-if="scope.row.paperType === 3">随序试卷</div>
        </template>
      </el-table-column>
      <el-table-column align="center" prop="suggestTime" label="建议时长(分钟)">
      </el-table-column>
      <el-table-column align="center" prop="num" label="题目数量">
      </el-table-column>
      <el-table-column align="center" prop="score" label="总分">
      </el-table-column>
      <el-table-column align="center" prop="createTime" label="创建时间" width="160px" />
      <el-table-column label="操作" align="center" width="160px">
        <template slot-scope="{row}">
          <el-button size="mini" @click="$router.push({ path: '/exam/paper/edit', query: { id: row.id } })">编辑</el-button>
          <el-popconfirm
            style="margin: 0 5px"
            title="确定要删除该试卷吗?"
            @confirm="deletePaper(row)"
          >
            <el-button slot="reference" type="danger" size="mini" class="link-left">删除</el-button>
          </el-popconfirm>
        </template>
      </el-table-column>
    </el-table>
    <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
      @pagination="search" />
  </div>
</template>
 
<script>
import Pagination from '@/components/Pagination'
import subjectApi from '@/api/subject'
import examPaperApi from '@/api/examPaper'
import { downloadExcel } from '@/utils/download'
import userApi from "@/api/user";
 
export default {
  components: { Pagination },
  data() {
    return {
      queryParam: {
        name: null,
        level: null,
        subjectId: null,
        pageIndex: 1,
        pageSize: 10
      },
      listLoading: true,
      tableData: [],
      subjects: [],
      total: 0
    }
  },
  created() {
    this.getSubjects()
    this.search()
  },
  methods: {
    // 下载导入模板
    downloadImportTemplate() {
      examPaperApi.downloadImportTemplate().then(res => {
        downloadExcel(res, '试卷导入模板')
      })
    },
    submitForm() {
      this.queryParam.pageIndex = 1
      this.search()
    },
    search() {
      this.listLoading = true
      examPaperApi.pageList(this.queryParam).then(data => {
        const re = data.data
        this.tableData = re.list
        this.total = re.total
        this.queryParam.pageIndex = re.pageNum
        this.listLoading = false
      })
    },
    deletePaper (row) {
      this.$confirm('此操作将永久删除该试卷, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        let _this = this
        examPaperApi.deletePaper(row.id).then(re => {
          if (re.code === 1) {
            _this.search()
            _this.$message.success(re.message)
          } else {
            _this.$message.error(re.message)
          }
        })
      })
    },
    // 获取科目
    getSubjects() {
      subjectApi.list().then(re => {
        this.subjects = re.data
      })
    },
    translate(subjectId) {
      const subject = this.subjects.find(subject => subject.id == subjectId);
      return subject ? subject.name : '未知';
    }
  }
}
</script>