import { serviceSideProps } from '@fastgpt/web/common/system/nextjs'; import AccountContainer from '../components/AccountContainer'; import { Box, Flex } from '@chakra-ui/react'; import Icon from '@fastgpt/web/components/common/Icon'; import { useTranslation } from 'next-i18next'; import TeamSelector from '../components/TeamSelector'; import { useUserStore } from '@/web/support/user/useUserStore'; import React, { useMemo } from 'react'; import { useContextSelector } from 'use-context-selector'; import { useRouter } from 'next/router'; import FillRowTabs from '@fastgpt/web/components/common/Tabs/FillRowTabs'; import MyIcon from '@fastgpt/web/components/common/Icon'; import { TeamMemberRoleEnum } from '@fastgpt/global/support/user/team/constant'; import { TeamContext, TeamModalContextProvider } from '@/pageComponents/account/team/context'; import dynamic from 'next/dynamic'; const MemberTable = dynamic(() => import('@/pageComponents/account/team/MemberTable')); const PermissionManage = dynamic( () => import('@/pageComponents/account/team/PermissionManage/index') ); const GroupManage = dynamic(() => import('@/pageComponents/account/team/GroupManage/index')); const OrgManage = dynamic(() => import('@/pageComponents/account/team/OrgManage/index')); export enum TeamTabEnum { member = 'member', org = 'org', group = 'group', permission = 'permission' } const Team = () => { const router = useRouter(); const { teamTab = TeamTabEnum.member } = router.query as { teamTab: `${TeamTabEnum}` }; const { t } = useTranslation(); const { userInfo } = useUserStore(); const { setEditTeamData, isLoading, teamSize } = useContextSelector(TeamContext, (v) => v); const Tabs = useMemo( () => ( { router.replace({ query: { ...router.query, teamTab: e } }); }} /> ), [router, t, teamTab] ); return ( {/* header */} {t('account:team')} {userInfo?.team?.role === TeamMemberRoleEnum.owner && ( { if (!userInfo?.team) return; setEditTeamData({ id: userInfo.team.teamId, name: userInfo.team.teamName, avatar: userInfo.team.avatar }); }} /> )} {t('account_team:total_team_members', { amount: teamSize })} {/* table */} {teamTab === TeamTabEnum.member && } {teamTab === TeamTabEnum.org && } {teamTab === TeamTabEnum.group && } {teamTab === TeamTabEnum.permission && } ); }; export async function getServerSideProps(content: any) { return { props: { ...(await serviceSideProps(content, ['account', 'account_team', 'user'])) } }; } const Render = () => { const { userInfo } = useUserStore(); return !!userInfo?.team ? ( ) : null; }; export default React.memo(Render);