import { deleteProjectDeleteProject, deleteProjectDeleteProjectByIds, postProjectGetProjectList, } from '@/services/project/Project'; import { PlusOutlined } from '@ant-design/icons'; import type { ActionType, ProColumns } from '@ant-design/pro-components'; import { FooterToolbar, PageContainer, ProTable } from '@ant-design/pro-components'; import { Access, FormattedMessage, history, useAccess, useIntl } from '@umijs/max'; import { Badge, Button, message } from 'antd'; import React, { useRef, useState } from 'react'; import { ColumnDrawer } from './components/ColumnDrawer'; import MyCreateForm from './components/MyCreateForm'; import UpdateForm from './components/UpdateForm'; const ProjectList: React.FC = () => { /** * @en-US Pop-up window of new window * @zh-CN 新建窗口的弹窗 * */ const [createModalOpen, setCreateModalOpen] = useState(false); /** * @en-US The pop-up window of the distribution update window * @zh-CN 分布更新窗口的弹窗 * */ const [updateModalOpen, setUpdateModalOpen] = useState(false); const [showDetail, setShowDetail] = useState(false); /** * @en-US International configuration * @zh-CN 国际化配置 * */ const access = useAccess(); const intl = useIntl(); const actionRef = useRef(); const [currentRow, setCurrentRow] = useState(); const [selectedRowsState, setSelectedRows] = useState([]); const handleUpdateModal = () => { if (updateModalOpen) { setUpdateModalOpen(false); setCurrentRow(undefined); } else { setUpdateModalOpen(true); } }; const handleCreateModal = () => { if (createModalOpen) { setCreateModalOpen(false); setCurrentRow(undefined); } else { setCreateModalOpen(true); } }; const handleColumnDrawer = () => { if (showDetail) { setShowDetail(false); setCurrentRow(undefined); } else { setShowDetail(true); } }; const handleDestroy = async (selectedRow: API.Project) => { deleteProjectDeleteProject({ id: selectedRow.id }) .then(() => { message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' })); actionRef.current?.reload(); }) .catch(() => { message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' })); }); }; const columns: ProColumns[] = [ { title: , dataIndex: 'id', sorter: true, render: (dom, entity) => { return ( { setCurrentRow(entity); setShowDetail(true); }} > {dom} ); }, }, { title: , dataIndex: 'name', hideInSearch: true, }, { title: , dataIndex: 'code', hideInSearch: true, }, { title: , dataIndex: 'info', hideInSearch: true, }, { title: , dataIndex: 'inferConfig', hideInSearch: true, hideInTable: true, hideInDescriptions: true, }, { title: , dataIndex: 'isEnable', filters: true, onFilter: true, hideInSearch: true, valueType: 'switch', render: (_, item) => { return ( <> } > ); }, }, { title: , dataIndex: 'remark', hideInSearch: true, }, { title: , dataIndex: 'createTime', sorter: true, hideInSearch: true, valueType: 'dateTime', }, { title: , dataIndex: 'updateTime', sorter: true, hideInSearch: true, valueType: 'dateTime', }, { title: , dataIndex: 'option', valueType: 'option', fixed: 'right', render: (_, record) => [ { setUpdateModalOpen(true); setCurrentRow(record); }} > { handleDestroy(record).then(() => {}); }} > , ], }, ]; return ( headerTitle={intl.formatMessage({ id: 'pages.searchTable.title', defaultMessage: '$$$', })} options={{ fullScreen: true, setting: true, density: true, reload: true }} actionRef={actionRef} rowKey="key" search={{ labelWidth: 120, }} onDataSourceChange={() => {}} pagination={{ showSizeChanger: true, pageSize: 10, }} columnsState={{ persistenceKey: 'project_list', persistenceType: 'localStorage', }} toolBarRender={() => [ , ]} request={async (params = {}, sort) => { const { current, ...rest } = params; const reqParams = { page: current, desc: false, orderKey: '', ...rest, }; if (sort && Object.keys(sort).length) { reqParams.orderKey = Object.keys(sort)[0]; let sort_select = sort[reqParams.orderKey]; reqParams.desc = sort_select === 'descend'; } let resp = await postProjectGetProjectList({ ...reqParams }); return { data: resp.data.list.map((v: API.Project) => { return { ...v, key: v.id }; }), success: resp.success, total: resp.data.total, current: resp.data.page, pageSize: resp.data.pageSize, }; }} columns={columns} rowSelection={{ onChange: (_, selectedRows) => { setSelectedRows(selectedRows); }, }} /> {selectedRowsState?.length > 0 && ( {' '} {selectedRowsState.length}{' '} } > )} ); }; export default ProjectList;