import type { ActionType, ProColumns } from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table'; import { message, Button, Space, Popconfirm, Input, Tag } from 'antd'; import React, { useRef, useState, useEffect } from 'react'; import { StatusEnum } from '../enum'; import type { Dispatch } from 'umi'; import { connect } from 'umi'; import type { StateType } from '../model'; import { deleteModel, updateModel } from '../service'; import ClassDataSourceTypeModal from './ClassDataSourceTypeModal'; import { ColumnsConfig } from './TableColumnRender'; import moment from 'moment'; import styles from './style.less'; import { ISemantic } from '../data'; type Props = { disabledEdit?: boolean; modelList: ISemantic.IModelItem[]; onModelChange?: (model?: ISemantic.IModelItem) => void; dispatch: Dispatch; domainManger: StateType; }; const ModelTable: React.FC = ({ modelList, disabledEdit = false, onModelChange }) => { const [modelItem, setModelItem] = useState(); const [saveLoading, setSaveLoading] = useState(false); const [createDataSourceModalOpen, setCreateDataSourceModalOpen] = useState(false); const actionRef = useRef(); const updateModelStatus = async (modelData: ISemantic.IModelItem) => { setSaveLoading(true); const { code, msg } = await updateModel({ ...modelData, }); setSaveLoading(false); if (code === 200) { onModelChange?.(); } else { message.error(msg); } }; const columnsConfig = ColumnsConfig(); const columns: ProColumns[] = [ { dataIndex: 'id', title: 'ID', width: 80, search: false, }, { dataIndex: 'name', title: '模型名称', search: false, render: (_, record) => { return ( { onModelChange?.(record); }} > {_} ); }, }, { dataIndex: 'key', title: '模型搜索', hideInTable: true, renderFormItem: () => , }, { dataIndex: 'alias', title: '别名', width: 150, ellipsis: true, search: false, }, { dataIndex: 'bizName', title: '英文名称', search: false, }, { dataIndex: 'status', title: '状态', search: false, render: columnsConfig.state.render, }, { dataIndex: 'createdBy', title: '创建人', search: false, }, { dataIndex: 'description', title: '描述', search: false, }, { dataIndex: 'updatedAt', title: '更新时间', search: false, render: (value: any) => { return value && value !== '-' ? moment(value).format('YYYY-MM-DD HH:mm:ss') : '-'; }, }, ]; if (!disabledEdit) { columns.push({ title: '操作', dataIndex: 'x', valueType: 'option', width: 150, render: (_, record) => { return ( { setModelItem(record); setCreateDataSourceModalOpen(true); }} > 编辑 {record.status === StatusEnum.ONLINE ? ( ) : ( )} { const { code, msg } = await deleteModel(record.id); if (code === 200) { onModelChange?.(); } else { message.error(msg); } }} > 删除 ); }, }); } return ( <> { return false; }} size="small" options={{ reload: false, density: false, fullScreen: false }} toolBarRender={() => disabledEdit ? [<>] : [ , ] } /> {createDataSourceModalOpen && ( { onModelChange?.(); setCreateDataSourceModalOpen(false); }} onCancel={() => { setCreateDataSourceModalOpen(false); }} /> )} ); }; export default connect(({ domainManger }: { domainManger: StateType }) => ({ domainManger, }))(ModelTable);