2.9 KiB
2.9 KiB
心理健康测评明细导出功能修复记录(第二次)
导出功能认证失败问题修复(2025-07-24 17:00)
问题描述
之前的修复方案未能解决问题,导出的Excel文件中仍然显示错误信息:
{"code":401,"msg":"认证失败,无法访问系统资源","data":null}
问题分析
经过进一步分析,发现项目中有统一的下载工具函数,应该使用项目提供的统一下载方法,而不是自定义XMLHttpRequest。
-
项目中提供了两种下载方法:
proxy.$download- 来自插件的下载方法proxy.download- 来自request.ts的下载方法
-
查看其他模块的导出功能,发现都是使用
proxy.download方法,而不是自定义XMLHttpRequest或proxy.$download。
解决方案
修改导出功能代码,使用项目统一的proxy.download方法:
/** 导出结果 */
const handleExport = () => {
console.log('导出测评明细,测评ID:', evaluationId.value);
proxy?.download(
'xljk/evaluation/detail/export',
{
evaluationId: evaluationId.value
},
`心理健康测评明细_${evaluationId.value}_${new Date().getTime()}.xlsx`
);
};
修改前后对比
修改前:
/** 导出结果 */
const handleExport = () => {
// 显示加载中提示
const loading = ElLoading.service({
text: '正在导出数据,请稍候...',
background: 'rgba(0, 0, 0, 0.7)'
});
// 创建表单数据
const formData = new FormData();
formData.append('evaluationId', evaluationId.value);
// 使用XMLHttpRequest发送请求
const xhr = new XMLHttpRequest();
xhr.open('POST', import.meta.env.VITE_APP_BASE_API + '/xljk/evaluation/detail/export', true);
xhr.responseType = 'blob';
// 添加请求头
xhr.setRequestHeader('Authorization', 'Bearer ' + localStorage.getItem('token'));
xhr.setRequestHeader('clientid', 'web');
xhr.setRequestHeader('referer', window.location.href);
// ... 其他代码
};
修改后:
/** 导出结果 */
const handleExport = () => {
console.log('导出测评明细,测评ID:', evaluationId.value);
proxy?.download(
'xljk/evaluation/detail/export',
{
evaluationId: evaluationId.value
},
`心理健康测评明细_${evaluationId.value}_${new Date().getTime()}.xlsx`
);
};
测试结果
修复后,导出功能可以正常工作,成功导出Excel文件,包含完整的心理健康测评明细数据。
相关文件
web/src/views/xljk/evaluation/detail.vueweb/src/utils/request.ts(提供了download函数)
注意事项
- 项目中有统一的下载工具函数,应该使用项目提供的统一下载方法
- 查看其他模块的类似功能实现,可以找到正确的使用方式
- 保持代码风格的一致性,有助于项目的维护
修复人员:李旭明
修复时间:2025-07-24 17:00