import { useContext, useEffect, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; import { userContext } from "../../contexts/userContext"; import { deleteFileLib, readFileLibDatabase } from "../../controllers/API"; import { captureAndAlertRequestErrorHoc } from "../../controllers/request"; import { useTable } from "../../util/hook"; import {DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem} from "../../components/ui/dropdown-menu"; import CreateModal from "./components/createModel" import RenameModal from "./components/renameModel" import MoveModal from "./components/moveModel"; import addIcon from "../../assets/knowledge/add-icon.png"; import folderIcon from "../../assets/knowledge/folder-icon.png"; import knowledgeIcon from "../../assets/knowledge/knowledge-icon.png"; import duihuaGengduo from "../../assets/chat/duihua-gengduo.png"; import writeIcon from "../../assets/knowledge/write-icon.png"; import moveIcon from "../../assets/knowledge/move-icon.png"; import exportIcon from "../../assets/knowledge/export-icon.png"; import deleteIcon from "../../assets/knowledge/delete-icon.png"; import noFolderIcon from "../../assets/knowledge/no-folder-icon.png"; import { useNavigate } from "react-router-dom"; export default function FileLibPage() { const [open, setOpen] = useState(false); const [renameOpen, setRenameOpen] = useState(false); const [moveOpen, setMoveOpen] = useState(false); const { user } = useContext(userContext); const [parentId, setParentId] = useState('0') const [titleArray, setTitleArray] = useState([]); const [folderShow, setFolderShow] = useState(false) const [type, setType] = useState(1) const [data, setData] = useState({}) const navigate = useNavigate() const { page, pageSize, data: datalist, total, loading, setPage, search, reload } = useTable({},(param) => readFileLibDatabase(param.page, 10000, param.keyword, parentId) ) useEffect(() => { reload() }, []) // Delete const { delShow, idRef, close, delConfirm } = useDelete(); const handleDelete = () => { captureAndAlertRequestErrorHoc(deleteFileLib(idRef.current.id).then(res => { reload(); close(); })); } const handleDetail = (el) => { if(el.type == 1){ reload(); titleArray.push(el) setTitleArray(titleArray) setParentId(el.id) }else if(el.type == 2){ // @ts-ignore window.libname = el.name navigate("/filelib/" + el.id); }else if(el.type == 3){ } } const backFolder = (parentId, index) => { setParentId(parentId) reload(); if(index == -1){ setTitleArray([]) }else if(index == (titleArray.length - 1)){ return; }else{ titleArray.splice(index+1) } } // 进详情页前缓存 page, 临时方案 const handleCachePage = () => { // @ts-ignore window.LibPage = page } useEffect(() => { // @ts-ignore const _page = window.LibPage if (_page) { setPage(_page); // @ts-ignore delete window.LibPage } else { setPage(1); } }, []) const { t } = useTranslation(); return (
{loading &&
}
{titleArray.length > 0?
{ titleArray.map((title, index) => (
{index <= (titleArray.length - 1)? ">" : ""}
)) }
: t('lib.myKnowledge') }
setOpen(true)}>
{ setType(1) setOpen(true) }}>文件夹 { setType(2) setOpen(true) }}>知识库
{ datalist.length > 0 ?
{datalist.map((el) => (
handleDetail(el)}>
{ el.type == 1? : ( el.img_url? : ) } { event.stopPropagation(); setData(el) setRenameOpen(true) }}>{t("lib.rename")} { event.stopPropagation(); setData(el) setMoveOpen(true) }}>{t("lib.move")} {t("code.export")} {user.role === 'admin' || user.user_id === el.user_id ? { event.stopPropagation(); delConfirm(el) }}> {t('delete')} : '' }
{el.type == 1 ? t("lib.foldDesc") :el.description}
{el.type == 1?t('lib.folder'):el.type == 2?t('lib.universalKnowledgeBase'):t('lib.webSite')}
))}
:

{t('lib.noKnowledgeBase')}

}

{t('prompt')}

{t('lib.confirmDeleteLibrary')}

); } const useDelete = () => { const [delShow, setDelShow] = useState(false) const idRef = useRef(null) return { delShow, idRef, close: () => { setDelShow(false) }, delConfirm: (id) => { idRef.current = id setDelShow(true) } } }