'use client' import { useState } from 'react' import useSWR from 'swr' import dayjs from 'dayjs' import 'dayjs/locale/zh-cn' import relativeTime from 'dayjs/plugin/relativeTime' import DetailModal from './detail-modal' import { useContext } from 'use-context-selector' import { RiAddLine } from '@remixicon/react' import { useTranslation } from 'react-i18next' import { delKnowledge, fetchKnowledges } from '@/service/common' import I18n from '@/context/i18n' import { useAppContext } from '@/context/app-context' import LogoEmbeddedChatHeader from '@/app/components/base/logo/logo-embedded-chat-header' import { useProviderContext } from '@/context/provider-context' import { Plan } from '@/app/components/billing/type' import Button from '@/app/components/base/button' import UpgradeBtn from '@/app/components/billing/upgrade-btn' import { NUM_INFINITE } from '@/app/components/billing/config' import { LanguagesSupported } from '@/i18n/language' import cn from '@/utils/classnames' import Confirm from '@/app/components/base/confirm' import useTimestamp from '@/hooks/use-timestamp' dayjs.extend(relativeTime) const KnowledgesPage = () => { const { t } = useTranslation() const { locale } = useContext(I18n) const { formatTime } = useTimestamp() const ServiceTypeMap: any = { QUESTION_ANSWER: '智能问答', SEARCH: '智能搜索', RECOMMEND: '智能推荐', } const StatusMap: any = { false: '未启用', true: '已启用', } const { userProfile, currentWorkspace, isCurrentWorkspaceOwner, isCurrentWorkspaceManager, systemFeatures } = useAppContext() const { data, mutate }: any = useSWR( { url: '/external_applications', params: { page: 1, limit: 99999, }, }, fetchKnowledges, ) const [detailModalVisible, setDetailModalVisible] = useState(false) const [transfer, setTransfer] = useState({ mode: 'add', row: null, }) const knowledgeList = data?.data || [] const { plan, enableBilling } = useProviderContext() const isNotUnlimitedMemberPlan = enableBilling && plan.type !== Plan.team && plan.type !== Plan.enterprise const isMemberFull = enableBilling && isNotUnlimitedMemberPlan && knowledgeList.length >= plan.total.teamMembers const [showConfirmDelete, setShowConfirmDelete] = useState(false) const [row, setRow] = useState({}) const handleDel = async () => { try { await delKnowledge({ url: `/external_applications/${row.id}`, body: {}, }) setShowConfirmDelete(false) mutate() } catch (e) { } } return ( <>
{currentWorkspace?.name}
{enableBilling && (
{isNotUnlimitedMemberPlan ? (
{t('billing.plansCommon.member')}{locale !== LanguagesSupported[1] && knowledgeList.length > 1 && 's'}
{knowledgeList.length}
/
{plan.total.teamMembers === NUM_INFINITE ? t('billing.plansCommon.unlimited') : plan.total.teamMembers}
) : (
{knowledgeList.length}
{t('billing.plansCommon.memberAfter')}{locale !== LanguagesSupported[1] && knowledgeList.length > 1 && 's'}
)}
)}
{isMemberFull && ( )}
服务类型
系统名称
URL
连接应用状态
更新时间
操作
{ knowledgeList.map((know: any) => (
{ServiceTypeMap[know.type]}
{know.name}
{know.url}
{StatusMap[know.status]}
{formatTime(know.updated_at, t('appLog.dateTimeFormat') as string)}
)) }
{ detailModalVisible && ( setDetailModalVisible(false)} onSend={() => { mutate() }} /> ) } {showConfirmDelete && ( setShowConfirmDelete(false)} /> )} ) } export default KnowledgesPage