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'; import { useRouter } from 'next/router'; const NotSufficientModal = () => { const { t } = useTranslation(); const { notSufficientModalType: type, 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'), [TeamErrEnum.ticketNotAvailable]: t('common:code_error.team_error.ticket_not_available') }; return type ? ( <> {textMap[type]} {isRechargeModalOpen && ( )} ) : null; }; export default NotSufficientModal; export const RechargeModal = ({ onClose, onPaySuccess }: { onClose: () => void; onPaySuccess: () => void; }) => { const { t } = useTranslation(); const router = useRouter(); const { teamPlanStatus, initTeamPlanStatus } = useUserStore(); const { subPlans } = useSystemStore(); useMount(() => { initTeamPlanStatus(); }); const planName = useMemo(() => { if (!teamPlanStatus?.standard?.currentSubLevel) return ''; return ( subPlans?.standard?.[teamPlanStatus.standard.currentSubLevel]?.name || t(standardSubLevelMap[teamPlanStatus.standard.currentSubLevel]?.label as any) ); }, [teamPlanStatus?.standard?.currentSubLevel, subPlans?.standard, t]); const [tab, setTab] = useState<'standard' | 'extra'>('standard'); return ( {t('common:support.wallet.subscription.Current plan')} {t(planName as any)} {t('common:support.wallet.subscription.AI points usage')} {`${Math.round(teamPlanStatus?.usedPoints || 0)} / ${teamPlanStatus?.totalPoints ?? t('common:Unlimited')}`} {t('common:support.user.team.Dataset usage')} {`${teamPlanStatus?.usedDatasetIndexSize || 0} / ${teamPlanStatus?.datasetMaxSize ?? t('common:Unlimited')}`} { setTab(e as 'standard' | 'extra'); }} /> {tab === 'standard' ? ( ) : ( )} ); };