import React, { useRef } from 'react'; import { PlusOutlined, EllipsisOutlined } from '@ant-design/icons'; import { Button, Tag, Space, Menu, Dropdown } from 'antd'; import type { ProColumns, ActionType } from '@ant-design/pro-table'; import ProTable, { TableDropdown } from '@ant-design/pro-table'; import request from 'umi-request'; type GithubIssueItem = { url: string; id: number; number: number; title: string; labels: { name: string; color: string; }[]; state: string; comments: number; created_at: string; updated_at: string; closed_at?: string; }; const columns: ProColumns[] = [ { dataIndex: 'index', valueType: 'indexBorder', width: 48, }, { title: '标题', dataIndex: 'title', copyable: true, ellipsis: true, tip: '标题过长会自动收缩', formItemProps: { rules: [ { required: true, message: '此项为必填项', }, ], }, }, { title: '状态', dataIndex: 'state', filters: true, onFilter: true, valueType: 'select', valueEnum: { all: { text: '全部', status: 'Default' }, open: { text: '未解决', status: 'Error', }, closed: { text: '已解决', status: 'Success', disabled: true, }, processing: { text: '解决中', status: 'Processing', }, }, }, { title: '标签', dataIndex: 'labels', search: false, renderFormItem: (_, { defaultRender }) => { return defaultRender(_); }, render: (_, record) => ( {record.labels.map(({ name, color }) => ( {name} ))} ), }, { title: '创建时间', key: 'showTime', dataIndex: 'created_at', valueType: 'date', sorter: true, hideInSearch: true, }, { title: '创建时间', dataIndex: 'created_at', valueType: 'dateRange', hideInTable: true, search: { transform: (value) => { return { startTime: value[0], endTime: value[1], }; }, }, }, { title: '操作', valueType: 'option', render: (text, record, _, action) => [ { action?.startEditable?.(record.id); }} > 编辑 , 查看 , action?.reload()} menus={[ { key: 'copy', name: '复制' }, { key: 'delete', name: '删除' }, ]} />, ], }, ]; const menu = ( 1st item 2nd item 3rd item ); export default () => { const actionRef = useRef(); return ( columns={columns} actionRef={actionRef} request={async (params = {}, sort, filter) => { console.log(sort, filter); return request<{ data: GithubIssueItem[]; }>('https://proapi.azurewebsites.net/github/issues', { params, }); }} editable={{ type: 'multiple', }} rowKey="id" search={{ labelWidth: 'auto', }} form={{ // 由于配置了 transform,提交的参与与定义的不同这里需要转化一下 syncToUrl: (values, type) => { if (type === 'get') { return { ...values, created_at: [values.startTime, values.endTime], }; } return values; }, }} pagination={{ pageSize: 5, }} dateFormatter="string" headerTitle="高级表格" toolBarRender={() => [ , , ]} /> ); };