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

chore: 证书管理支持导出

上级 678f4fb6
import httpRequest from '@/utils/axios'
/**
* 获取课程列表
* 获取证书列表
*/
export function getCertList(params) {
return httpRequest.get('/api/zy-admin/school/certificate/list', { params })
}
/**
* 获取课程列表
* 获取证书详情
*/
export function getCertDetails(params) {
return httpRequest.get('/api/zy-admin/school/certificate/view', { params })
}
/**
* 导出证书列表
*/
export function exportCertList(params) {
return httpRequest.get('/api/zy-admin/school/certificate/download', { params, headers: { responseType: 'blob' } })
}
......@@ -24,6 +24,12 @@
<el-button type="primary" size="mini" plain>查看</el-button>
</router-link>
</template>
<div class="buttons">
<a :href="exportUrl" download target="_blank">
<el-button type="primary" icon="el-icon-download">导出</el-button>
</a>
<span style="font-size: 12px; padding: 0 10px; color: #606266">导出当前搜索结果</span>
</div>
</app-list>
</app-card>
</template>
......@@ -31,22 +37,22 @@
<script>
import AppClassSelect from '@/components/base/AppClassSelect.vue'
import { getCertList } from '../api'
import queryString from 'query-string'
export default {
data() {
return {
isShowDialog: false,
info: {}
listParams: {}
}
},
components: {
AppClassSelect
},
components: { AppClassSelect },
computed: {
// 列表配置
tableOptions() {
return {
remote: {
httpRequest: getCertList,
beforeRequest: this.beforeRequest,
params: { personal_name: '', class_id: '', has_certificate: '' }
},
filters: [
......@@ -57,6 +63,7 @@ export default {
columns: [
{ label: '姓名', align: 'center', prop: 'personal_name' },
{ label: '所属班级', align: 'center', prop: 'class_name' },
{ label: '所属机构', align: 'center', prop: 'organization_name' },
{
label: '是否取证',
align: 'center',
......@@ -68,32 +75,18 @@ export default {
{ label: '操作', slots: 'table-x', align: 'center', width: '220', fixed: 'right' }
]
}
},
// 导出地址
exportUrl() {
const query = queryString.stringify(this.listParams)
return import.meta.env.VITE_BASE_URL + '/api/zy-admin/school/certificate/download?' + query
}
},
methods: {
handleAdd() {
this.isShowDialog = true
this.info = null
},
onDetails(row) {
console.log(row)
},
onEdit(row) {
this.isShowDialog = true
this.info = row
},
// 删除课程
onRemove(row) {
this.$confirm('你确定要删除此项吗', '确认提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// 调用删除接口
this.delTeach(row)
})
},
delTeach(row) {}
beforeRequest(params) {
this.listParams = { ...params }
return params
}
}
}
</script>
<template>
<el-card>
<app-card>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<!-- 姓名 -->
<el-form-item label="姓名" prop="personal_name">
......@@ -47,7 +47,7 @@
<el-button type="primary" @click="submit">提交</el-button>
</el-form-item>
</el-form>
</el-card>
</app-card>
</template>
<script>
......
<template>
<el-card>
<app-card>
<el-form :model="form" label-width="120px" ref="form" :rules="rules">
<!-- 姓名 -->
<el-form-item label="姓名" prop="personal_name">
......@@ -26,7 +26,7 @@
<el-button type="primary" @click="submit">提交</el-button>
</el-form-item>
</el-form>
</el-card>
</app-card>
</template>
<script>
......
......@@ -49,20 +49,12 @@ httpRequest.interceptors.request.use(
httpRequest.interceptors.response.use(
function (response) {
const { data } = response
// 正常返回
if (data.code === 0) {
return data
}
// 下载excel流
if (data.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
return data
}
// 获取阿里视频地址
if (data.video) {
return data
}
// 请求失败
if (data.code === 1) {
Message({ message: data.message || data.msg, type: 'error' })
return Promise.reject(data)
}
return data
},
function (error) {
if (error.response) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论