提交 a79b34bd authored 作者: 王鹏飞's avatar 王鹏飞

chore: 新增批量导出试题

上级 4754fc0c
......@@ -13,6 +13,7 @@
"blueimp-md5": "^2.19.0",
"clipboard": "^2.0.11",
"element-ui": "^2.15.12",
"file-saver": "^2.0.5",
"lodash": "^4.17.21",
"query-string": "^7.1.3",
"vue": "^2.7.14",
......@@ -1713,6 +1714,11 @@
"node": "^10.12.0 || >=12.0.0"
}
},
"node_modules/file-saver": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
},
"node_modules/file-uri-to-path": {
"version": "2.0.0",
"dev": true,
......@@ -4744,6 +4750,11 @@
"flat-cache": "^3.0.4"
}
},
"file-saver": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
},
"file-uri-to-path": {
"version": "2.0.0",
"dev": true
......
......@@ -17,6 +17,7 @@
"blueimp-md5": "^2.19.0",
"clipboard": "^2.0.11",
"element-ui": "^2.15.12",
"file-saver": "^2.0.5",
"lodash": "^4.17.21",
"query-string": "^7.1.3",
"vue": "^2.7.14",
......
......@@ -68,3 +68,10 @@ export function importQuestion(tag, data) {
withCredentials: true
})
}
/**
* 导出试题
*/
export function exportQuestion(params) {
return httpRequest.get('/api/qbs/admin/v2/export-questions', { params, responseType: 'blob' })
}
......@@ -7,31 +7,16 @@
</div>
<app-list v-bind="tableOptions" ref="list" @selection-change="handleSelectionChange">
<template v-slot:filter-category="{ params }">
<question-type-cascader
multiple
v-model="params.question_categories"
@change="refetchList"
></question-type-cascader>
<question-type-cascader multiple v-model="params.question_categories" @change="refetchList"></question-type-cascader>
</template>
<div class="operate-btn">
<el-button type="primary" icon="el-icon-plus" @click="$router.push({ path: '/question/create' })" v-permission="'question_create'">新建试题</el-button>
<el-button type="primary" icon="el-icon-upload2" @click="importDialogVisible = true" v-permission="'question_import'">批量导入试题</el-button>
<el-button type="primary" icon="el-icon-download" @click="handleExport"> 批量导出试题 </el-button>
<el-button
type="primary"
icon="el-icon-plus"
@click="$router.push({ path: '/question/create' })"
v-permission="'question_create'"
>新建试题</el-button
>
<el-button
type="primary"
icon="el-icon-plus"
@click="importDialogVisible = true"
v-permission="'question_import'"
>批量导入试题</el-button
>
<el-button
type="primary"
icon="el-icon-plus"
icon="el-icon-delete"
@click="handleDelete()"
:disabled="this.deleteQuestions.length === 0"
v-permission="'question_batch_delete'"
......@@ -39,18 +24,10 @@
>
</div>
<template v-slot:table-x="{ row }">
<router-link
:to="{ path: '/question/editQuestion', query: { id: row.id, type: 'edit' } }"
target="_blank"
v-permission="'question_update'"
>
<router-link :to="{ path: '/question/editQuestion', query: { id: row.id, type: 'edit' } }" target="_blank" v-permission="'question_update'">
<el-button type="text">编辑</el-button>
</router-link>
<router-link
:to="{ path: '/question/questionDetail', query: { id: row.id, type: 'view' } }"
target="_blank"
v-permission="'question_detail'"
>
<router-link :to="{ path: '/question/questionDetail', query: { id: row.id, type: 'view' } }" target="_blank" v-permission="'question_detail'">
<el-button type="text">查看详情</el-button>
</router-link>
<el-button type="text" @click="handleDelete(row.id)" v-permission="'question_batch_delete'">删除</el-button>
......@@ -61,9 +38,11 @@
</template>
<script>
import { getAppList, deleteQuestion } from '../api'
import { getAppList, deleteQuestion, exportQuestion } from '../api'
import importQuestion from '../components/importQuestion.vue'
import QuestionTypeCascader from '@/components/base/QuestionTypeTreeselect.vue'
import { saveAs } from 'file-saver'
export default {
components: { importQuestion, QuestionTypeCascader },
data() {
......@@ -74,7 +53,8 @@ export default {
treeDialogVisible: false, // tree弹窗
filterRadio: 1, // 题库筛选
filterInput: '', // tree回显内容
defaultProps: ''
defaultProps: '',
params: {}
}
},
computed: {
......@@ -142,6 +122,9 @@ export default {
project_prefix: this.activeProject.tag,
question_categories: []
},
beforeRequest: params => {
this.params = params
},
callback(data) {
const questionType = {
1: '单选题',
......@@ -190,7 +173,6 @@ export default {
}
}
},
mounted() {},
methods: {
// 列表选择
handleSelectionChange(data) {
......@@ -222,6 +204,12 @@ export default {
refetchList() {
// 刷新列表
this.$refs.list.refetch()
},
// 导出试题
handleExport() {
exportQuestion(this.params).then(res => {
saveAs(res, 'export.xlsx')
})
}
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论