import { Button, Table, Tag, Popconfirm, Space, Card, Typography, MessagePlugin } from 'tdesign-react' import type { Provider, Model } from '@/types' import { ModelTable } from './ModelTable' import type { PrimaryTableCol } from 'tdesign-react/es/table/type' interface ProviderTableProps { providers: Provider[] loading: boolean onAdd: () => void onEdit: (provider: Provider) => void onDelete: (id: string) => void onAddModel: (providerId: string) => void onEditModel: (model: Model) => void } export function ProviderTable({ providers, loading, onAdd, onEdit, onDelete, onAddModel, onEditModel, }: ProviderTableProps) { const columns: PrimaryTableCol[] = [ { title: '名称', colKey: 'name', width: 180, ellipsis: true, }, { title: 'Base URL', colKey: 'baseUrl', cell: ({ row }) => row.baseUrl ? ( {row.baseUrl} MessagePlugin.success('已复制 Base URL'), }} > {''} ) : null, }, { title: '协议', colKey: 'protocol', width: 100, cell: ({ row }) => ( {row.protocol === 'openai' ? 'OpenAI' : 'Anthropic'} ), }, { title: 'API Key', colKey: 'apiKey', cell: ({ row }) => row.apiKey ? ( {row.apiKey} MessagePlugin.success('已复制 API Key'), }} > {''} ) : null, }, { title: '状态', colKey: 'enabled', width: 80, cell: ({ row }) => row.enabled ? ( 启用 ) : ( 禁用 ), }, { title: '操作', colKey: 'action', width: 160, cell: ({ row }) => ( onDelete(row.id)}> ), }, ] return ( 添加供应商 } > columns={columns} data={providers} rowKey='id' loading={loading} stripe expandedRow={({ row }) => ( onAddModel(row.id)} onEdit={onEditModel} /> )} pagination={undefined} empty='暂无供应商,点击上方按钮添加' /> ) }