import { RESPONSE_CODE } from '@/constants/enum'; import { downloadFile } from '@/services/order'; import { blobToJson } from '@/utils'; import { ModalForm, ProFormUploadDragger } from '@ant-design/pro-components'; import { Button, Form, message } from 'antd'; import { RcFile } from 'antd/es/upload'; import axios from 'axios'; export default () => { const [form] = Form.useForm(); const [messageApi, contextHolder] = message.useMessage(); const downloadImportTemplate = () => { messageApi.open({ type: 'loading', content: '正在导入...', duration: 0, }); downloadFile( '/api/admin/client/downloadImportTemplate', '客户导入模板.xlsx', 'post', {}, () => { messageApi.destroy(); }, ); }; return ( <ModalForm title="导入客户信息" trigger={<Button type="primary">导入客户信息</Button>} form={form} autoFocusFirstInput modalProps={{ destroyOnClose: true, onCancel: () => console.log('run'), }} submitTimeout={2000} onFinish={async (values) => { const formData = new FormData(); values.file.forEach((file) => { formData.append('file', file.originFileObj as RcFile); }); axios({ url: '/api/admin/client/importClient', method: 'post', responseType: 'blob', headers: { Authorization: localStorage.getItem('token'), 'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', }, data: formData, }) .then((response) => { let data = response.data; if (data.type === 'application/json') { blobToJson(data).then((dataJson) => { if (dataJson?.result === RESPONSE_CODE.SUCCESS) { message.success(dataJson?.message); } else { message.error(dataJson?.message); } }); } else { message.error('上传失败,已下载错误信息表格'); // 创建一个新的 Blob 对象,它包含了服务器响应的数据(即你的 Excel 文件) const blob = new Blob([response.data]); // Excel 的 MIME 类型 const downloadUrl = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = downloadUrl; a.download = '银行流水导入模板.xlsx'; // 你可以为文件命名 document.body.appendChild(a); a.click(); // 模拟点击操作来下载文件 URL.revokeObjectURL(downloadUrl); // 释放掉 blob 对象所占用的内存 document.body.removeChild(a); } }) .catch((error) => { // 处理错误 message.error('系统出现异常了,请联系管理员', error); }) .finally(() => {}); return true; }} > <ProFormUploadDragger max={1} label="上传" name="file" /> <Button type="link" onClick={downloadImportTemplate}> 下载导入模板 </Button> {contextHolder} </ModalForm> ); };