import { Box, HStack, VStack } from '@chakra-ui/react'; import type { OrgListItemType, OrgType } from '@fastgpt/global/support/user/team/org/type'; import Avatar from '@fastgpt/web/components/common/Avatar'; import { useToggle } from 'ahooks'; import { useState } from 'react'; import IconButton from './IconButton'; import { useUserStore } from '@/web/support/user/useUserStore'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { getOrgList } from '@/web/support/user/team/org/api'; import { getChildrenByOrg } from '@fastgpt/service/support/permission/org/controllers'; import { getOrgChildrenPath } from '@fastgpt/global/support/user/team/org/constant'; function OrgTreeNode({ org, selectedOrg, setSelectedOrg, index = 0, movingOrg }: { org: OrgListItemType; selectedOrg?: OrgListItemType; setSelectedOrg: (org?: OrgListItemType) => void; index?: number; movingOrg: OrgListItemType; }) { const [isExpanded, toggleIsExpanded] = useToggle(index === 0); const [canBeExpanded, setCanBeExpanded] = useState(true); const { data: orgs = [], runAsync: getOrgs } = useRequest2(() => getOrgList({ orgId: org._id, withPermission: false }) ); const onClickExpand = async () => { const data = await getOrgs(); if (data.length < 1) { setCanBeExpanded(false); } toggleIsExpanded.toggle(); }; if (org._id === movingOrg._id) { return <>; } return ( setSelectedOrg(undefined) } : { onClick: () => setSelectedOrg(org) })} > { onClickExpand(); e.stopPropagation(); }} /> setSelectedOrg(org)} cursor={'pointer'} borderRadius={'xs'} > {org.name} {isExpanded && orgs.length > 0 && orgs.map((child) => ( ))} ); } function OrgTree({ selectedOrg, setSelectedOrg, movingOrg }: { selectedOrg?: OrgListItemType; setSelectedOrg: (org?: OrgListItemType) => void; movingOrg: OrgListItemType; }) { const { userInfo } = useUserStore(); const root: OrgListItemType = { _id: '', path: '', pathId: '', name: userInfo?.team.teamName || '', avatar: userInfo?.team.avatar || '' } as any; return ( ); } export default OrgTree;