diff --git a/src/components/card/CardProj.tsx b/src/components/card/CardProj.tsx index d2376af..fbb1ad9 100644 --- a/src/components/card/CardProj.tsx +++ b/src/components/card/CardProj.tsx @@ -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); - // 创建一个临时的 元素 - 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'); // 创建临时的 元素 link.href = url; link.setAttribute('download', `${name}全部资料.zip`); // 设置下载文件的名称 document.body.appendChild(link); link.click(); // 触发下载 document.body.removeChild(link); // 下载完成后移除 元素 - // 释放 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); }