mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
### What problem does this PR solve? feat: Bind data to TenantTable #2846 feat: Add TenantTable ### Type of change - [x] New Feature (non-breaking change which adds functionality)
66 lines
1.6 KiB
TypeScript
66 lines
1.6 KiB
TypeScript
import { useListTenant } from '@/hooks/user-setting-hooks';
|
|
import { ITenant } from '@/interfaces/database/user-setting';
|
|
import { formatDate } from '@/utils/date';
|
|
import type { TableProps } from 'antd';
|
|
import { Button, Space, Table } from 'antd';
|
|
import { useTranslation } from 'react-i18next';
|
|
import { TenantRole } from '../constants';
|
|
import { useHandleAgreeTenant } from './hooks';
|
|
|
|
const TenantTable = () => {
|
|
const { t } = useTranslation();
|
|
const { data, loading } = useListTenant();
|
|
const { handleAgree } = useHandleAgreeTenant();
|
|
|
|
const columns: TableProps<ITenant>['columns'] = [
|
|
{
|
|
title: t('common.name'),
|
|
dataIndex: 'nickname',
|
|
key: 'nickname',
|
|
},
|
|
{
|
|
title: t('setting.email'),
|
|
dataIndex: 'email',
|
|
key: 'email',
|
|
},
|
|
{
|
|
title: t('setting.updateDate'),
|
|
dataIndex: 'update_date',
|
|
key: 'update_date',
|
|
render(value) {
|
|
return formatDate(value);
|
|
},
|
|
},
|
|
{
|
|
title: t('common.action'),
|
|
key: 'action',
|
|
render: (_, { role, tenant_id }) => {
|
|
if (role === TenantRole.Invite) {
|
|
return (
|
|
<Space>
|
|
<Button type="link" onClick={handleAgree(tenant_id, true)}>
|
|
{t(`setting.agree`)}
|
|
</Button>
|
|
<Button type="link" onClick={handleAgree(tenant_id, false)}>
|
|
{t(`setting.refuse`)}
|
|
</Button>
|
|
</Space>
|
|
);
|
|
}
|
|
},
|
|
},
|
|
];
|
|
|
|
return (
|
|
<Table<ITenant>
|
|
columns={columns}
|
|
dataSource={data}
|
|
rowKey={'tenant_id'}
|
|
loading={loading}
|
|
pagination={false}
|
|
/>
|
|
);
|
|
};
|
|
|
|
export default TenantTable;
|