import React, { useState } from 'react'; import { Space, Button, Segmented, Badge, message } from 'antd'; import { apiPost, getExportUrl } from '../api/client'; import type { SaveChangeDto } from '../api/types'; interface ToolBarProps { dirtyCount: number; viewMode: 'hierarchical' | 'flat'; onViewModeChange: (mode: 'hierarchical' | 'flat') => void; onRefresh: () => void; onOpenConfig: () => void; getDirtyChanges: () => SaveChangeDto[]; onSaveSuccess: (changes: SaveChangeDto[]) => void; } export const ToolBar: React.FC = ({ dirtyCount, viewMode, onViewModeChange, onRefresh, onOpenConfig, getDirtyChanges, onSaveSuccess, }) => { const [saving, setSaving] = useState(false); const handleSave = async () => { if (dirtyCount === 0) return; setSaving(true); try { const changes = getDirtyChanges(); const res = await apiPost('/api/bom/save', { Changes: changes }); if (res.Success) { message.success(`保存成功,共更新 ${res.SavedCount} 项`); onSaveSuccess(changes); } else { message.error(`保存失败: ${res.Error}`); } } catch (e: any) { message.error(`保存失败: ${e.message}`); } finally { setSaving(false); } }; const handleExport = () => { window.open(getExportUrl(viewMode === 'flat'), '_blank'); }; return ( onViewModeChange(val as 'hierarchical' | 'flat')} />
● 已连接
); };