import { listUserByPageUsingPOST } from '@/services/answerbi/userController'; import type { ActionType, ProColumns } from '@ant-design/pro-components'; import { ProTable, TableDropdown } from '@ant-design/pro-components'; import { useRef } from 'react'; 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); }; const columns: ProColumns[] = [ { dataIndex: 'id', valueType: 'indexBorder', width: 48, }, { title: '昵称', dataIndex: 'userName', copyable: true, }, { title: '用户账号', dataIndex: 'userAccount', copyable: true, }, { title: '头像', dataIndex: 'userAvatar', search: false, render: (_, record) => (
) }, { title: '角色', dataIndex: 'userRole', valueType: 'select', valueEnum :{ 'user': {text : '普通用户',status : 'Default'}, 'admin': {text:'管理员', status : 'Success'}, 'ban': {text:'违规被封',status:'Error'}, } }, { title: '创建时间', key: 'createdTime', dataIndex: 'createdTime', valueType: 'dateTime', sorter : true, search : false, }, { title: '操作', valueType: 'option', key: 'option', render: (text, record, _, action) => [ { action?.startEditable?.(record.id); }} > 编辑 , action?.reload()} menus={[ { key: 'copy', name: '复制' }, { key: 'delete', name: '删除' }, ]} />, ], }, ]; export default () => { const actionRef = useRef(); return ( columns={columns} actionRef={actionRef} cardBordered request={async (params = {}, sort, filter) => { console.log(sort, filter); const userList = await listUserByPageUsingPOST(params); return { data: userList.data?.records }; }} editable={{ type: 'multiple', }} columnsState={{ persistenceKey: 'pro-table-singe-demos', persistenceType: 'localStorage', 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: 10, onChange: (page) => console.log(page), }} dateFormatter="string" headerTitle="用户列表" /> ); };