import { Checkbox, Input, Popconfirm, Space, Typography } from 'antd'; import { ConfigProvider, Table } from 'antd5'; import { memo, useMemo } from 'react'; import { FormattedMessage } from 'umi'; import PermissionParentShow from '../../PermissionParentShow'; import { leafBuildTree, treeLeafNode } from '../../utils/array'; import { requestBatchUnbind } from '../api'; import style from './index.less'; const { Text } = Typography; export interface RoleList { isOptShow?: boolean; DataSensitiveMap?: any; DataSensitiveLevelMap?: any; setOpenObj?: any; params?: any; setParams?: any; formatMessage?: any; moment?: any; appId?: any; setRenewalParams?: any; currentUser?: any; batchParams?: any; setBatchParams?: any; data?: any; permission?: any; run?: any; showSelected?: boolean; } const RoleListTable = (props: RoleList) => { const { isOptShow, DataSensitiveMap, DataSensitiveLevelMap, setOpenObj, params, setParams, formatMessage, moment, appId, setRenewalParams, currentUser, batchParams, setBatchParams, data, permission, run, showSelected, } = props; const roleListColumn = [ { title: , dataIndex: 'name', ellipsis: true, render: (__: any, record: any) => { return ( {record.name} ); }, }, { title: , dataIndex: 'dataSensitive', ellipsis: true, render: (__: any, record: any) => { return ( {DataSensitiveLevelMap[record?.dataSensitive]?.text} ); }, }, { title: , dataIndex: 'sensitiveLevel', ellipsis: true, render: (__: any, record: any) => { return ( {DataSensitiveMap[record.sensitiveLevel]?.text} ); }, }, { title: , dataIndex: 'expiredAt', ellipsis: true, render: (__: any, record: any) => { return record.hasOwnProperty('expiredAt') ? ( {record.expiredAt == 0 ? formatMessage({ id: 'pages.setting.base.defaultExpirationTime.forever' }) : record.expiredAt < 0 ? '-' : moment().valueOf() < record.expiredAt * 1000 ? moment(record.expiredAt * 1000).format('YYYY-MM-DD HH:mm:ss') : `${moment(record.expiredAt * 1000).format('YYYY-MM-DD HH:mm:ss')}(${formatMessage({ id: 'base.expiredAted', })})`} ) : null; }, }, { title: (
), dataIndex: 'permissionOption', fixed: 'right', hidden: !isOptShow, render: (__: any, record: any) => [ <> {record?.isBind ? ( { try { const allSettledPromise = requestBatchUnbind( { roleList: [record.id] }, currentUser, appId, formatMessage, ); if (allSettledPromise) { allSettledPromise.then(() => { run(); }); } } catch (error) {} }} > ) : null} {record?.expiredAt < 0 || record?.isAllowApply === 0 || !record?.isBind ? null : ( { setRenewalParams({ roleList: [record.id] }); setOpenObj({ open: true, reload: false }); }} > )} , ], }, ]; const dataSource = useMemo(() => { const list = permission?.roleList ?? data?.roleList ?? []; if (!showSelected) return list; const leaf = treeLeafNode(list, (v) => { return v.isBind; }).map((v) => v.id); return leafBuildTree(leaf, list); }, [data?.roleList, permission?.roleList, showSelected]); if (!data?.roleList?.length) return null; return (
{Boolean(isOptShow) && ( { setParams({ ...params, roleList: val.target.value }); }} style={{ width: 200 }} /> )} { setBatchParams((key) => { return { ...key, roleList: rowKey }; }); }, getCheckboxProps: (record: any) => ({ disabled: record?.expiredAt < 0 || record?.isAllowApply === 0 || !record?.isBind, }), } : { columnWidth: 50, hideSelectAll: true, renderCell: (checked, record: any) => { return ; }, } } columns={roleListColumn as any} pagination={false} dataSource={dataSource} /> ); }; export default memo(RoleListTable);