龚焕茏
2024-07-03 68b8ed3b4b7ddbb5fe113c1d7df3aa909dc66fb6
src/views/exam/question/list.vue
@@ -33,22 +33,13 @@
          <el-form
            label-position="top"
          >
            <el-form-item label="题型:">
              <el-select v-model="exportForm.questionType" clearable>
                <el-option v-for="item in questionType" :key="item.key" :value="item.key" :label="item.value"></el-option>
            <el-form-item label="课目:">
              <el-select v-model="exportForm.subjectIds" clearable filterable multiple>
                <el-option v-for="item in subjectIdList" :key="item.id" :value="item.id" :label="item.name"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="创建时间:">
              <el-date-picker
                v-model="timeRange"
                type="daterange"
                range-separator="至"
                start-placeholder="开始日期"
                end-placeholder="结束日期">
              </el-date-picker>
            <el-form-item style="text-align: center;margin-top: 5px">
              <el-button type="primary" @click="exportQuestion">导出</el-button>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="exportQuestion" v-loading="exportLoading">导出</el-button>
            </el-form-item>
          </el-form>
          <el-button slot="reference" class="op-item" type="success">导出</el-button>
@@ -63,7 +54,7 @@
          :show-file-list="false"
          :file-list="fileList"
          :before-upload="beforeAvatarUpload">
          <el-button type="primary">导入</el-button>
          <el-button v-loading="importLoading" type="primary">导入</el-button>
          <!--          <div slot="tip" class="el-upload__tip">只能上传Excel文件</div>-->
        </el-upload>
      </div>
@@ -99,17 +90,18 @@
import Pagination from '@/components/Pagination'
import QuestionShow from './components/Show'
import questionApi from '@/api/question'
import SubjectApi from '@/api/subject'
import { downloadExcel } from '@/utils/download'
export default {
  components: { Pagination, QuestionShow },
  data () {
    return {
      importLoading: false,
      exportLoading: false,
      subjectIdList: [],
      timeRange: [],
      exportForm: {
        questionType: null,
        start: null,
        end: null
        subjectIds: [],
      },
      upLoadUrl: '/api/admin/question/import',
      fileList: [],
@@ -137,18 +129,17 @@
  created () {
    this.initSubject()
    this.search()
    this.getSubjectIds()
    this.queryParam.subjectId = null
    this.subjectFilter = this.subjects
  },
  methods: {
    // 导出题目
    exportQuestion () {
      if (this.timeRange && this.timeRange.length > 1) {
        this.exportForm.startStr = this.timeRange[0]
        this.exportForm.endStr = this.timeRange[1]
      }
      this.exportLoading = true
      questionApi.exportQuestion(this.exportForm).then(res => {
        downloadExcel(res, '题目导出')
        this.exportLoading = false
      })
    },
    // 下载导入模板
@@ -158,7 +149,7 @@
      })
    },
    handlePreview (e) {
      console.log(e)
      this.importLoading = false
      if (e.code === 1) {
        this.search()
        this.$message.success(e.message)
@@ -167,6 +158,7 @@
      }
    },
    beforeAvatarUpload (file) {
      this.importLoading = true
      let legalName = ['xlsx', 'xls']
      // 拿到后缀名
      let name = file.name.substring(file.name.lastIndexOf('.') + 1, file.name.length)
@@ -176,17 +168,6 @@
        this.$message.warning('文件格式不对,仅限xls和xlsx')
        return false
      }
      // console.log(file)
      // const isJPG = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
      // // const isLt2M = file.size / 1024 / 1024 < 2;
      //
      // if (!isJPG) {
      //   this.$message.error('上传文件只能是Excel!');
      // }
      // // if (!isLt2M) {
      // //   this.$message.error('上传头像图片大小不能超过 2MB!');
      // // }
      // return isJPG ;
    },
    submitForm () {
      this.queryParam.pageIndex = 1
@@ -218,6 +199,11 @@
        _this.questionShow.question = re.response
        _this.questionShow.loading = false
      })
    },
    getSubjectIds() {
       SubjectApi.list().then(res => {
         this.subjectIdList = res.response
      });
    },
    editQuestion (row) {
      let url = this.enumFormat(this.editUrlEnum, row.questionType)
@@ -251,7 +237,6 @@
    ...mapActions('exam', { initSubject: 'initSubject' })
  },
  computed: {
    headers: function () {
      // console.log(store.getters.Admin-Token)
      // const tenantId = store.getters.userInfo.tenantId