| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParam" ref="queryForm" :inline="true"> |
| | | <el-form-item label="题目ID:"> |
| | | <el-input v-model="queryParam.id" clearable></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="题目内容:"> |
| | | <el-input v-model="queryParam.content" clearable></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="部门:"> |
| | | <el-select v-model="queryParam.level" placeholder="部门" @change="levelChange" clearable> |
| | | <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="课目:"> |
| | | <el-select v-model="queryParam.subjectId" clearable> |
| | | <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" |
| | | :label="item.name+' ( '+item.levelName+' )'"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="部门:">--> |
| | | <!-- <el-select v-model="queryParam.level" placeholder="部门" @change="levelChange" clearable>--> |
| | | <!-- <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | |
| | | <el-form-item label="题型:"> |
| | | <el-select v-model="queryParam.questionType" clearable> |
| | | <el-option v-for="item in questionType" :key="item.key" :value="item.key" :label="item.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="题目名:"> |
| | | <el-input v-model="queryParam.questionName" clearable></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="submitForm">查询</el-button> |
| | | <el-popover placement="bottom" trigger="click"> |
| | | <el-button type="warning" size="mini" v-for="item in editUrlEnum" :key="item.key" |
| | | <div style="display: flex"> |
| | | <el-button class="op-item" type="primary" @click="submitForm">查询</el-button> |
| | | <el-popover class="op-item" 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">添加</el-button> |
| | | |
| | | </el-popover> |
| | | <el-popover |
| | | placement="right" |
| | | width="400" |
| | | trigger="click"> |
| | | <el-form |
| | | label-position="top" |
| | | > |
| | | <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> |
| | | <el-button type="primary" @click="exportQuestion">导出</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-button slot="reference" class="op-item" type="success">导出</el-button> |
| | | </el-popover> |
| | | <el-button class="op-item" type="danger" @click="downloadImportTemplate">下载导入模板</el-button> |
| | | <el-upload |
| | | class="op-item" |
| | | :action="upLoadUrl" |
| | | :with-credentials="true" |
| | | :on-success="handlePreview" |
| | | multiple |
| | | :show-file-list="false" |
| | | :file-list="fileList" |
| | | :before-upload="beforeAvatarUpload"> |
| | | <el-button type="primary">导入</el-button> |
| | | <!-- <div slot="tip" class="el-upload__tip">只能上传Excel文件</div>--> |
| | | </el-upload> |
| | | </div> |
| | | |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%"> |
| | | <el-table-column prop="id" label="Id" width="90px"/> |
| | | <el-table-column prop="subjectId" label="课目" :formatter="subjectFormatter" width="120px"/> |
| | | <el-table-column prop="subjectId" label="课目" :formatter="subjectIdFormatte" width="120px"/> |
| | | <el-table-column prop="deptNames" label="所属部门" width="150px"/> |
| | | <el-table-column prop="questionType" label="题型" :formatter="questionTypeFormatter" width="70px"/> |
| | | <el-table-column prop="shortTitle" label="题干" show-overflow-tooltip/> |
| | | <el-table-column prop="score" label="分数" width="60px"/> |
| | |
| | | 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 { |
| | | subjectIdList: [], |
| | | timeRange: [], |
| | | exportForm: { |
| | | subjectIds: [], |
| | | }, |
| | | upLoadUrl: '/api/admin/question/import', |
| | | fileList: [], |
| | | queryParam: { |
| | | id: null, |
| | | questionType: null, |
| | |
| | | } |
| | | } |
| | | }, |
| | | |
| | | created () { |
| | | this.initSubject() |
| | | this.search() |
| | | this.getSubjectIds() |
| | | this.queryParam.subjectId = null |
| | | this.subjectFilter = this.subjects |
| | | }, |
| | | methods: { |
| | | // 导出题目 |
| | | exportQuestion () { |
| | | questionApi.exportQuestion(this.exportForm).then(res => { |
| | | downloadExcel(res, '题目导出') |
| | | }) |
| | | }, |
| | | // 下载导入模板 |
| | | downloadImportTemplate () { |
| | | questionApi.downloadImportTemplate().then(res => { |
| | | downloadExcel(res, '题目导入模板') |
| | | }) |
| | | }, |
| | | handlePreview (e) { |
| | | console.log(e) |
| | | if (e.code === 1) { |
| | | this.search() |
| | | this.$message.success(e.message) |
| | | } else { |
| | | this.$message.error(e.message) |
| | | } |
| | | }, |
| | | beforeAvatarUpload (file) { |
| | | 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 |
| | | } |
| | | }, |
| | | submitForm () { |
| | | this.queryParam.pageIndex = 1 |
| | | this.search() |
| | |
| | | }, |
| | | levelChange () { |
| | | this.queryParam.subjectId = null |
| | | this.subjectFilter = this.subjects.filter(data => data.level === this.queryParam.level) |
| | | this.subjectFilter = this.subjects |
| | | }, |
| | | addQuestion () { |
| | | this.$router.push('/exam/question/edit/singleChoice') |
| | |
| | | _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) |
| | |
| | | questionTypeFormatter (row, column, cellValue, index) { |
| | | return this.enumFormat(this.questionType, cellValue) |
| | | }, |
| | | subjectIdFormatte (row, column, cellValue, index) { |
| | | console.log(row, column, cellValue, index) |
| | | let str = '' |
| | | row.questionSubjects.forEach(item => { |
| | | str += item.subName + ',' |
| | | }) |
| | | return str = str.slice(0, str.length - 1) |
| | | }, |
| | | subjectFormatter (row, column, cellValue, index) { |
| | | return this.subjectEnumFormat(cellValue) |
| | | }, |
| | | ...mapActions('exam', { initSubject: 'initSubject' }) |
| | | }, |
| | | computed: { |
| | | headers: function () { |
| | | // console.log(store.getters.Admin-Token) |
| | | // const tenantId = store.getters.userInfo.tenantId |
| | | return { |
| | | // 'Authorization': "Bearer " + store.getters.Admin-Token, |
| | | 'Cookie': 'JSESSIONID=shpHmjIK1ysHPDyAQB4-M-N3WytgJ3UIwYrfcA2t; adminUserName=admin' |
| | | } |
| | | }, |
| | | ...mapGetters('enumItem', ['enumFormat']), |
| | | ...mapState('enumItem', { |
| | | questionType: state => state.exam.question.typeEnum, |
| | |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | .op-item { |
| | | margin-left: 5px; |
| | | } |
| | | .upload-demo{ |
| | | margin-left: 5px; |
| | | } |
| | | </style> |