/* eslint-disable @typescript-eslint/no-use-before-define */ import CustomTree from '@/pages/components/customTree'; import { deleteUser } from '@/services/userList'; import { DeleteOutlined, PlusOutlined, TeamOutlined } from '@ant-design/icons'; import { Button, Input, Popconfirm, Table, message } from 'antd'; import type { ColumnsType } from 'antd/es/table'; import React, { useEffect, useState } from 'react'; import styles from './index.less'; import UserEditModal from './mod/eidtUser'; import CreatGroup from './mod/group'; import PasswordResetModal from './mod/passwordEdit'; const UserListPage: React.FC = () => { const [orgTreeData, setOrgTreeData] = useState([]); const [selectedOrg, setSelectedOrg] = useState(); // 用户列表 const [users, setUsers] = useState([]); const [loading, setLoading] = useState(false); const [searchText, setSearchText] = useState(''); const [selectedRowKeys, setSelectedRowKeys] = useState<[]>([]); // 分页参数 const [currentPage, setCurrentPage] = useState(1); const [pageSize, setPageSize] = useState(10); const [totalUsers, setTotalUsers] = useState(0); // 编辑用户 const [currentUserInfo, setCurrentUserInfo] = useState({ visible: false, }); // 重置密码 const [eidtPassword, setEidtPassword] = useState({ visible: false, }); // 添加分组 const [visible, setVisible] = useState(false); // 获取用户分组组织树 useEffect(() => { getUserGroupList(); }, []); // 获取用户列表数据 useEffect(() => { getUserListInit(); }, [selectedOrg, currentPage, pageSize]); const getUserGroupList = () => { const mockOrgData: User.OrganizationNode[] = [ { name: 'Headquarters', id: 1, children: [ { name: 'HR Department', id: 2, }, { name: 'IT Department', id: 3, children: [ { name: 'Frontend Team', id: 4, }, { name: 'Backend Team', id: 5, }, ], }, { name: 'Finance Department', id: 6, }, ], }, ]; setSelectedOrg(mockOrgData[0].id as number); setOrgTreeData(mockOrgData); }; const getUserListInit = () => { setLoading(true); setTimeout(() => { const startIndex = (currentPage - 1) * pageSize; const mockUsers: User.UserItem[] = Array.from( { length: pageSize }, (_, index) => ({ user_id: startIndex + index + 1, user_name: 'string', }), ); setUsers(mockUsers); setTotalUsers(100); setLoading(false); }, 300); }; const onDelete = (user?: User.UserItem) => { const { user_id } = user || {}; const payload = { ids: user_id ? [user_id] : selectedRowKeys, }; deleteUser(payload as any).then((res) => { console.log('res=====', res); const { success } = res || {}; if (success) { message.success('删除成功'); setSelectedRowKeys([]); getUserListInit(); } }); }; const handlePassword = (user: User.UserItem) => { setEidtPassword({ recordData: { ...user }, visible: true, }); }; const handleCreatUserInfo = () => { setCurrentUserInfo({ visible: true, }); }; const handleEditUserInfo = (user: User.UserItem) => { setCurrentUserInfo({ recordData: { ...user }, visible: true, }); }; const columns: ColumnsType = [ { title: '登录名', dataIndex: 'user_id', key: 'user_id', }, { title: '用户姓名', dataIndex: 'user_name', key: 'user_name', }, { title: '用户分组', dataIndex: 'userGroup', key: 'userGroup', }, { title: '性别', dataIndex: 'sex', key: 'sex', }, { title: '状态', dataIndex: 'status', key: 'status', }, { title: '用户类别', dataIndex: 'userType', key: 'userType', }, { title: '操作', key: 'actions', align: 'center', width: 150, fixed: 'right', render: (_, record) => (
onDelete(record)} // onCancel={cancel} okText="删除" cancelText="取消" >
), }, ]; const onOrgSelect = (selectedKeys: React.Key[]) => { if (selectedKeys.length > 0) { setSelectedOrg(selectedKeys[0] as number); setCurrentPage(1); } }; const handlePageChange = (page: number, size: number) => { setCurrentPage(page); setPageSize(size); }; const handlePageSizeChange = (current: number, size: number) => { setCurrentPage(1); setPageSize(size); }; const onSelectChange = (newSelectedRowKeys: React.Key[]) => { console.log('selectedRowKeys changed: ', newSelectedRowKeys); setSelectedRowKeys(newSelectedRowKeys as any); }; const onDeleteGroup = () => {}; return (
console.log('Search org:', value)} />
} />
onDelete()} // onCancel={cancel} okText="删除" cancelText="取消" disabled={selectedRowKeys.length === 0} >
setSearchText(e.target.value)} style={{ width: 300 }} onSearch={(value) => { console.log('Search user:', value); setCurrentPage(1); // Reset to first page when searching }} />
{ return `共${total}条数据`; }, }} rowSelection={{ selectedRowKeys, onChange: onSelectChange, }} scroll={{ x: 'max-content', y: 55 * 12 }} /> { setVisible(false); }} onOk={() => {}} orgTreeData={orgTreeData} /> { setCurrentUserInfo({ recordData: {}, visible: false, }); }} onOk={() => {}} /> { setEidtPassword({ recordData: {}, visible: false, }); }} onOk={() => {}} /> ); }; export default UserListPage;