添加下载全部文件功能
This commit is contained in:
parent
9e7f0a2b7e
commit
606c710b73
@ -69,63 +69,42 @@ export default function CardProj(props: any) {
|
||||
const [tagIdArray, setTagIdArray] = useState(data.tagDataIds)
|
||||
// 动态显示标签状态
|
||||
// const [tagStatus, setTagStatus] = useState('')
|
||||
// const downAll = (projId: string) => {
|
||||
// get({
|
||||
// messageApi,
|
||||
// url: `${Axios.defaults?.baseURL}/route/proj/download/all/${projId}`,
|
||||
// onBefore() {
|
||||
// console.log('正在打包')
|
||||
// },
|
||||
// onSuccess(data: any) {
|
||||
// console.log(data)
|
||||
|
||||
// },
|
||||
// onFinally() {
|
||||
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
const downAll = async (projId: string, name: string) => {
|
||||
const downAll = (projId: string, name: string) => {
|
||||
setHasDown(true)
|
||||
if (!hasDown) {
|
||||
|
||||
try {
|
||||
setDownModal(true)
|
||||
setHasDown(true)
|
||||
// 发送请求
|
||||
const response = await Axios.get(
|
||||
`${Axios.defaults?.baseURL}/route/proj/download/all/${projId}`,
|
||||
{ responseType: 'blob' } // 指定响应类型为 blob
|
||||
);
|
||||
|
||||
// 检查状态码
|
||||
if (response.status === 200) {
|
||||
setDownModal(false)
|
||||
// 创建 Blob 对象
|
||||
const blob = new Blob([response.data], { type: response.headers['content-type'] });
|
||||
// 创建下载链接
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
// 创建一个临时的 <a> 元素
|
||||
const link = document.createElement('a');
|
||||
get({
|
||||
messageApi,
|
||||
url: `/route/proj/download/all/${projId}`,
|
||||
config: {
|
||||
responseType: 'blob' // 指定响应类型为 blob
|
||||
},
|
||||
onBefore() {
|
||||
setDownModal(true); // 打开下载模态框
|
||||
setHasDown(true); // 设置正在下载状态
|
||||
},
|
||||
onSuccess(data:any) {
|
||||
// 处理下载成功的逻辑
|
||||
const blob = new Blob([data.data]); // 创建 Blob 对象
|
||||
const url = window.URL.createObjectURL(blob); // 创建下载链接
|
||||
const link = document.createElement('a'); // 创建临时的 <a> 元素
|
||||
link.href = url;
|
||||
link.setAttribute('download', `${name}全部资料.zip`); // 设置下载文件的名称
|
||||
document.body.appendChild(link);
|
||||
link.click(); // 触发下载
|
||||
document.body.removeChild(link); // 下载完成后移除 <a> 元素
|
||||
// 释放 URL 对象
|
||||
|
||||
// 释放 URL 对象,建议在用户确认下载完成后解除
|
||||
// window.URL.revokeObjectURL(url);
|
||||
} else {
|
||||
console.error('下载失败');
|
||||
|
||||
},
|
||||
onFinally() {
|
||||
// 在请求完成后(成功或失败)都会执行
|
||||
setHasDown(false); // 重置 hasDown 状态
|
||||
setDownModal(false); // 关闭模态框
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('请求失败', error);
|
||||
})
|
||||
|
||||
|
||||
} finally {
|
||||
// 无论请求成功与否,下载完成后都重置 hasDown 状态
|
||||
setHasDown(false);
|
||||
setDownModal(false); // 关闭模态框
|
||||
}
|
||||
} else {
|
||||
setDownModal(true);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user