import { EllipsisOutlined, PlusOutlined } from "@ant-design/icons"; import type { ActionType, ProColumns } from "@ant-design/pro-components"; import { ProTable, TableDropdown } from "@ant-design/pro-components"; import { Button, Dropdown, Space, Tag } from "antd"; import { useRef } from "react"; import request from "umi-request"; export const waitTimePromise = async (time: number = 100) => { return new Promise((resolve) => { setTimeout(() => { resolve(true); }, time); }); }; export const waitTime = async (time: number = 100) => { await waitTimePromise(time); }; 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, tooltip: "标题过长会自动收缩", formItemProps: { rules: [ { required: true, message: "此项为必填项", }, ], }, }, { disable: true, title: "状态", dataIndex: "state", filters: true, onFilter: true, ellipsis: true, valueType: "select", valueEnum: { all: { text: "超长".repeat(50) }, open: { text: "未解决", status: "Error", }, closed: { text: "已解决", status: "Success", disabled: true, }, processing: { text: "解决中", status: "Processing", }, }, }, { disable: true, 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", key: "option", render: (record: any, _, action: any) => [ { action?.startEditable?.(record.id); }} > 编辑 , 查看 , action?.reload()} menus={[ { key: "copy", name: "复制" }, { key: "delete", name: "删除" }, ]} />, ], }, ]; export default () => { const actionRef = useRef(); return ( style={ { //height: "300px", //overflow: "hidden", } } //scroll={{ x: 4000, y: 2000 }} columns={columns} actionRef={actionRef} cardBordered request={async (params, sort, filter) => { console.log(sort, filter); await waitTime(2000); return request<{ data: GithubIssueItem[]; }>("https://proapi.azurewebsites.net/github/issues", { params, }); }} editable={{ type: "multiple", }} columnsState={{ persistenceKey: "pro-table-singe-demos", persistenceType: "localStorage", defaultValue: { option: { fixed: "right", disable: true }, }, onChange(value) { console.log("value: ", value); }, }} rowKey="id" search={{ labelWidth: "auto", }} options={{ setting: { listsHeight: 400, }, }} form={{ // 由于配置了 transform,提交的参数与定义的不同这里需要转化一下 syncToUrl: (values, type) => { if (type === "get") { return { ...values, created_at: [values.startTime, values.endTime], }; } return values; }, }} pagination={{ pageSize: 20, onChange: (page) => console.log(page), }} scroll={{ y: "calc(100vh - 488px)" }} dateFormatter="string" headerTitle="高级表格" toolBarRender={() => [ , , ]} /> ); };