zhouwx
2025-01-06 c3bb35b20d6e076f73a1cad50fd6b9b94ca399a7
src/views/onlineEducation/questionManage/index.vue
@@ -1,22 +1,57 @@
<template>
  <div class="app-container">
    <el-table v-loading="loading" :data="expertList">
      <el-table-column label="月份" align="center" prop="month" />
    <div style="display: flex">
      <div>
        <span style="font-size: 14px;margin-right:10px">题库名称:</span>
        <el-input v-model="queryParams.name" style="width: 200px" placeholder="请输入题库名称" clearable></el-input>
        <span style="font-size: 14px;margin: 0 20px">平台:</span>
        <el-select v-model="queryParams.institutionId" placeholder="请选择平台" clearable>
          <el-option
            v-for="item in platformList"
            :key="item.id"
            :label="item.institutionalName"
            :value="item.id">
          </el-option>
        </el-select>
        <el-button
          size="small"
          type="primary"
          style="margin-bottom: 10px;margin-left: 20px"
          @click="handleQuery()"
        >查询</el-button>
        <el-button
          plain
          size="small"
          type="primary"
          style="margin-bottom: 10px"
          @click="resetQuery()"
        >重置</el-button>
      </div>
    </div>
    <el-table v-loading="loading" :data="dataList">
      <el-table-column label="序号" align="center" type="index" width="80" />
      <el-table-column label="更新时间" align="center" prop="updateTime" />
      <el-table-column label="平台名称" align="center" prop="institutionName" />
      <el-table-column label="上月题库总题目数" align="center" prop="lastMonthCount" />
      <el-table-column label="新增题目数量" align="center" prop="addCount" />
      <el-table-column label="减少题目数" align="center" prop="reduceCount" />
      <el-table-column label="刷题应用率" align="center" prop="brushRate" />
      <el-table-column label="组卷应用率" align="center" prop="assemblyRate" />
      <el-table-column label="上报时间" align="center" prop="createTime" />
      <el-table-column label="组卷预览" align="center" class-name="small-padding fixed-width">
      <el-table-column label="题库名称" align="center" prop="name" />
      <el-table-column label="题库题目总数" align="center" prop="totalCount" />
      <el-table-column label="单选题数量" align="center" prop="singleCount" />
      <el-table-column label="多选题数量" align="center" prop="multiCount" />
      <el-table-column label="判断题数量" align="center" prop="judgeCount" />
      <el-table-column label="简答题数量" align="center" prop="easyCount" />
      <el-table-column label="混合题数量" align="center" prop="mixCount" />
      <el-table-column label="其他题目数量" align="center" prop="otherCount" />
      <el-table-column label="删除标识" align="center">
        <template #default="scope">
          {{scope.row.delFlag == 0 ? '未删除' : scope.row.delFlag == 2 ?'已删除' : ''}}
        </template>
      </el-table-column>
      <el-table-column label="模拟考核组卷" align="center" class-name="small-padding fixed-width">
        <template #default="scope">
          <el-button
            size="mini"
            type="text"
            style="color: #1890ff"
            @click="handleView(scope.row.url)"
          >点击预览</el-button>
            :loading="btnLoading"
            type="primary"
            @click="groupExam(scope.row)"
          >立即组卷</el-button>
        </template>
      </el-table-column>
    </el-table>
@@ -27,11 +62,24 @@
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <el-dialog
      :visible.sync="showDialog"
      width="500px"
      :before-close="handleClose">
      <div style="font-size: 16px">
        <div>已向 <span class="titleText">{{chooseItem.institutionName}}</span> 发送基于题库 <span class="titleText">{{chooseItem.name}}</span> 的组卷要求,学员可登录平台进行模拟考试。</div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="handleClose">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import { listQuestion } from '@/api/onlineEducation/student'
import { delPlat, listPlatSelect } from '@/api/onlineEducation/plat'
import { getQuestion } from '@/api/onlineEducation/question'
export default {
  name: "nPeopleManage",
@@ -46,45 +94,92 @@
      addForm: false,
      total: 0,
      expertTypes: [],
      expertList: [],
      dataList: [],
      queryParams: {
        name: '',
        institutionId: null,
        pageNum: 1,
        pageSize: 10,
      },
      platformList: [],
      btnLoading:false,
      showDialog:false,
      chooseItem: {}
    };
  },
  created() {
    this.getPlat();
    this.getList();
  },
  methods: {
    getList(){
      this.loading = true;
      listQuestion( this.queryParams).then((res) => {
        if (res.code == 200) {
          this.expertList = res.rows.map(item => {
            return {
              ...item,
              brushRate: item.brushRate + '%',
              assemblyRate: item.assemblyRate + '%'
            }
          })
      getQuestion(this.queryParams).then(res => {
        if(res.code === 200){
          this.dataList = res.rows
          this.total = res.total
          this.loading = false;
        }else {
          this.$message({
            message: res.msg,
            type: 'warning'
          })
        }
      })
    },
    getPlat() {
      listPlatSelect().then((res) => {
        if (res.code == 200) {
          this.platformList = res.data
        }
      })
    },
    handleChange(){
    },
    handleQuery(){
      this.getList();
    },
    resetQuery(){
      this.queryParams = {
        pageNum: 1,
        pageSize: 10,
        institutionId: '',
        name: ''
      }
      this.getList();
    },
    handleView(url){
      window.open(url,'_blank')
    groupExam(row){
      this.$confirm('确认立即组卷该题库?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.btnLoading = true
        setTimeout(() => {
          this.chooseItem = row
          console.log('row',row)
         this.showDialog = true
          this.btnLoading = false
        }, 1500);
      })
    },
    handleClose() {
      this.chooseItem = {}
      this.showDialog = false
    }
  }
};
</script>
<style lang="scss" scoped>
.titleText{
  font-size: 16px;
  font-weight: 600;
  color: #1890ff;
}
.dialog-footer{
  display: flex;
  justify-content: center;
}
</style>