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 (