import IsBatchDelete from '@/components/BatchOperation/isBatchDelete'; import TableActionCard from '@/components/TableActionCard'; import IsDelete from '@/components/TableActionCard/isDelete'; import { ColumnDrawer as ModelCategoryColumnDrawer } from '@/pages/Resource/ModelCategoryList/components/ColumnDrawer'; import { ModelCategoryColumns } from '@/pages/Resource/ModelCategoryList/components/Columns'; import { deleteAlgorithmModelDeleteAlgorithmModel, deleteAlgorithmModelDeleteAlgorithmModelByIds, postAlgorithmModelGetAlgorithmModelList, } from '@/services/resource/AlgorithmModel'; import { postModelCategoryGetModelCategoryById, postModelCategoryGetModelCategoryFkSelect, postModelCategoryGetModelCategoryNames, } from '@/services/resource/ModelCategory'; import { PlusOutlined } from '@ant-design/icons'; import type { ActionType, ProColumns } from '@ant-design/pro-components'; import { PageContainer, ProFormSelect, ProTable } from '@ant-design/pro-components'; import { Access, FormattedMessage, history, useAccess, useIntl } from '@umijs/max'; import { Button, message } from 'antd'; import React, { useRef, useState } from 'react'; import { proTableCommonOptions, proTablePaginationOptions } from '../../../../config/defaultTable'; import CreateForm from './components/CreateForm'; import UpdateForm from './components/UpdateForm'; // import TablePaginationCard, { TablePaginationCardProps } from '@/components/TablePaginationCard'; const AlgorithmModelList: 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(); // TODO 动态设置每页数量 const [currentPageSize, setCurrentPageSize] = useState(10); const [currentRow, setCurrentRow] = useState(); const [selectedRowsState, setSelectedRows] = useState([]); const [category_fk_id_open, set_category_fk_id_open] = useState(false); const [category_fk_id, set_category_fk_id] = useState(); const [category_fk_id_column_open, set_category_fk_id_column_open] = useState(false); const [categoryFkIdIds, setCategoryFkIdIds] = useState([]); const [categoryFkIdMap, setCategoryFkIdMap] = useState<{ [key: number]: string }>({}); const handle_category_fk_id = (id: any) => { if (category_fk_id_open) { set_category_fk_id(undefined); set_category_fk_id_open(false); } else { postModelCategoryGetModelCategoryById({ id: id }).then((resp) => { set_category_fk_id(resp.data.modelCategory); set_category_fk_id_open(true); }); } }; const handle_category_fk_id_column_open = () => { if (category_fk_id_column_open) { set_category_fk_id_column_open(false); } else { postModelCategoryGetModelCategoryNames({ ids: categoryFkIdIds }).then((resp) => { let a: any = {}; resp.data.list.forEach((v: any) => { if (v.id) { a[v.id] = v.name; } }); setCategoryFkIdMap(a); }); set_category_fk_id_column_open(true); } }; 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 doToDetail = (rowData: Record) => { // eslint-disable-next-line @typescript-eslint/no-unused-expressions history.push(`/resource/algorithm-model-detail/${rowData.id}`); }; const handleDestroy = async (selectedRow: API.AlgorithmModel) => { deleteAlgorithmModelDeleteAlgorithmModel({ 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: 'name', hideInSearch: true, key: 'fixedName', fixed: 'left', }, { title: , dataIndex: 'id', sorter: true, render: (dom, entity) => { return ( { setCurrentRow(entity); doToDetail(entity); // setShowDetail(true); }} > {dom} ); }, }, { title: ( ), dataIndex: 'categoryFkId', hideInSearch: false, render: (text, record) => { if (category_fk_id_column_open) { return ( { handle_category_fk_id(record.categoryFkId); }} > {record?.categoryFkId ? categoryFkIdMap[record.categoryFkId] : undefined} ); } else { return ( { handle_category_fk_id(record.categoryFkId); }} > {record.categoryFkId} ); } }, renderFormItem: () => { return ( // value 和 onchange 会通过 form 自动注入。 { const resp = await postModelCategoryGetModelCategoryFkSelect({ keyword: keyWord?.keyWords || '', }); return resp.data.list.map((v: any) => { return { label: v.name, value: v.id, }; }); }} /> ); }, }, { title: ( ), dataIndex: 'defaultVersionFkId', hideInSearch: true, }, { 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', key: 'option', render: (_, record) => [ { setCurrentRow(record); doToDetail(record); // setShowDetail(true); }} > ), }, { key: 'update', renderDom: ( ), }, { key: 'destroy', renderDom: ( { handleDestroy(record).then(() => {}); }} > ), }, ]} >, ], }, ]; return ( headerTitle={intl.formatMessage({ id: 'pages.searchTable.title', defaultMessage: '$$$', })} scroll={{ y: proTableCommonOptions.commscrollY, x: proTableCommonOptions.commscrollX }} options={{ fullScreen: true, setting: true, density: true, reload: true }} actionRef={actionRef} rowKey="key" search={{ labelWidth: proTableCommonOptions.searchLabelWidth, }} onDataSourceChange={(data) => { let CategoryFkIdIds: any = data.map((v) => { return v.categoryFkId; }); setCategoryFkIdIds(CategoryFkIdIds); }} pagination={{ ...proTablePaginationOptions, pageSize: currentPageSize, onChange: (page, pageSize) => setCurrentPageSize(pageSize), }} // components={{ // pagination: TablePaginationCard as React.FC, // }} columnsState={{ persistenceKey: 'algorithm_model_list', persistenceType: 'localStorage', }} tableAlertOptionRender={() => { return ( <> {selectedRowsState?.length > 0 && ( { deleteAlgorithmModelDeleteAlgorithmModelByIds({ ids: selectedRowsState.map((v: API.AlgorithmModel) => { return v.id as number; }), }).then(() => { actionRef.current?.reloadAndRest?.(); }); }} /> )} ); }} 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 postAlgorithmModelGetAlgorithmModelList({ ...reqParams }); return { data: resp.data.list.map((v: API.AlgorithmModel) => { 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); }, }} /> {/* 列表关联操作项组件 */} ); }; export default AlgorithmModelList;