import React, { useMemo, useState } from 'react'; import MyModal from '@fastgpt/web/components/common/MyModal'; import { useTranslation } from 'next-i18next'; import { Box, Button, Flex, ModalBody, ModalFooter, useDisclosure } from '@chakra-ui/react'; import { type NotSufficientModalType, useSystemStore } from '@/web/common/system/useSystemStore'; import ExtraPlan from '@/pageComponents/price/ExtraPlan'; import StandardPlan from '@/pageComponents/price/Standard'; import FillRowTabs from '@fastgpt/web/components/common/Tabs/FillRowTabs'; import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel'; import { useUserStore } from '@/web/support/user/useUserStore'; import { standardSubLevelMap } from '@fastgpt/global/support/wallet/sub/constants'; import { TeamErrEnum } from '@fastgpt/global/common/error/code/team'; import { useMount } from 'ahooks'; const NotSufficientModal = ({ type }: { type: NotSufficientModalType }) => { const { t } = useTranslation(); const { setNotSufficientModalType } = useSystemStore(); const onClose = () => setNotSufficientModalType(undefined); const { isOpen: isRechargeModalOpen, onOpen: onRechargeModalOpen, onClose: onRechargeModalClose } = useDisclosure(); const textMap = { [TeamErrEnum.aiPointsNotEnough]: t('common:support.wallet.Not sufficient'), [TeamErrEnum.datasetSizeNotEnough]: t('common:support.wallet.Dataset_not_sufficient'), [TeamErrEnum.datasetAmountNotEnough]: t('common:support.wallet.Dataset_amount_not_sufficient'), [TeamErrEnum.teamMemberOverSize]: t('common:support.wallet.Team_member_over_size'), [TeamErrEnum.appAmountNotEnough]: t('common:support.wallet.App_amount_not_sufficient'), [TeamErrEnum.pluginAmountNotEnough]: t('common:support.wallet.App_amount_not_sufficient'), [TeamErrEnum.websiteSyncNotEnough]: t('common:code_error.team_error.website_sync_not_enough'), [TeamErrEnum.reRankNotEnough]: t('common:code_error.team_error.re_rank_not_enough') }; return ( <> {textMap[type]} {isRechargeModalOpen && ( )} ); }; export default NotSufficientModal; const RechargeModal = ({ onClose, onPaySuccess }: { onClose: () => void; onPaySuccess: () => void; }) => { const { t } = useTranslation(); const { teamPlanStatus, initTeamPlanStatus } = useUserStore(); useMount(() => { initTeamPlanStatus(); }); const planName = useMemo(() => { if (!teamPlanStatus?.standard?.currentSubLevel) return ''; return standardSubLevelMap[teamPlanStatus.standard.currentSubLevel].label; }, [teamPlanStatus?.standard?.currentSubLevel]); const [tab, setTab] = useState<'standard' | 'extra'>('standard'); return ( {t('common:support.wallet.subscription.Current plan')} {t(planName as any)} {t('common:info.resource')} {`${t('common:support.user.team.Dataset usage')}:`} {`${teamPlanStatus?.usedDatasetSize} / ${teamPlanStatus?.datasetMaxSize || t('account_info:unlimited')}`} {`${t('common:support.wallet.subscription.AI points usage')}:`} {`${Math.round(teamPlanStatus?.usedPoints || 0)} / ${teamPlanStatus?.totalPoints || t('account_info:unlimited')}`} { setTab(e as 'standard' | 'extra'); }} /> {tab === 'standard' ? ( ) : ( )} ); };