|
import { useFetchUserInfo, 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, useHandleQuitUser } from './hooks'; |
|
|
|
const TenantTable = () => { |
|
const { t } = useTranslation(); |
|
const { data, loading } = useListTenant(); |
|
const { handleAgree } = useHandleAgreeTenant(); |
|
const { data: user } = useFetchUserInfo(); |
|
const { handleQuitTenantUser } = useHandleQuitUser(); |
|
|
|
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> |
|
); |
|
} else if (role === TenantRole.Normal && user.id !== tenant_id) { |
|
return ( |
|
<Button |
|
type="link" |
|
onClick={handleQuitTenantUser(user.id, tenant_id)} |
|
> |
|
{t('setting.quit')} |
|
</Button> |
|
); |
|
} |
|
}, |
|
}, |
|
]; |
|
|
|
return ( |
|
<Table<ITenant> |
|
columns={columns} |
|
dataSource={data} |
|
rowKey={'tenant_id'} |
|
loading={loading} |
|
pagination={false} |
|
/> |
|
); |
|
}; |
|
|
|
export default TenantTable; |
|
|