import { Button, message } from 'antd'; import { DownloadOutlined } from '@ant-design/icons'; import client from '../../../api/client'; interface Props { fetchUrl: string; params?: Record; filename?: string; label?: string; } export function ExportButton({ fetchUrl, params, filename, label = '导出', }: Props) { const handleExport = async () => { try { const query = params ? '?' + new URLSearchParams(params).toString() : ''; const resp = await client.get(fetchUrl + query, { responseType: 'blob', }); const blob = resp.data instanceof Blob ? resp.data : new Blob([resp.data]); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = filename ?? `export_${Date.now()}.csv`; a.click(); URL.revokeObjectURL(url); message.success('导出成功'); } catch { message.error('导出失败'); } }; return ( ); }