import { formatByDataFormatType, formatByThousandSeperator } from '../../../utils/utils'; import { Table as AntTable } from 'antd'; import { MsgDataType } from '../../../common/type'; import { CLS_PREFIX } from '../../../common/constants'; import ApplyAuth from '../ApplyAuth'; import { SizeType } from 'antd/es/config-provider/SizeContext'; import moment from 'moment'; type Props = { data: MsgDataType; size?: SizeType; question?: string; loading?: boolean; onApplyAuth?: (model: string) => void; }; const Table: React.FC = ({ data, size, loading, question, onApplyAuth }) => { const { entityInfo, queryColumns, queryResults } = data; const prefixCls = `${CLS_PREFIX}-table`; const tableColumns: any[] = queryColumns.map( ({ name, bizName, showType, dataFormatType, dataFormat, authorized }) => { return { dataIndex: bizName, key: bizName, title: name || bizName, defaultSortOrder: 'descend', sorter: showType === 'NUMBER' ? (a, b) => { return a[bizName] - b[bizName]; } : undefined, render: (value: string | number) => { if (!authorized) { return ( ); } if (dataFormatType === 'percent') { return (
{`${ value ? formatByDataFormatType(value, dataFormatType, dataFormat) : 0 }%`}
); } if (showType === 'NUMBER') { return (
{/* {getFormattedValue(value as number)} */} {formatByThousandSeperator(value)}
); } if (bizName.includes('photo')) { return (
); } return value; }, }; } ); const getRowClassName = (_: any, index: number) => { return index % 2 !== 0 ? `${prefixCls}-even-row` : ''; }; const dateColumn = queryColumns.find(column => column.type === 'DATE'); const dataSource = dateColumn ? queryResults.sort((a, b) => moment(a[dateColumn.bizName]).diff(moment(b[dateColumn.bizName]))) : queryResults; return (
{question && (
{question}
)}
); }; export default Table;