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

chore: 证书管理支持导出

上级 678f4fb6
import httpRequest from '@/utils/axios' import httpRequest from '@/utils/axios'
/** /**
* 获取课程列表 * 获取证书列表
*/ */
export function getCertList(params) { export function getCertList(params) {
return httpRequest.get('/api/zy-admin/school/certificate/list', { params }) return httpRequest.get('/api/zy-admin/school/certificate/list', { params })
} }
/** /**
* 获取课程列表 * 获取证书详情
*/ */
export function getCertDetails(params) { export function getCertDetails(params) {
return httpRequest.get('/api/zy-admin/school/certificate/view', { 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 @@ ...@@ -24,6 +24,12 @@
<el-button type="primary" size="mini" plain>查看</el-button> <el-button type="primary" size="mini" plain>查看</el-button>
</router-link> </router-link>
</template> </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-list>
</app-card> </app-card>
</template> </template>
...@@ -31,22 +37,22 @@ ...@@ -31,22 +37,22 @@
<script> <script>
import AppClassSelect from '@/components/base/AppClassSelect.vue' import AppClassSelect from '@/components/base/AppClassSelect.vue'
import { getCertList } from '../api' import { getCertList } from '../api'
import queryString from 'query-string'
export default { export default {
data() { data() {
return { return {
isShowDialog: false, listParams: {}
info: {}
} }
}, },
components: { components: { AppClassSelect },
AppClassSelect
},
computed: { computed: {
// 列表配置 // 列表配置
tableOptions() { tableOptions() {
return { return {
remote: { remote: {
httpRequest: getCertList, httpRequest: getCertList,
beforeRequest: this.beforeRequest,
params: { personal_name: '', class_id: '', has_certificate: '' } params: { personal_name: '', class_id: '', has_certificate: '' }
}, },
filters: [ filters: [
...@@ -57,6 +63,7 @@ export default { ...@@ -57,6 +63,7 @@ export default {
columns: [ columns: [
{ label: '姓名', align: 'center', prop: 'personal_name' }, { label: '姓名', align: 'center', prop: 'personal_name' },
{ label: '所属班级', align: 'center', prop: 'class_name' }, { label: '所属班级', align: 'center', prop: 'class_name' },
{ label: '所属机构', align: 'center', prop: 'organization_name' },
{ {
label: '是否取证', label: '是否取证',
align: 'center', align: 'center',
...@@ -68,32 +75,18 @@ export default { ...@@ -68,32 +75,18 @@ export default {
{ label: '操作', slots: 'table-x', align: 'center', width: '220', fixed: 'right' } { 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: { methods: {
handleAdd() { beforeRequest(params) {
this.isShowDialog = true this.listParams = { ...params }
this.info = null return params
}, }
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) {}
} }
} }
</script> </script>
<template> <template>
<el-card> <app-card>
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<!-- 姓名 --> <!-- 姓名 -->
<el-form-item label="姓名" prop="personal_name"> <el-form-item label="姓名" prop="personal_name">
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
<el-button type="primary" @click="submit">提交</el-button> <el-button type="primary" @click="submit">提交</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </app-card>
</template> </template>
<script> <script>
......
<template> <template>
<el-card> <app-card>
<el-form :model="form" label-width="120px" ref="form" :rules="rules"> <el-form :model="form" label-width="120px" ref="form" :rules="rules">
<!-- 姓名 --> <!-- 姓名 -->
<el-form-item label="姓名" prop="personal_name"> <el-form-item label="姓名" prop="personal_name">
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<el-button type="primary" @click="submit">提交</el-button> <el-button type="primary" @click="submit">提交</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </app-card>
</template> </template>
<script> <script>
......
...@@ -49,20 +49,12 @@ httpRequest.interceptors.request.use( ...@@ -49,20 +49,12 @@ httpRequest.interceptors.request.use(
httpRequest.interceptors.response.use( httpRequest.interceptors.response.use(
function (response) { function (response) {
const { data } = response const { data } = response
// 正常返回 // 请求失败
if (data.code === 0) { if (data.code === 1) {
return data
}
// 下载excel流
if (data.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
return data
}
// 获取阿里视频地址
if (data.video) {
return data
}
Message({ message: data.message || data.msg, type: 'error' }) Message({ message: data.message || data.msg, type: 'error' })
return Promise.reject(data) return Promise.reject(data)
}
return data
}, },
function (error) { function (error) {
if (error.response) { if (error.response) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论