import AutoTooltip from '@/components/auto-tooltip'; import DropdownButtons from '@/components/drop-down-buttons'; import PageTools from '@/components/page-tools'; import { PageAction } from '@/config'; import HotKeys from '@/config/hotkeys'; import type { PageActionType } from '@/config/types'; import useTableFetch from '@/hooks/use-table-fetch'; import { DeleteOutlined, EditOutlined, PlusOutlined, SyncOutlined, UserOutlined, UserSwitchOutlined } from '@ant-design/icons'; import { PageContainer } from '@ant-design/pro-components'; import { useIntl } from '@umijs/max'; import { Button, ConfigProvider, Empty, Input, Space, Table, message } from 'antd'; import dayjs from 'dayjs'; import { useState } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { createUser, deleteUser, queryUsersList, updateUser } from './apis'; import AddModal from './components/add-modal'; import { FormData, ListItem } from './config/types'; const { Column } = Table; const ActionList = [ { key: 'edit', label: 'common.button.edit', icon: }, { key: 'delete', props: { danger: true }, label: 'common.button.delete', icon: } ]; const Users: React.FC = () => { const { dataSource, rowSelection, queryParams, sortOrder, DeleteModal, handleDelete, handleDeleteBatch, fetchData, handlePageChange, handleTableChange, handleSearch, handleNameChange } = useTableFetch({ fetchAPI: queryUsersList, deleteAPI: deleteUser, contentForDelete: 'users.table.user' }); const intl = useIntl(); const [openAddModal, setOpenAddModal] = useState(false); const [action, setAction] = useState(PageAction.CREATE); const [title, setTitle] = useState(''); const [currentData, setCurrentData] = useState( undefined ); const handleAddUser = () => { setOpenAddModal(true); setAction(PageAction.CREATE); setTitle(intl.formatMessage({ id: 'users.form.create' })); }; const handleModalOk = async (data: FormData) => { const params = { ...data, is_admin: data.is_admin === 'admin' }; try { if (action === PageAction.EDIT) { await updateUser({ data: { ...params, id: currentData?.id } }); } else { await createUser({ data: params }); } fetchData(); setOpenAddModal(false); message.success(intl.formatMessage({ id: 'common.message.success' })); } catch (error) { setOpenAddModal(false); } }; const handleModalCancel = () => { console.log('handleModalCancel'); setOpenAddModal(false); }; const handleEditUser = (row: ListItem) => { setCurrentData(row); setOpenAddModal(true); setAction(PageAction.EDIT); setTitle(intl.formatMessage({ id: 'users.form.edit' })); }; const handleSelect = (val: any, row: ListItem) => { if (val === 'edit') { handleEditUser(row); } else if (val === 'delete') { handleDelete({ ...row, name: row.username }); } }; const renderEmpty = (type?: string) => { if (type !== 'Table') return; if ( !dataSource.loading && dataSource.loadend && !dataSource.dataList.length ) { return ; } return
; }; useHotkeys( HotKeys.CREATE, () => { handleAddUser(); }, { enabled: !openAddModal } ); return ( <> } right={ } > { return ( {text} ); }} /> { return record.is_admin ? ( {intl.formatMessage({ id: 'users.form.admin' })} ) : ( {intl.formatMessage({ id: 'users.form.user' })} ); }} /> { return ( {text} ); }} /> { return ( {dayjs(text).format('YYYY-MM-DD HH:mm:ss')} ); }} /> { return ( handleSelect(val, record)} > ); }} />
); }; export default Users;