可用版本

This commit is contained in:
戚辰先生 2024-11-30 22:09:56 +08:00
parent c6a5e00788
commit af6cf056de
3 changed files with 25 additions and 25 deletions

View File

@ -32,9 +32,10 @@ export function useTableData<T extends { id: number }, P = any>({
...defaultParams, ...defaultParams,
...params, ...params,
pageNum: state.pagination.current, pageNum: state.pagination.current,
pageSize: state.pagination.pageSize pageSize: state.pagination.pageSize,
}, sortOrder: params?.sortOrder === 'ascend' ? 'asc' :
transform: true params?.sortOrder === 'descend' ? 'desc' : undefined
}
}); });
setState(prev => ({ setState(prev => ({

View File

@ -5,7 +5,7 @@ import type {UserResponse, Role} from './types';
import type {DepartmentDTO} from '../Department/types'; import type {DepartmentDTO} from '../Department/types';
import {getUsers, createUser, updateUser, deleteUser, resetPassword} from './service'; import {getUsers, createUser, updateUser, deleteUser, resetPassword} from './service';
import {useTableData} from '@/hooks/useTableData'; import {useTableData} from '@/hooks/useTableData';
import type {FixedType, AlignType} from 'rc-table/lib/interface'; import type {FixedType, AlignType, SortOrder} from 'rc-table/lib/interface';
import {Response} from "@/utils/request.ts"; import {Response} from "@/utils/request.ts";
const UserPage: React.FC = () => { const UserPage: React.FC = () => {
@ -120,6 +120,7 @@ const UserPage: React.FC = () => {
dataIndex: 'username', dataIndex: 'username',
key: 'username', key: 'username',
width: 100, width: 100,
sorter: true
}, },
{ {
title: '昵称', title: '昵称',
@ -153,6 +154,8 @@ const UserPage: React.FC = () => {
dataIndex: 'createTime', dataIndex: 'createTime',
key: 'createTime', key: 'createTime',
width: 150, width: 150,
sorter: true,
defaultSortOrder: 'descend' as SortOrder
}, },
{ {
title: '更新时间', title: '更新时间',
@ -208,6 +211,19 @@ const UserPage: React.FC = () => {
}, },
]; ];
const handleTableChange = (
pagination: TablePaginationConfig,
filters: Record<string, FilterValue | null>,
sorter: SorterResult<UserResponse> | SorterResult<UserResponse>[]
) => {
const { field, order } = Array.isArray(sorter) ? sorter[0] : sorter;
fetchUsers({
sortField: field as string,
sortOrder: order
});
};
return ( return (
<div style={{padding: '24px'}}> <div style={{padding: '24px'}}>
<div style={{marginBottom: 16}}> <div style={{marginBottom: 16}}>
@ -222,25 +238,8 @@ const UserPage: React.FC = () => {
dataSource={users} dataSource={users}
rowKey="id" rowKey="id"
scroll={{x: 1500}} scroll={{x: 1500}}
pagination={{ pagination={pagination}
...pagination, onChange={handleTableChange}
showSizeChanger: true,
showQuickJumper: true,
showTotal: (total) => `${total} 条记录`,
onChange: onPageChange,
size: 'small'
}}
rowSelection={{
type: 'checkbox',
onChange: (selectedRowKeys, selectedRows) => {
console.log('selectedRowKeys:', selectedRowKeys);
console.log('selectedRows:', selectedRows);
},
getCheckboxProps: (record) => ({
disabled: record.username === 'admin',
}),
fixed: true,
}}
size="middle" size="middle"
bordered bordered
/> />

View File

@ -2,10 +2,10 @@ import type { BaseResponse } from '@/types/base/response';
import type { Page } from '@/types/base/page'; import type { Page } from '@/types/base/page';
export interface UserQuery { export interface UserQuery {
current?: number; pageNum?: number;
pageSize?: number; pageSize?: number;
sortField?: string; sortField?: string;
sortOrder?: string; sortOrder?: 'ascend' | 'descend';
username?: string; username?: string;
nickname?: string; nickname?: string;
email?: string; email?: string;