import CopyButton from '@/components/copy-button'; import PageTools from '@/components/page-tools'; import { PageAction } from '@/config'; import type { PageActionType } from '@/config/types'; import useTableRowSelection from '@/hooks/use-table-row-selection'; import useTableSort from '@/hooks/use-table-sort'; import { handleBatchRequest } from '@/utils'; import { DeleteOutlined, PlusOutlined, SyncOutlined } from '@ant-design/icons'; import { PageContainer } from '@ant-design/pro-components'; import { useIntl } from '@umijs/max'; import { Button, Input, Modal, Space, Table, Tag, Tooltip, message } from 'antd'; import dayjs from 'dayjs'; import _ from 'lodash'; import { useEffect, useState } from 'react'; import { deleteApisKey, queryApisKeysList } from './apis'; import AddAPIKeyModal from './components/add-apikey'; import { ListItem } from './config/types'; const { Column } = Table; const Models: React.FC = () => { const rowSelection = useTableRowSelection(); const { sortOrder, setSortOrder } = useTableSort({ defaultSortOrder: 'descend' }); const intl = useIntl(); const [dataSource, setDataSource] = useState([]); const [total, setTotal] = useState(0); const [openAddModal, setOpenAddModal] = useState(false); const [loading, setLoading] = useState(false); const [action, setAction] = useState(PageAction.CREATE); const [title, setTitle] = useState(''); const [queryParams, setQueryParams] = useState({ page: 1, perPage: 10, query: '' }); const handleShowSizeChange = (page: number, size: number) => { console.log(page, size); setQueryParams({ ...queryParams, perPage: size }); }; const handlePageChange = (page: number, pageSize: number | undefined) => { console.log(page, pageSize); setQueryParams({ ...queryParams, page: page }); }; const handleTableChange = (pagination: any, filters: any, sorter: any) => { console.log('handleTableChange=======', pagination, filters, sorter); setSortOrder(sorter.order); }; const fetchData = async () => { setLoading(true); try { const params = { ..._.pickBy(queryParams, (val: any) => !!val) }; const res = await queryApisKeysList(params); console.log('res=======', res); setDataSource(res.items || []); setTotal(res.pagination.total); } catch (error) { console.log('error', error); setDataSource([]); } finally { setLoading(false); } }; const handleSearch = (e: any) => { fetchData(); }; const handleNameChange = (e: any) => { setQueryParams({ ...queryParams, query: e.target.value }); }; const handleAddUser = () => { setOpenAddModal(true); setAction(PageAction.CREATE); }; const handleModalOk = async () => { try { setOpenAddModal(false); fetchData(); } catch (error) { setOpenAddModal(false); } }; const handleModalCancel = () => { console.log('handleModalCancel'); setOpenAddModal(false); }; const handleDelete = (row: ListItem) => { Modal.confirm({ title: '', content: intl.formatMessage( { id: 'common.delete.confirm' }, { type: intl.formatMessage({ id: 'apikeys.table.apikeys' }) } ), async onOk() { console.log('OK'); await deleteApisKey(row.id); message.success(intl.formatMessage({ id: 'common.message.success' })); fetchData(); }, onCancel() { console.log('Cancel'); } }); }; const handleDeleteBatch = () => { Modal.confirm({ title: '', content: intl.formatMessage( { id: 'common.delete.confirm' }, { type: intl.formatMessage({ id: 'apikeys.table.apikeys' }) } ), async onOk() { await handleBatchRequest(rowSelection.selectedRowKeys, deleteApisKey); message.success(intl.formatMessage({ id: 'common.message.success' })); fetchData(); }, onCancel() { console.log('Cancel'); } }); }; const renderSecrectKey = (text: string, record: ListItem) => { const { value } = record; return ( {text} {value && ( {intl.formatMessage({ id: 'apikeys.table.save.tips' })} {`${value?.slice(0, 8)}...${value?.slice(-8, -1)}`} )} ); }; useEffect(() => { fetchData(); }, [queryParams]); return ( <> } right={ } > { return dayjs(text).format('YYYY-MM-DD HH:mm:ss'); }} /> { return dayjs(text).format('YYYY-MM-DD HH:mm:ss'); }} /> { return ( ); }} />
); }; export default Models;