68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { ROUTE_MANAGER_USERS } from '@/constants/routes';
|
|
import { apiQueryUserById } from '@/services/master/UserController';
|
|
import { PageContainer } from '@ant-design/pro-components';
|
|
import { history, useParams } from '@umijs/max';
|
|
import { useEffect, useState } from 'react';
|
|
import AssignGroup from './components/AssignGroup';
|
|
import ShareThing from './components/ShareThing';
|
|
|
|
enum AssignTabsKey {
|
|
group = 'group',
|
|
device = 'device',
|
|
}
|
|
|
|
const AssignUserPage = () => {
|
|
const { userId } = useParams<{ userId: string }>();
|
|
const [userProfile, setUserProfile] =
|
|
useState<MasterModel.ProfileResponse | null>(null);
|
|
const [loading, setLoading] = useState<boolean>(false);
|
|
const [tabSelected, setTabSelected] = useState<AssignTabsKey>(
|
|
AssignTabsKey.group,
|
|
);
|
|
useEffect(() => {
|
|
const fetchUserProfile = async () => {
|
|
try {
|
|
setLoading(true);
|
|
const profile = await apiQueryUserById(userId || '');
|
|
setUserProfile(profile);
|
|
} catch (error) {
|
|
console.error('Failed to fetch user profile:', error);
|
|
} finally {
|
|
setLoading(false);
|
|
}
|
|
};
|
|
fetchUserProfile();
|
|
}, [userId]);
|
|
return (
|
|
<PageContainer
|
|
title={userProfile?.email}
|
|
header={{
|
|
onBack: () => history.push(ROUTE_MANAGER_USERS),
|
|
}}
|
|
loading={loading}
|
|
tabList={[
|
|
{
|
|
tab: 'Phân quyền đơn vị',
|
|
key: AssignTabsKey.group,
|
|
},
|
|
{
|
|
tab: 'Chia sẻ thiết bị',
|
|
key: AssignTabsKey.device,
|
|
},
|
|
]}
|
|
onTabChange={(key) => {
|
|
setTabSelected(key as AssignTabsKey);
|
|
}}
|
|
>
|
|
{tabSelected === AssignTabsKey.group && (
|
|
<AssignGroup user={userProfile} />
|
|
)}
|
|
{tabSelected === AssignTabsKey.device && (
|
|
<ShareThing user={userProfile} />
|
|
)}
|
|
</PageContainer>
|
|
);
|
|
};
|
|
|
|
export default AssignUserPage;
|