提交 4dd2de90 authored 作者: lihuihui's avatar lihuihui

添加批量添加

上级 cbc9a7bb
......@@ -55,3 +55,16 @@ export function updateQuestion(id, data) {
export function questionDetail(id) {
return httpRequest.get(`/api/qbs/admin/v1/question/${id}`)
}
/**
* 导入题
*/
export function importQuestion(data) {
return httpRequest({
url: '/api/qbs/admin/v1/question/import/x1',
method: 'post',
headers: { 'Content-Type': 'multipart/form-data' },
timeout: 900000,
data,
withCredentials: true
})
}
<template>
<el-dialog v-bind="$attrs" v-on="$listeners">
<el-upload
style="text-align: center"
class="file-import"
ref="upload"
action="#"
:auto-upload="false"
:file-list="fileList"
:limit="1"
:before-upload="beforeUpload"
:http-request="fetchFileUpload"
accept=".xls,.xlsx"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
</el-upload>
<div style="text-align: center">
<el-button size="mini" @click="cancel">取消</el-button>
<el-button type="primary" size="mini" @click="submitUpload" style="margin-right: 5px"> 确认提交</el-button>
</div>
</el-dialog>
</template>
<script>
import { splitStrLast } from '@/utils/util'
import { importQuestion } from '../api'
export default {
props: {
id: {
type: String,
default: ''
}
},
data() {
return {
fileList: []
}
},
methods: {
beforeUpload(file) {
const suffix = splitStrLast(file.name, '.')
if (!['xlsx', 'xls'].includes(suffix)) {
this.$message.error('只能上传excel文件')
return false
} else {
return true
}
},
fetchFileUpload(data) {
importQuestion({ file: data.file, exam_id: this.id }).then(res => {
if (res.code === 0) {
this.$message.success('导入数据成功')
history.go(0)
}
})
},
submitUpload() {
this.$refs.upload.submit()
},
cancel() {
this.$router.push({
name: 'teacher'
})
}
}
}
</script>
......@@ -15,7 +15,7 @@
<el-button type="primary" icon="el-icon-plus" @click="$router.push({ path: '/question/create' })"
>新建试题</el-button
>
<el-button type="primary" icon="el-icon-plus" @click="visible = true">批量导入试题</el-button>
<el-button type="primary" icon="el-icon-plus" @click="importDialogVisible = true">批量导入试题</el-button>
<el-button type="primary" icon="el-icon-plus" @click="handleDelete()">批量删除</el-button>
</div>
<template v-slot:table-x="{ row }">
......@@ -36,15 +36,18 @@
</span>
</el-dialog>
</app-list>
<import-question :visible.sync="importDialogVisible" />
</app-card>
</template>
<script>
import { getAppList, getQuestionCategory, deleteQuestion } from '../api'
import importQuestion from '../components/importQuestion.vue'
export default {
components: { importQuestion },
data() {
return {
importDialogVisible: false,
deleteQuestions: [],
dialogVisible: false,
visible: false,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论