fuliqi
2024-10-28 c2a1c68a2a398e6d0f2f5854c65127efbff306b1
src/views/exam/question/list.vue
@@ -2,7 +2,7 @@
  <div class="app-container">
    <el-form :model="queryParam" ref="queryForm" :inline="true">
      <el-form-item>
        <el-input v-model="queryParam.content" placeholder="请输入题目" clearable></el-input>
        <el-input v-model="queryParam.content" placeholder="请输入题目" clearable @input="search"></el-input>
      </el-form-item>
      <el-form-item>
        <el-select v-model="queryParam.subjectId" placeholder="请选择科目" clearable multiple @change="search">
@@ -21,13 +21,25 @@
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="search">查询</el-button>
        <el-button type="primary" @click="search" size="small">查询</el-button>
        <el-popover placement="bottom" trigger="click">
          <el-button type="warning" size="mini" v-for="item in editUrlEnum" :key="item.key"
            @click="$router.push({ path: item.value })">{{ item.name }}
          </el-button>
          <el-button slot="reference" type="primary" class="link-left">添加</el-button>
          <el-button slot="reference" type="primary" class="link-left" size="small">添加</el-button>
        </el-popover>
        <el-button class="link-left" type="danger" @click="downloadImportTemplate" size="small">下载模板</el-button>
        <el-upload
          style="display: inline;"
          class="op-item link-left"
          action="/api/admin/question/import"
          :with-credentials="true"
          :on-success="handlePreview"
          accept=".xls,.xlsx"
          :show-file-list="false"
          :before-upload="beforeAvatarUpload">
          <el-button v-loading="importLoading" type="primary" size="small">导入</el-button>
        </el-upload>
      </el-form-item>
    </el-form>
    <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
@@ -73,11 +85,13 @@
import Pagination from '@/components/Pagination'
import QuestionShow from './components/Show'
import questionApi from '@/api/question'
import { downloadExcel } from '@/utils/download'
export default {
  components: { Pagination, QuestionShow },
  data() {
    return {
      importLoading: '',
      queryParam: {
        id: null,
        questionType: null,
@@ -103,6 +117,33 @@
    this.search()
  },
  methods: {
    handlePreview (e) {
      this.importLoading = false
      if (e.code === 1) {
        this.search()
        this.$message.success(e.message)
      } else {
        this.$message.error(e.message)
      }
    },
    beforeAvatarUpload (file) {
      this.importLoading = true
      let legalName = ['xlsx', 'xls']
      // 拿到后缀名
      let name = file.name.substring(file.name.lastIndexOf('.') + 1, file.name.length)
      if (legalName.includes(name)) {
        // console.log(legalName.includes(name));
      } else {
        this.$message.warning('请上传xls、xlsx文件')
        return false
      }
    },
    // 下载导入模板
    downloadImportTemplate() {
      questionApi.downloadImportTemplate().then(res => {
        downloadExcel(res, '题目导入模板')
      })
    },
    statusQuestion(row) {
      let question = {
        id: row.id,