import { serviceSideProps } from '@/web/common/i18n/utils'; import AccountContainer from '@/pageComponents/account/AccountContainer'; import { Box, Flex } from '@chakra-ui/react'; import Icon from '@fastgpt/web/components/common/Icon'; import { useTranslation } from 'next-i18next'; import TeamSelector from '@/pageComponents/account/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 OperationLogTable = dynamic(() => import('@/pageComponents/account/team/OperationLog/index')); const GroupManage = dynamic(() => import('@/pageComponents/account/team/GroupManage/index')); const OrgManage = dynamic(() => import('@/pageComponents/account/team/OrgManage/index')); const HandleInviteModal = dynamic( () => import('@/pageComponents/account/team/Invite/HandleInviteModal') ); export enum TeamTabEnum { member = 'member', org = 'org', group = 'group', permission = 'permission', operationLog = 'operationLog' } const Team = () => { const router = useRouter(); const invitelinkid = useMemo(() => { const _id = router.query.invitelinkid; if (!_id && typeof _id !== 'string') { return ''; } else { return _id as string; } }, [router.query.invitelinkid]); const { teamTab = TeamTabEnum.member } = router.query as { teamTab: `${TeamTabEnum}` }; const { t } = useTranslation(); const { userInfo } = useUserStore(); const { setEditTeamData, 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, notificationAccount: userInfo.team.notificationAccount }); }} /> )} {t('account_team:total_team_members', { amount: teamSize })} {/* table */} {teamTab === TeamTabEnum.member && } {teamTab === TeamTabEnum.org && } {teamTab === TeamTabEnum.group && } {teamTab === TeamTabEnum.permission && } {teamTab === TeamTabEnum.operationLog && } {invitelinkid && } ); }; 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);