import { Button, Table, Tag, Popconfirm, Space, Card } from 'antd'; import type { ColumnsType } from 'antd/es/table'; import type { Provider, Model } from '@/types'; import { ModelTable } from './ModelTable'; interface ProviderTableProps { providers: Provider[]; loading: boolean; onAdd: () => void; onEdit: (provider: Provider) => void; onDelete: (id: string) => void; onAddModel: (providerId: string) => void; onEditModel: (model: Model) => void; } function maskApiKey(key: string | null | undefined): string { if (!key) return '****'; if (key.length <= 4) return '****'; return `****${key.slice(-4)}`; } export function ProviderTable({ providers, loading, onAdd, onEdit, onDelete, onAddModel, onEditModel, }: ProviderTableProps) { const columns: ColumnsType = [ { title: '名称', dataIndex: 'name', key: 'name', }, { title: 'Base URL', dataIndex: 'baseUrl', key: 'baseUrl', }, { title: 'API Key', dataIndex: 'apiKey', key: 'apiKey', render: (key: string | null | undefined) => maskApiKey(key), }, { title: '状态', dataIndex: 'enabled', key: 'enabled', render: (enabled: boolean) => enabled ? 启用 : 禁用, width: 80, }, { title: '操作', key: 'action', width: 160, render: (_, record) => ( onDelete(record.id)} okText="确定" cancelText="取消" > ), }, ]; return ( 添加供应商 } > columns={columns} dataSource={providers} rowKey="id" loading={loading} expandable={{ expandedRowRender: (record) => ( onAddModel(record.id)} onEdit={onEditModel} /> ), }} pagination={false} /> ); }