import { Button, Popconfirm, Space, Table, Typography } from 'antd'; import type { ColumnsType } from 'antd/lib/table'; import type { Dispatch, SetStateAction } from 'react'; import { useMemo } from 'react'; import { FormattedMessage, useIntl } from 'umi'; import AuditCountersign from '../AuditCountersign'; import AuditPassOn from '../AuditPassOn'; import AuditProgress from '../AuditProgress'; import ExpandIcon from '../ExpandIcon'; import { AduitStatus } from './const'; import type { RowType } from './hooks'; import lessStyle from './index.less'; import PermissionTable from './PermissionTable'; import { flatAuditList, isFlatAuditList } from './util'; const { Text } = Typography; export interface BpmTableProps { auditDetail: any; chainId: string; pageReadOnly?: boolean; rowSelectionKeys?: RowType; setSelectionKeys?: Dispatch>; approvalHandler: (id: any[], state: number, type: string) => Promise; requestDetail?: () => Promise; } const BpmTable = (props: BpmTableProps) => { const { auditDetail, chainId, pageReadOnly, rowSelectionKeys, setSelectionKeys, approvalHandler, requestDetail, } = props; const { formatMessage } = useIntl(); const columns = useMemo>(() => { return [ { title: , dataIndex: 'bpmAuditId', search: false, ellipsis: true, }, { title: , dataIndex: 'bpmAuditNode', search: false, render: (__: any, record: any) => { const { bpmAuditNode } = record; return ( Array.isArray(bpmAuditNode) && bpmAuditNode.length > 0 && ( {formatMessage({ id: AduitStatus[bpmAuditNode[bpmAuditNode.length - 1]?.state] })} ) ); }, }, { title: , dataIndex: 'bpmAuditNode', search: false, render: (__: any, record: any) => { const { bpmAuditNode } = record; return ( ); }, }, { title: , dataIndex: 'permissionOption', valueType: 'option', fixed: 'right', align: 'center', search: false, hideInTable: pageReadOnly, render: (__: any, record: any) => { const { bpmCanAudit, bpmAuditId } = record; return ( Boolean(chainId && bpmCanAudit) && ( { approvalHandler([bpmAuditId], 1, 'bpm'); }} > { approvalHandler([bpmAuditId], 3, 'bpm'); }} > ) ); }, }, ]; }, [pageReadOnly, formatMessage, auditDetail, chainId, requestDetail, approvalHandler]); const { auditList } = auditDetail || {}; // 是否以扁平化的形式展示 const flatShow = useMemo(() => isFlatAuditList(auditList), [auditList]); return ( <> {Array.isArray(auditList) && Boolean(auditList.length) && (flatShow ? ( ) : ( true, defaultExpandAllRows: true, expandIcon: (p) => , expandedRowRender: (record: any) => { return ; }, }} dataSource={auditList} /> ))} ); }; export default BpmTable;