import React, { useState } from 'react'; import { Modal, Form, Select, Button } from 'antd'; import { ExportOutlined } from '@ant-design/icons'; import { designTokens } from '../../config/theme'; const { Option } = Select; const modalHeaderStyle = { display: 'flex', alignItems: 'center', gap: '8px', fontSize: '18px', fontWeight: 600, }; const ExportModal = ({ visible, selectedDevices, currentPageDevices, allDevices, onExport, onCancel, }) => { const [exportFormat, setExportFormat] = useState('csv'); const [exportScope, setExportScope] = useState('selected'); const [exportLoading, setExportLoading] = useState(false); const handleExport = async () => { setExportLoading(true); try { await onExport({ format: exportFormat, scope: exportScope, }); onCancel(); } finally { setExportLoading(false); } }; const getScopeLabel = () => { switch (exportScope) { case 'selected': return `选择的行 (${selectedDevices.length} 个)`; case 'currentPage': return `当前页 (${currentPageDevices.length} 个)`; case 'all': return `全部设备 (${allDevices.length} 个)`; default: return ''; } }; return ( 导出设备数据 } open={visible} onCancel={onCancel} footer={[ , , ]} destroyOnHidden styles={{ header: { borderBottom: '1px solid #f0f0f0', padding: '16px 24px', position: 'relative', }, body: { padding: '24px' }, }} width={500} >
将导出设备的所有字段(包括自定义字段)
); }; export default React.memo(ExportModal);