import React, { useMemo } from 'react'; import { ModalBody, Flex, Box, Table, Thead, Tbody, Tr, Th, Td, TableContainer } from '@chakra-ui/react'; import { UsageItemType } from '@fastgpt/global/support/wallet/usage/type.d'; import dayjs from 'dayjs'; import { UsageSourceMap } from '@fastgpt/global/support/wallet/usage/constants'; import MyModal from '@fastgpt/web/components/common/MyModal'; import { useTranslation } from 'next-i18next'; import { formatNumber } from '@fastgpt/global/common/math/tools'; import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel'; const UsageDetail = ({ usage, onClose }: { usage: UsageItemType; onClose: () => void }) => { const { t } = useTranslation(); const filterBillList = useMemo( () => usage.list.filter((item) => item && item.moduleName), [usage.list] ); const { hasModel, hasToken, hasCharsLen, hasDuration } = useMemo(() => { let hasModel = false; let hasToken = false; let hasCharsLen = false; let hasDuration = false; let hasDataLen = false; usage.list.forEach((item) => { if (item.model !== undefined) { hasModel = true; } if (typeof item.tokens === 'number') { hasToken = true; } if (typeof item.charsLength === 'number') { hasCharsLen = true; } if (typeof item.duration === 'number') { hasDuration = true; } }); return { hasModel, hasToken, hasCharsLen, hasDuration, hasDataLen }; }, [usage.list]); return ( {t('common:support.wallet.bill.Number')}: {usage.id} {t('common:support.wallet.usage.Time')}: {dayjs(usage.time).format('YYYY/MM/DD HH:mm:ss')} {t('common:support.wallet.usage.App name')}: {t(usage.appName) || '-'} {t('common:support.wallet.usage.Source')}: {t(UsageSourceMap[usage.source]?.label)} {t('common:support.wallet.usage.Total points')}: {formatNumber(usage.totalPoints)} {t('common:support.wallet.usage.Bill Module')} {hasModel && } {hasToken && } {hasCharsLen && } {hasDuration && } {filterBillList.map((item, i) => ( {hasModel && } {hasToken && } {hasCharsLen && } {hasDuration && } ))}
{t('common:support.wallet.usage.Module name')}{t('common:support.wallet.usage.Ai model')}{t('common:support.wallet.usage.Token Length')}{t('common:support.wallet.usage.Text Length')}{t('common:support.wallet.usage.Duration')}{t('common:support.wallet.usage.Total points')}
{t(item.moduleName)}{item.model ?? '-'}{item.tokens ?? '-'}{item.charsLength ?? '-'}{item.duration ?? '-'}{formatNumber(item.amount)}
); }; export default UsageDetail;