import React from 'react'; import { Button, Tooltip, Dropdown, Menu, Input } from 'antd'; import { EllipsisOutlined, QuestionCircleOutlined, SearchOutlined } from '@ant-design/icons'; import type { ProColumns } from '@ant-design/pro-table'; import ProTable, { TableDropdown } from '@ant-design/pro-table'; const valueEnum = { 0: 'close', 1: 'running', 2: 'online', 3: 'error', }; export type TableListItem = { key: number; name: string; containers: number; creator: string; status: string; createdAt: number; progress: number; money: number; memo: string; }; const tableListDataSource: TableListItem[] = []; const creators = ['付小小', '曲丽丽', '林东东', '陈帅帅', '兼某某']; for (let i = 0; i < 5; i += 1) { tableListDataSource.push({ key: i, name: 'AppName', containers: Math.floor(Math.random() * 20), creator: creators[Math.floor(Math.random() * creators.length)], status: valueEnum[Math.floor(Math.random() * 10) % 4], createdAt: Date.now() - Math.floor(Math.random() * 2000), money: Math.floor(Math.random() * 2000) * i, progress: Math.ceil(Math.random() * 100) + 1, memo: i % 2 === 1 ? '很长很长很长很长很长很长很长的文字要展示但是要留下尾巴' : '简短备注文案', }); } const columns: ProColumns[] = [ { title: '排序', dataIndex: 'index', valueType: 'indexBorder', width: 48, }, { title: '应用名称', dataIndex: 'name', render: (_) => {_}, // 自定义筛选项功能具体实现请参考 https://ant.design/components/table-cn/#components-table-demo-custom-filter-panel filterDropdown: () => (
), filterIcon: (filtered) => ( ), }, { title: '创建者', dataIndex: 'creator', valueEnum: { all: { text: '全部' }, 付小小: { text: '付小小' }, 曲丽丽: { text: '曲丽丽' }, 林东东: { text: '林东东' }, 陈帅帅: { text: '陈帅帅' }, 兼某某: { text: '兼某某' }, }, }, { title: '状态', dataIndex: 'status', initialValue: 'all', filters: true, onFilter: true, valueEnum: { all: { text: '全部', status: 'Default' }, close: { text: '关闭', status: 'Default' }, running: { text: '运行中', status: 'Processing' }, online: { text: '已上线', status: 'Success' }, error: { text: '异常', status: 'Error' }, }, }, { title: ( <> 创建时间 ), width: 140, key: 'since', dataIndex: 'createdAt', valueType: 'date', sorter: (a, b) => a.createdAt - b.createdAt, }, { title: '备注', dataIndex: 'memo', ellipsis: true, copyable: true, }, { title: '操作', width: 180, key: 'option', valueType: 'option', render: () => [ 链路, 报警, 监控, , ], }, ]; const menu = ( 1st item 2nd item 3rd item ); export default () => { return ( columns={columns} request={(params, sorter, filter) => { // 表单搜索项会从 params 传入,传递给后端接口。 console.log(params, sorter, filter); return Promise.resolve({ data: tableListDataSource, success: true, }); }} rowKey="key" pagination={{ showQuickJumper: true, }} search={{ layout: 'vertical', defaultCollapsed: false, }} dateFormatter="string" toolbar={{ title: '高级表格', tooltip: '这是一个标题提示', }} toolBarRender={() => [ , , , , ]} /> ); };