|
|
@@ -27,7 +27,7 @@ import { Select, SelectContent, SelectGroup, SelectIconTrigger, SelectItem } fro
|
|
|
import { locationContext } from "../../contexts/locationContext";
|
|
|
import {
|
|
|
deleteFile,
|
|
|
- deleteFileLib,
|
|
|
+ deleteFileLib, getFileLibById,
|
|
|
readFileByLibDatabase,
|
|
|
readFileLibDatabase,
|
|
|
retryKnowledgeFileApi
|
|
|
@@ -44,6 +44,7 @@ import {
|
|
|
import CreateModal from "./components/createModel";
|
|
|
import RenameModal from "./components/renameModel";
|
|
|
import MoveModal from "./components/moveModel";
|
|
|
+import ConfigModal from "./components/configModel";
|
|
|
import {userContext} from "../../contexts/userContext";
|
|
|
|
|
|
export default function FilesPage() {
|
|
|
@@ -52,24 +53,25 @@ export default function FilesPage() {
|
|
|
const { id } = useParams()
|
|
|
// 上传 上传成功添加到列表
|
|
|
const [open, setOpen] = useState(false)
|
|
|
- const [title, setTitle] = useState('')
|
|
|
+ const [knowledge, setKnowledge] = useState({})
|
|
|
const nameRef = useRef(null)
|
|
|
const [renameOpen, setRenameOpen] = useState(false);
|
|
|
const [moveOpen, setMoveOpen] = useState(false);
|
|
|
const [parentId, setParentId] = useState(id)
|
|
|
+ const [tabType, setTabType] = useState(1);
|
|
|
|
|
|
useEffect(() => {
|
|
|
setParentId(id)
|
|
|
+ getFileLibById(id).then(res => {
|
|
|
+ const data = res || {}
|
|
|
+ setKnowledge(data)
|
|
|
+ })
|
|
|
}, [id])
|
|
|
|
|
|
const [type, setType] = useState(1)
|
|
|
const [data, setData] = useState({})
|
|
|
const [titleArray, setTitleArray] = useState([]);
|
|
|
|
|
|
- const detailData = {
|
|
|
- img_url: ""
|
|
|
- }
|
|
|
-
|
|
|
const [hasPermission, setHasPermission] = useState(true)
|
|
|
const { appConfig } = useContext(locationContext)
|
|
|
|
|
|
@@ -80,7 +82,7 @@ export default function FilesPage() {
|
|
|
readFileLibDatabase(param.page, 10000, param.keyword, parentId)
|
|
|
)
|
|
|
|
|
|
- const { page, pageSize, data: datalist, total, loading, setPage, search, reload:fileReload, filterData, refreshData } = useTable({}, (param) =>
|
|
|
+ const { page, pageSize, data: datalist, total, loading, setPage, search: fileSearch, reload:fileReload, filterData, refreshData } = useTable({}, (param) =>
|
|
|
readFileByLibDatabase({ ...param, id: parentId, pageSize: 10000, name: param.keyword }).then(res => {
|
|
|
setHasPermission(res.writeable)
|
|
|
return res
|
|
|
@@ -95,18 +97,17 @@ export default function FilesPage() {
|
|
|
const reload = () => {
|
|
|
fileReload()
|
|
|
libReload()
|
|
|
+ getFileLibById(id).then(res => {
|
|
|
+ const data = res || {}
|
|
|
+ setKnowledge(data)
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ const search = (keyword) => {
|
|
|
+ libSearch(keyword)
|
|
|
+ fileSearch(keyword)
|
|
|
}
|
|
|
|
|
|
- useEffect(() => {
|
|
|
- // @ts-ignore
|
|
|
- const libname = window.libname // 临时记忆
|
|
|
- if (libname) {
|
|
|
- // @ts-ignore
|
|
|
- localStorage.setItem('libname', window.libname)
|
|
|
- }
|
|
|
- // @ts-ignore
|
|
|
- setTitle(window.libname || localStorage.getItem('libname'))
|
|
|
- }, [])
|
|
|
|
|
|
const handleOpen = (e) => {
|
|
|
setOpen(e)
|
|
|
@@ -202,21 +203,27 @@ export default function FilesPage() {
|
|
|
<div className={"file-info relative"}>
|
|
|
<div className={"file-name"}>
|
|
|
{
|
|
|
- detailData.img_url?
|
|
|
+ knowledge.img_url?
|
|
|
<img src={"/src/assets/knowledge/knowledge-icon.png"} className={"knowledge-img"}/>
|
|
|
:
|
|
|
<span className={"knowledge-img-bg"}>
|
|
|
<img src={"/src/assets/knowledge/knowledge-icon.png"}/>
|
|
|
</span>
|
|
|
}
|
|
|
- <label>{ title }</label>
|
|
|
+ <label>{ knowledge.name }</label>
|
|
|
+ </div>
|
|
|
+ <div className={"folder-type"}>
|
|
|
+ {t('lib.universalKnowledgeBase') }
|
|
|
</div>
|
|
|
- <div className={"folder-type"}>{t('lib.universalKnowledgeBase')}</div>
|
|
|
- <div className={"file-menu-active"}>
|
|
|
- <img src={"/src/assets/knowledge/knowledge-active-icon.png"}/>{t("lib.dataset")}
|
|
|
+ <div className={tabType == 1 ? "file-menu-active" : "file-menu"} onClick={ () => {
|
|
|
+ setTabType(1)
|
|
|
+ }} >
|
|
|
+ <img src={tabType == 1 ? "/src/assets/knowledge/knowledge-active-icon.png" : "/src/assets/knowledge/knowledge-icon.png"}/>{t("lib.dataset")}
|
|
|
</div>
|
|
|
- <div className={"file-menu"}>
|
|
|
- <img src={"/src/assets/knowledge/set-icon.png"}/>{t("lib.config")}
|
|
|
+ <div className={tabType == 2 ? "file-menu-active" : "file-menu"} onClick={ () => {
|
|
|
+ setTabType(2)
|
|
|
+ }} >
|
|
|
+ <img src={tabType == 2 ? "/src/assets/knowledge/set-active-icon.png" : "/src/assets/knowledge/set-icon.png"}/>{t("lib.config")}
|
|
|
</div>
|
|
|
<div>
|
|
|
|
|
|
@@ -226,170 +233,175 @@ export default function FilesPage() {
|
|
|
<div className={"back-knowledge"}><img src={"/src/assets/knowledge/back-icon.png"}/>{t("lib.allKnowledge")}</div>
|
|
|
</Link>
|
|
|
</div>
|
|
|
- <div className={"file-list p-6 overflow-y-auto"}>
|
|
|
- <div className={'knowledge-header'}>
|
|
|
- <div className={'knowledge-title'}>
|
|
|
- {titleArray.length > 0?
|
|
|
- <div className={"title-list"}>
|
|
|
- <div className={"title-item"}>
|
|
|
- <label onClick={()=>backFolder(id, -1)}>{t("lib.rootDirectory")}</label>
|
|
|
- </div>
|
|
|
- {
|
|
|
- titleArray.map((title, index) => (
|
|
|
- <div className={"title-item"} key={title}>
|
|
|
- <span>{index <= (titleArray.length - 1)? ">" : ""}</span>
|
|
|
- <label onClick={()=>backFolder(title.id, index)}>{title.name}</label>
|
|
|
+ {
|
|
|
+ tabType == 1 ?
|
|
|
+ <div className={"file-list p-6 overflow-y-auto"}>
|
|
|
+ <div className={'knowledge-header'}>
|
|
|
+ <div className={'knowledge-title'}>
|
|
|
+ {titleArray.length > 0?
|
|
|
+ <div className={"title-list"}>
|
|
|
+ <div className={"title-item"}>
|
|
|
+ <label onClick={()=>backFolder(id, -1)}>{t("lib.rootDirectory")}</label>
|
|
|
</div>
|
|
|
- ))
|
|
|
+ {
|
|
|
+ titleArray.map((title, index) => (
|
|
|
+ <div className={"title-item"} key={title}>
|
|
|
+ <span>{index <= (titleArray.length - 1)? ">" : ""}</span>
|
|
|
+ <label onClick={()=>backFolder(title.id, index)}>{title.name}</label>
|
|
|
+ </div>
|
|
|
+ ))
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ :
|
|
|
+ <div>{t("lib.file")}({libTotal + total})</div>
|
|
|
}
|
|
|
</div>
|
|
|
- :
|
|
|
- <div>{t("lib.file")}({libTotal + total})</div>
|
|
|
- }
|
|
|
- </div>
|
|
|
- {hasPermission &&
|
|
|
- <div className={'knowledge-create-box'}>
|
|
|
- <DropdownMenu>
|
|
|
- <DropdownMenuTrigger>
|
|
|
- <div className={'knowledge-create'} onClick={() => setOpen(true)}>
|
|
|
- <img src={"/src/assets/knowledge/add-icon.png"} className={'create-icon'}/>
|
|
|
- <label style={{letterSpacing:0}}>{t("lib.createImport")}</label>
|
|
|
- </div>
|
|
|
- </DropdownMenuTrigger>
|
|
|
- <DropdownMenuContent>
|
|
|
- <DropdownMenuItem onClick={()=>{
|
|
|
- setType(1)
|
|
|
- setOpen(true)
|
|
|
- }}><img src={"/src/assets/knowledge/folder-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.folder")}</DropdownMenuItem>
|
|
|
- <DropdownMenuItem ><img src={"/src/assets/knowledge/write-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.manualDataset")}</DropdownMenuItem>
|
|
|
- <DropdownMenuItem ><img src={"/src/assets/knowledge/knowledge-no-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.textDataset")}</DropdownMenuItem>
|
|
|
- <DropdownMenuItem ><img src={"/src/assets/knowledge/table-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.tableDataset")}</DropdownMenuItem>
|
|
|
- </DropdownMenuContent>
|
|
|
- </DropdownMenu>
|
|
|
- </div>
|
|
|
- }
|
|
|
- <div className={"search-box"}>
|
|
|
- <input id="name" ref={nameRef} className={"form-input"} />
|
|
|
- <button onClick={(e) => search(nameRef.current.value)} className={"search-btn"}>{t('tools.Search.display_name')}</button>
|
|
|
- <img src={"/src/assets/knowledge/search-icon.png"}/>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <Table>
|
|
|
- <TableHeader>
|
|
|
- <TableRow>
|
|
|
- <TableHead>#</TableHead>
|
|
|
- <TableHead className="w-[600px]">{t('lib.name')}</TableHead>
|
|
|
- <TableHead className="items-center">{t('lib.dataTotal')}</TableHead>
|
|
|
- <TableHead>{t('lib.lastUpdate')}</TableHead>
|
|
|
- {/* 状态 */}
|
|
|
- <TableHead>{t('lib.status')}</TableHead>
|
|
|
- <TableHead className="w-[80px]"></TableHead>
|
|
|
- </TableRow>
|
|
|
- </TableHeader>
|
|
|
- <TableBody>
|
|
|
- {datalist.map((el,index) => (
|
|
|
- <TableRow key={el.id} className={"file-row"}>
|
|
|
- <TableCell>{index + 1}</TableCell>
|
|
|
- <TableCell>
|
|
|
- <img className={"img-icon"} src={el.type == 1 ?"/src/assets/chat/write-icon.png":el.type == 2
|
|
|
- ?"/src/assets/knowledge/knowledge-no-icon.png":el.type == 3 ?"/src/assets/knowledge/table-icon.png":"/src/assets/knowledge/folder-icon.png"}/>
|
|
|
- {el.file_name}
|
|
|
- </TableCell>
|
|
|
- <TableCell></TableCell>
|
|
|
- <TableCell>{el.update_time.replace('T', ' ')}</TableCell>
|
|
|
- <TableCell>
|
|
|
- {el.status === 3 ? <div className="flex items-center">
|
|
|
- <div className="tooltip" data-tip={el.remark}>
|
|
|
- <span className='text-red-500'>{t('lib.parseFailed')}</span>
|
|
|
- </div>
|
|
|
- <Button variant="link"><RotateCw size={16} onClick={() => handleRetry([el])} /></Button>
|
|
|
- </div> :
|
|
|
- <span className={el.status === 3 && 'text-red-500'}>{[t('lib.parseFailed'), t('lib.parsing'), t('lib.completed'), t('lib.parseFailed')][el.status]}</span>
|
|
|
- }
|
|
|
- </TableCell>
|
|
|
- <TableCell>
|
|
|
+ {hasPermission &&
|
|
|
+ <div className={'knowledge-create-box'}>
|
|
|
<DropdownMenu>
|
|
|
<DropdownMenuTrigger>
|
|
|
- <img src={"/src/assets/chat/duihua-gengduo.png"} className={'more-button'}/>
|
|
|
+ <div className={'knowledge-create'} onClick={() => setOpen(true)}>
|
|
|
+ <img src={"/src/assets/knowledge/add-icon.png"} className={'create-icon'}/>
|
|
|
+ <label style={{letterSpacing:0}}>{t("lib.createImport")}</label>
|
|
|
+ </div>
|
|
|
</DropdownMenuTrigger>
|
|
|
<DropdownMenuContent>
|
|
|
- <DropdownMenuItem onClick={(event)=>{
|
|
|
- event.stopPropagation();
|
|
|
- // 数据集重命名
|
|
|
- setData({ ...el, nameType: "file" })
|
|
|
- setRenameOpen(true)
|
|
|
- }}><img src={"/src/assets/knowledge/write-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.rename")}</DropdownMenuItem>
|
|
|
- <DropdownMenuItem onClick={(event)=>{
|
|
|
- event.stopPropagation();
|
|
|
- setData({ ...el, nameType: "file" })
|
|
|
- setMoveOpen(true)
|
|
|
- }}><img src={"/src/assets/knowledge/move-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.move")}</DropdownMenuItem>
|
|
|
- {hasPermission &&
|
|
|
- <DropdownMenuItem onClick={(event) => {
|
|
|
- event.stopPropagation();
|
|
|
- delConfim(el.id, "file")
|
|
|
- }}>
|
|
|
- <img src={"/src/assets/knowledge/delete-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t('delete')}
|
|
|
- </DropdownMenuItem>
|
|
|
- }
|
|
|
-
|
|
|
+ <DropdownMenuItem onClick={()=>{
|
|
|
+ setType(1)
|
|
|
+ setOpen(true)
|
|
|
+ }}><img src={"/src/assets/knowledge/folder-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.folder")}</DropdownMenuItem>
|
|
|
+ <DropdownMenuItem ><img src={"/src/assets/knowledge/write-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.manualDataset")}</DropdownMenuItem>
|
|
|
+ <DropdownMenuItem ><img src={"/src/assets/knowledge/knowledge-no-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.textDataset")}</DropdownMenuItem>
|
|
|
+ <DropdownMenuItem ><img src={"/src/assets/knowledge/table-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.tableDataset")}</DropdownMenuItem>
|
|
|
</DropdownMenuContent>
|
|
|
</DropdownMenu>
|
|
|
- </TableCell>
|
|
|
- </TableRow>
|
|
|
- ))}
|
|
|
- {libList.map((el,index) => (
|
|
|
- <TableRow key={el.id} className={"file-row"}>
|
|
|
- <TableCell>{index + 1}</TableCell>
|
|
|
- <TableCell onClick={ () => handleLibDetail(el) }>
|
|
|
- <img className={"img-icon"} src={"/src/assets/knowledge/folder-icon.png"}/>
|
|
|
- {el.name}
|
|
|
- </TableCell>
|
|
|
- <TableCell></TableCell>
|
|
|
- <TableCell>{el.update_time.replace('T', ' ')}</TableCell>
|
|
|
- <TableCell>
|
|
|
- {el.status === 3 ? <div className="flex items-center">
|
|
|
- <div className="tooltip" data-tip={el.remark}>
|
|
|
- <span className='text-red-500'>{t('lib.parseFailed')}</span>
|
|
|
- </div>
|
|
|
- <Button variant="link"><RotateCw size={16} onClick={() => handleRetry([el])} /></Button>
|
|
|
- </div> :
|
|
|
- <span className={el.status === 3 && 'text-red-500'}>{[t('lib.parseFailed'), t('lib.parsing'), t('lib.completed'), t('lib.parseFailed')][el.status]}</span>
|
|
|
- }
|
|
|
- </TableCell>
|
|
|
- <TableCell>
|
|
|
- <DropdownMenu>
|
|
|
- <DropdownMenuTrigger>
|
|
|
- <img src={"/src/assets/chat/duihua-gengduo.png"} className={'more-button'}/>
|
|
|
- </DropdownMenuTrigger>
|
|
|
- <DropdownMenuContent>
|
|
|
- <DropdownMenuItem onClick={(event)=>{
|
|
|
- event.stopPropagation();
|
|
|
- setData(el)
|
|
|
- setRenameOpen(true)
|
|
|
- }}><img src={"/src/assets/knowledge/write-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.rename")}</DropdownMenuItem>
|
|
|
- <DropdownMenuItem onClick={(event)=>{
|
|
|
- event.stopPropagation();
|
|
|
- setData(el)
|
|
|
- setMoveOpen(true)
|
|
|
- }}><img src={"/src/assets/knowledge/move-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.move")}</DropdownMenuItem>
|
|
|
- {hasPermission &&
|
|
|
- <DropdownMenuItem onClick={(event) => {
|
|
|
- event.stopPropagation();
|
|
|
- delConfim(el.id, "folder")
|
|
|
- }}>
|
|
|
- <img src={"/src/assets/knowledge/delete-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t('delete')}
|
|
|
- </DropdownMenuItem>
|
|
|
+ </div>
|
|
|
+ }
|
|
|
+ <div className={"search-box"}>
|
|
|
+ <input id="name" ref={nameRef} className={"form-input"} />
|
|
|
+ <button onClick={(e) => search(nameRef.current.value)} className={"search-btn"}>{t('tools.Search.display_name')}</button>
|
|
|
+ <img src={"/src/assets/knowledge/search-icon.png"}/>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <Table>
|
|
|
+ <TableHeader>
|
|
|
+ <TableRow>
|
|
|
+ <TableHead>#</TableHead>
|
|
|
+ <TableHead className="w-[600px]">{t('lib.name')}</TableHead>
|
|
|
+ <TableHead className="items-center">{t('lib.dataTotal')}</TableHead>
|
|
|
+ <TableHead>{t('lib.lastUpdate')}</TableHead>
|
|
|
+ {/* 状态 */}
|
|
|
+ <TableHead>{t('lib.status')}</TableHead>
|
|
|
+ <TableHead className="w-[80px]"></TableHead>
|
|
|
+ </TableRow>
|
|
|
+ </TableHeader>
|
|
|
+ <TableBody>
|
|
|
+ {datalist.map((el,index) => (
|
|
|
+ <TableRow key={el.id} className={"file-row"}>
|
|
|
+ <TableCell>{index + 1}</TableCell>
|
|
|
+ <TableCell>
|
|
|
+ <img className={"img-icon"} src={el.type == 1 ?"/src/assets/chat/write-icon.png":el.type == 2
|
|
|
+ ?"/src/assets/knowledge/knowledge-no-icon.png":el.type == 3 ?"/src/assets/knowledge/table-icon.png":"/src/assets/knowledge/folder-icon.png"}/>
|
|
|
+ {el.file_name}
|
|
|
+ </TableCell>
|
|
|
+ <TableCell></TableCell>
|
|
|
+ <TableCell>{el.update_time.replace('T', ' ')}</TableCell>
|
|
|
+ <TableCell>
|
|
|
+ {el.status === 3 ? <div className="flex items-center">
|
|
|
+ <div className="tooltip" data-tip={el.remark}>
|
|
|
+ <span className='text-red-500'>{t('lib.parseFailed')}</span>
|
|
|
+ </div>
|
|
|
+ <Button variant="link"><RotateCw size={16} onClick={() => handleRetry([el])} /></Button>
|
|
|
+ </div> :
|
|
|
+ <span className={el.status === 3 && 'text-red-500'}>{[t('lib.parseFailed'), t('lib.parsing'), t('lib.completed'), t('lib.parseFailed')][el.status]}</span>
|
|
|
+ }
|
|
|
+ </TableCell>
|
|
|
+ <TableCell>
|
|
|
+ <DropdownMenu>
|
|
|
+ <DropdownMenuTrigger>
|
|
|
+ <img src={"/src/assets/chat/duihua-gengduo.png"} className={'more-button'}/>
|
|
|
+ </DropdownMenuTrigger>
|
|
|
+ <DropdownMenuContent>
|
|
|
+ <DropdownMenuItem onClick={(event)=>{
|
|
|
+ event.stopPropagation();
|
|
|
+ // 数据集重命名
|
|
|
+ setData({ ...el, nameType: "file" })
|
|
|
+ setRenameOpen(true)
|
|
|
+ }}><img src={"/src/assets/knowledge/write-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.rename")}</DropdownMenuItem>
|
|
|
+ <DropdownMenuItem onClick={(event)=>{
|
|
|
+ event.stopPropagation();
|
|
|
+ setData({ ...el, nameType: "file" })
|
|
|
+ setMoveOpen(true)
|
|
|
+ }}><img src={"/src/assets/knowledge/move-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.move")}</DropdownMenuItem>
|
|
|
+ {hasPermission &&
|
|
|
+ <DropdownMenuItem onClick={(event) => {
|
|
|
+ event.stopPropagation();
|
|
|
+ delConfim(el.id, "file")
|
|
|
+ }}>
|
|
|
+ <img src={"/src/assets/knowledge/delete-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t('delete')}
|
|
|
+ </DropdownMenuItem>
|
|
|
+ }
|
|
|
+
|
|
|
+ </DropdownMenuContent>
|
|
|
+ </DropdownMenu>
|
|
|
+ </TableCell>
|
|
|
+ </TableRow>
|
|
|
+ ))}
|
|
|
+ {libList.map((el,index) => (
|
|
|
+ <TableRow key={el.id} className={"file-row"}>
|
|
|
+ <TableCell>{index + 1}</TableCell>
|
|
|
+ <TableCell onClick={ () => handleLibDetail(el) }>
|
|
|
+ <img className={"img-icon"} src={"/src/assets/knowledge/folder-icon.png"}/>
|
|
|
+ {el.name}
|
|
|
+ </TableCell>
|
|
|
+ <TableCell></TableCell>
|
|
|
+ <TableCell>{el.update_time.replace('T', ' ')}</TableCell>
|
|
|
+ <TableCell>
|
|
|
+ {el.status === 3 ? <div className="flex items-center">
|
|
|
+ <div className="tooltip" data-tip={el.remark}>
|
|
|
+ <span className='text-red-500'>{t('lib.parseFailed')}</span>
|
|
|
+ </div>
|
|
|
+ <Button variant="link"><RotateCw size={16} onClick={() => handleRetry([el])} /></Button>
|
|
|
+ </div> :
|
|
|
+ <span className={el.status === 3 && 'text-red-500'}>{[t('lib.parseFailed'), t('lib.parsing'), t('lib.completed'), t('lib.parseFailed')][el.status]}</span>
|
|
|
}
|
|
|
+ </TableCell>
|
|
|
+ <TableCell>
|
|
|
+ <DropdownMenu>
|
|
|
+ <DropdownMenuTrigger>
|
|
|
+ <img src={"/src/assets/chat/duihua-gengduo.png"} className={'more-button'}/>
|
|
|
+ </DropdownMenuTrigger>
|
|
|
+ <DropdownMenuContent>
|
|
|
+ <DropdownMenuItem onClick={(event)=>{
|
|
|
+ event.stopPropagation();
|
|
|
+ setData(el)
|
|
|
+ setRenameOpen(true)
|
|
|
+ }}><img src={"/src/assets/knowledge/write-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.rename")}</DropdownMenuItem>
|
|
|
+ <DropdownMenuItem onClick={(event)=>{
|
|
|
+ event.stopPropagation();
|
|
|
+ setData(el)
|
|
|
+ setMoveOpen(true)
|
|
|
+ }}><img src={"/src/assets/knowledge/move-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t("lib.move")}</DropdownMenuItem>
|
|
|
+ {hasPermission &&
|
|
|
+ <DropdownMenuItem onClick={(event) => {
|
|
|
+ event.stopPropagation();
|
|
|
+ delConfim(el.id, "folder")
|
|
|
+ }}>
|
|
|
+ <img src={"/src/assets/knowledge/delete-icon.png"} style={{width:'13px',height:'13px',marginRight:'8px'}}/>{t('delete')}
|
|
|
+ </DropdownMenuItem>
|
|
|
+ }
|
|
|
+
|
|
|
+ </DropdownMenuContent>
|
|
|
+ </DropdownMenu>
|
|
|
+ </TableCell>
|
|
|
+ </TableRow>
|
|
|
+ ))}
|
|
|
+ </TableBody>
|
|
|
+ </Table>
|
|
|
+ </div>
|
|
|
+ : <ConfigModal reload={reload} id={id}></ConfigModal>
|
|
|
+ }
|
|
|
|
|
|
- </DropdownMenuContent>
|
|
|
- </DropdownMenu>
|
|
|
- </TableCell>
|
|
|
- </TableRow>
|
|
|
- ))}
|
|
|
- </TableBody>
|
|
|
- </Table>
|
|
|
- </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<CreateModal reload={reload} createType={type} parentId={parentId} datalist={datalist} open={open} setOpen={setOpen}></CreateModal>
|