diff --git a/src/apis/modules/activity.js b/src/apis/modules/activity.js index eff9327..2e712c2 100644 --- a/src/apis/modules/activity.js +++ b/src/apis/modules/activity.js @@ -2,6 +2,7 @@ * 区域模块接口 */ import request from '@/utils/request' + // 获取项目列表 export const getProjectList = (params) => request.basic.get('/api/v1/activities', params) // 获取单挑数据 @@ -13,4 +14,6 @@ export const updateItem = (id, params) => request.basic.put(`/api/v1/activities/ // 删除数据 export const delItem = (id) => request.basic.delete(`/api/v1/activities/${id}`) //获取活动报名列表 -export const getActivityList=(params)=>request.basic.get('/api/v1/activity-details',params) \ No newline at end of file +export const getActivityList=(params)=>request.basic.get('/api/v1/activity-details',params) +// 导出文件 +export const exportFile = (params) => request.basic.get('/api/v1/activity-details/export', params, { responseType: 'blob' }) diff --git a/src/apis/modules/common.js b/src/apis/modules/common.js index cc86512..568b547 100644 --- a/src/apis/modules/common.js +++ b/src/apis/modules/common.js @@ -5,5 +5,9 @@ export const getRegion = (params) => request.basic.get('/region', params) // 获取 验证码ID export const getCaptcha = (params) => request.basic.get('/api/v1/captcha/id', params) + +// 获取图片 +export const getCaptchaImage = (params) => request.basic.get('/api/v1/captcha/image', params , { responseType: 'blob' }) + //上传图片 export const uploadImg=(params)=>request.basic.post('/api/v1/upload',params,{Headers:{'Content-Type': 'multipart/form-data'}}) \ No newline at end of file diff --git a/src/utils/request.js b/src/utils/request.js index ccf0da9..d8d7e11 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -20,9 +20,10 @@ const options = { }, interceptorRequestCatch: () => {}, interceptorResponse: (response) => { + const list = ['/api/v1/activity-details/export', '/api/v1/captcha/image'] // 错误处理 const { success, msg = 'Network Error' } = response.data || {} - if (![true].includes(success)) { + if (![true].includes(success) && !list.includes(response.config.url)){ message.error({ content: msg, key: MSG_ERROR_KEY, @@ -87,6 +88,7 @@ const basic = new XYHttp({ ...options, baseURL: config('http.apiBasic'), }) + console.log(basic) const readFile = new ReadFile() export default { diff --git a/src/views/activityOrder/index.vue b/src/views/activityOrder/index.vue index bf517c3..586d2ed 100644 --- a/src/views/activityOrder/index.vue +++ b/src/views/activityOrder/index.vue @@ -5,13 +5,15 @@ - - {{ item.title }} + + {{ item.title + }} + 导出文件 {{ $t('button.reset') }} {{ $t('button.search') }} @@ -84,7 +86,7 @@ import { usePagination } from '@/hooks' import { customersEnum, areaEnum } from "@/enums/useEnum" import { PlusOutlined, EditOutlined, DeleteOutlined, QrcodeOutlined } from '@ant-design/icons-vue' import { useI18n } from 'vue-i18n' - +import axios from 'axios' defineOptions({ name: 'activityOrder', }) @@ -101,7 +103,7 @@ const columns = [ // { title: t('button.action'), key: 'action', fixed: 'right', width: 150, align: 'center' }, ] -const activityList=ref([]) +const activityList = ref([]) const { listData, loading, showLoading, hideLoading, paginationState, resetPagination, searchFormData } = usePagination() @@ -109,11 +111,11 @@ const editDialogRef = ref() getPageList() getActiveList() async function getActiveList() { - try { + try { showLoading() const { success, data } = await apis.activity .getProjectList({ - pageSize:99, + pageSize: 99, current: 1, }) .catch(() => { @@ -121,7 +123,7 @@ async function getActiveList() { }) hideLoading() if (config('http.code.success') === success) { - activityList.value = data.map(item=>({id:item.id,title:item.title})) + activityList.value = data.map(item => ({ id: item.id, title: item.title })) } } catch (error) { hideLoading() @@ -199,6 +201,34 @@ function handleSearch() { resetPagination() getPageList() } + +/** + * 下载文件 + */ +async function handleExport() { + try { + const activityId = searchFormData.value.activityId + if (!activityId) { + message.warning('请选择活动') + return + } + + // 注意添加 { responseType: 'blob' } + const response = await apis.activity.exportFile({ activityId }) + console.log(response) + const url = window.URL.createObjectURL(new Blob([response])) + const link = document.createElement('a') + link.href = url + link.setAttribute('download', 'filename.xlsx') // 设置下载文件名 + document.body.appendChild(link) + link.click() + document.body.removeChild(link) + window.URL.revokeObjectURL(url) + } catch (error) { + // message.error('导出失败:' + (error.message || '未知错误')) + // console.error('导出文件出错:', error) + } +} /** * 重置 */ diff --git a/src/views/login/index.vue b/src/views/login/index.vue index acb7a4a..a3ff58a 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -2,17 +2,10 @@
- - + + -