Commit 52c4ccf2 authored by chenshouchao's avatar chenshouchao

feat: 数据管理相关代码增加注释

parent 126e0a9c
import React, { useState, useImperativeHandle, useCallback } from "react"; import React, { useState, useImperativeHandle, useCallback } from "react";
import style from "./index.module.css"; import style from "./index.module.css";
import { TextField } from "@mui/material";
import MyDialog from "@/components/mui/MyDialog"; import MyDialog from "@/components/mui/MyDialog";
import { Button } from "@mui/material"; import { Button } from "@mui/material";
import { checkIsNumberLetterChinese, uuid } from "@/utils/util"; import { uuid } from "@/utils/util";
import { useMessage } from "@/components/MySnackbar"; import { useMessage } from "@/components/MySnackbar";
import { useDropzone } from "react-dropzone"; import { useDropzone } from "react-dropzone";
import Table from "@/components/Material.Ui/Table"; import Table from "@/components/Material.Ui/Table";
......
...@@ -66,34 +66,37 @@ const ProjectData = observer(() => { ...@@ -66,34 +66,37 @@ const ProjectData = observer(() => {
const projectId = useMemo(() => { const projectId = useMemo(() => {
return toJS(currentProjectStore.currentProjectInfo.id); return toJS(currentProjectStore.currentProjectInfo.id);
}, [currentProjectStore]); }, [currentProjectStore]);
// 当前文件路径
const [path, setPath] = useState("/");
const [tableLoadding, setTableLoadding] = useState(false); const [tableLoadding, setTableLoadding] = useState(false);
// 防止用户连续点击文件夹造成路径显示错误 // 防止用户连续点击文件夹造成路径显示错误
const [debounce, setDebounce] = useState(false) const [debounce, setDebounce] = useState(false);
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
// 点击操作列中的按钮 会设置当前点击的文件
const [currentOperateFile, setCurrentOperateFile] = useState<any>(null); const [currentOperateFile, setCurrentOperateFile] = useState<any>(null);
const [deleteloading, setDeleteloading] = useState(false); const [deleteloading, setDeleteloading] = useState(false);
const [path, setPath] = useState("/"); // 1文件 2数据集
const [activeTab, setActiveTab] = useState(1); const [activeTab, setActiveTab] = useState(1);
// 复选框选中的文件名称数组
const [selectIds, setSelectIds] = useState<Array<string>>([]); const [selectIds, setSelectIds] = useState<Array<string>>([]);
let tableRef: any = React.createRef();
useEffect(() => {
setSelectIds([]);
}, [activeTab]);
const handleChangeListType = (e: number) => {
if (isPass('PROJECT_DATA_TYPECHANAGE')) {
setActiveTab(e)
setSelectIds([]);
tableRef?.current?.initSelectedFunc([]);
}
}
const [keyWord, setKeyWord] = useState(""); const [keyWord, setKeyWord] = useState("");
const [fileToken, setFileToken] = useState(""); const [fileToken, setFileToken] = useState("");
// 文件夹、文件列表
// 文件列表
const [list, setList] = useState<any>([]); const [list, setList] = useState<any>([]);
// 数据集列表 不带文件 // 数据集列表 不带文件
const [dataSetList, setDataSetList] = useState<any>([]); const [dataSetList, setDataSetList] = useState<any>([]);
let tableRef: any = React.createRef();
// 切换文件、数据集
const handleChangeListType = (e: number) => {
if (isPass("PROJECT_DATA_TYPECHANAGE")) {
setActiveTab(e);
setSelectIds([]);
tableRef?.current?.initSelectedFunc([]);
}
};
// 列表展示的数据
const showList = useMemo(() => { const showList = useMemo(() => {
if (activeTab === 1) { if (activeTab === 1) {
return list; return list;
...@@ -105,12 +108,14 @@ const ProjectData = observer(() => { ...@@ -105,12 +108,14 @@ const ProjectData = observer(() => {
} }
}, [list, dataSetList, activeTab]); }, [list, dataSetList, activeTab]);
// 获取文件token
const { run: getDataFileTokenRun } = useMyRequest(getDataFileToken, { const { run: getDataFileTokenRun } = useMyRequest(getDataFileToken, {
onSuccess: (res: any) => { onSuccess: (res: any) => {
setFileToken(res.data); setFileToken(res.data);
}, },
}); });
// 全局搜索数据集
const { run: getDataFileSearchRun } = useMyRequest(getDataFileSearch, { const { run: getDataFileSearchRun } = useMyRequest(getDataFileSearch, {
onSuccess: (res: any) => { onSuccess: (res: any) => {
const dataSetList = res.data.map((item: any) => { const dataSetList = res.data.map((item: any) => {
...@@ -121,11 +126,12 @@ const ProjectData = observer(() => { ...@@ -121,11 +126,12 @@ const ProjectData = observer(() => {
}); });
setDataSetList(dataSetList); setDataSetList(dataSetList);
setSelectIds([]); setSelectIds([]);
setDebounce(false) setDebounce(false);
tableRef?.current?.initSelectedFunc([]); tableRef?.current?.initSelectedFunc([]);
}, },
}); });
// 获取某路径下的数据集
const { run: getDataFindRun } = useMyRequest(getDataFind, { const { run: getDataFindRun } = useMyRequest(getDataFind, {
onSuccess: (res: any) => { onSuccess: (res: any) => {
const dataSetList = res.data.map((item: any) => { const dataSetList = res.data.map((item: any) => {
...@@ -136,11 +142,12 @@ const ProjectData = observer(() => { ...@@ -136,11 +142,12 @@ const ProjectData = observer(() => {
}); });
setDataSetList(dataSetList); setDataSetList(dataSetList);
setSelectIds([]); setSelectIds([]);
setDebounce(false) setDebounce(false);
tableRef?.current?.initSelectedFunc([]); tableRef?.current?.initSelectedFunc([]);
}, },
}); });
// 获取某路径下的数据集
const getDataSetList = useCallback(() => { const getDataSetList = useCallback(() => {
if (keyWord) { if (keyWord) {
return; return;
...@@ -152,6 +159,7 @@ const ProjectData = observer(() => { ...@@ -152,6 +159,7 @@ const ProjectData = observer(() => {
} }
}, [keyWord, path, projectId, getDataFindRun]); }, [keyWord, path, projectId, getDataFindRun]);
// 全局搜索数据集
const getDataSetListSearch = useCallback(() => { const getDataSetListSearch = useCallback(() => {
if (keyWord) { if (keyWord) {
return getDataFileSearchRun({ return getDataFileSearchRun({
...@@ -185,7 +193,7 @@ const ProjectData = observer(() => { ...@@ -185,7 +193,7 @@ const ProjectData = observer(() => {
setList([]); setList([]);
} }
setSelectIds([]); setSelectIds([]);
setDebounce(false) setDebounce(false);
}); });
} }
}, [fileToken, path, projectId, keyWord]); }, [fileToken, path, projectId, keyWord]);
...@@ -216,14 +224,15 @@ const ProjectData = observer(() => { ...@@ -216,14 +224,15 @@ const ProjectData = observer(() => {
setList([]); setList([]);
} }
setSelectIds([]); setSelectIds([]);
setDebounce(false) setDebounce(false);
}); });
} }
} }
}, [fileToken, projectId, keyWord, getList]); }, [fileToken, projectId, keyWord, getList]);
// 刷新
const handleRefresh = () => { const handleRefresh = () => {
if (isPass('PROJECT_DATA_REFRESH', 'USER')) { if (isPass("PROJECT_DATA_REFRESH", "USER")) {
tableRef?.current?.initSelectedFunc([]); tableRef?.current?.initSelectedFunc([]);
setSelectIds([]); setSelectIds([]);
if (keyWord) { if (keyWord) {
...@@ -236,12 +245,14 @@ const ProjectData = observer(() => { ...@@ -236,12 +245,14 @@ const ProjectData = observer(() => {
} }
}; };
// 项目切换时重新获取文件token
useEffect(() => { useEffect(() => {
getDataFileTokenRun({ getDataFileTokenRun({
id: currentProjectStore.currentProjectInfo.id as string, id: currentProjectStore.currentProjectInfo.id as string,
}); });
}, [getDataFileTokenRun, currentProjectStore]); }, [getDataFileTokenRun, currentProjectStore]);
// 搜索值改变
const handleKeyWordChange = (e: any) => { const handleKeyWordChange = (e: any) => {
if (e.target.value.length > 30) { if (e.target.value.length > 30) {
return; return;
...@@ -249,6 +260,7 @@ const ProjectData = observer(() => { ...@@ -249,6 +260,7 @@ const ProjectData = observer(() => {
setKeyWord(e.target.value); setKeyWord(e.target.value);
}; };
// 按回车搜索
const handleKeyWordChangeKeyUp = (e: any) => { const handleKeyWordChangeKeyUp = (e: any) => {
if (e.keyCode === 13) { if (e.keyCode === 13) {
searchFileList(); searchFileList();
...@@ -257,27 +269,36 @@ const ProjectData = observer(() => { ...@@ -257,27 +269,36 @@ const ProjectData = observer(() => {
}; };
// todo name sort // todo name sort
// table配置
const versionsHeadCells = [ const versionsHeadCells = [
{ id: "checkbox" }, { id: "checkbox" },
{ id: "name", numeric: false, label: "名称", width: "25%" }, { id: "name", numeric: false, label: "名称", width: "25%" },
{ id: "size", numeric: false, label: "大小", width: "25%", sort: true }, { id: "size", numeric: false, label: "大小", width: "25%", sort: true },
{ id: "mtime", numeric: false, label: "创建时间", width: "25%", sort: true }, {
id: "mtime",
numeric: false,
label: "创建时间",
width: "25%",
sort: true,
},
{ id: "caozuo", numeric: false, label: "操作", width: "25%" }, { id: "caozuo", numeric: false, label: "操作", width: "25%" },
]; ];
// 点击复选框
const hanldeCheckbox = (e: any) => { const hanldeCheckbox = (e: any) => {
const selectarr = e.map((item: any) => { const selectarr = e.map((item: any) => {
let andIndex = item.indexOf("&index=") let andIndex = item.indexOf("&index=");
return item.slice(5, andIndex) return item.slice(5, andIndex);
}) });
setSelectIds(selectarr); setSelectIds(selectarr);
}; };
// 文件夹下钻
const handleViewFolders = (item: any) => { const handleViewFolders = (item: any) => {
if (debounce) { if (debounce) {
return return;
} else { } else {
setDebounce(true) setDebounce(true);
if (path === "/") { if (path === "/") {
setPath(`/${item.name}`); setPath(`/${item.name}`);
} else { } else {
...@@ -286,11 +307,13 @@ const ProjectData = observer(() => { ...@@ -286,11 +307,13 @@ const ProjectData = observer(() => {
} }
}; };
// 显示删除确认框
const hanleDeleteFile = (item: any) => { const hanleDeleteFile = (item: any) => {
setCurrentOperateFile(item); setCurrentOperateFile(item);
setDeleteDialogOpen(true); setDeleteDialogOpen(true);
}; };
// table配置
const renderName = (item: any) => { const renderName = (item: any) => {
if (item.type === "directory") { if (item.type === "directory") {
return ( return (
...@@ -322,23 +345,28 @@ const ProjectData = observer(() => { ...@@ -322,23 +345,28 @@ const ProjectData = observer(() => {
} }
}; };
// table配置
const renderSize = (item: any) => { const renderSize = (item: any) => {
if (item.type === "dataSet") { if (item.type === "dataSet") {
return `${item.size}条`; return `${item.size}条`;
} }
return `${item.size ? String((Number(item.size)/1048576).toFixed(2)) + 'MB' : '-'}`; return `${
item.size ? String((Number(item.size) / 1048576).toFixed(2)) + "MB" : "-"
}`;
}; };
// table配置
const renderMtime = (item: any) => { const renderMtime = (item: any) => {
return String(moment(item.mtime).format("YYYY-MM-DD hh:mm:ss")) return String(moment(item.mtime).format("YYYY-MM-DD hh:mm:ss"));
}; };
// table配置
const renderButtons = (item: any) => { const renderButtons = (item: any) => {
return ( return (
<span> <span>
{item.type !== 'dataSet' && item.type !== 'directory' && ( {item.type !== "dataSet" && item.type !== "directory" && (
<Button <Button
sx={{ position: "relative", left: "-18px", }} sx={{ position: "relative", left: "-18px" }}
variant="text" variant="text"
size="small" size="small"
disabled={!isPass("PROJECT_DATA_DOWNLOAD")} disabled={!isPass("PROJECT_DATA_DOWNLOAD")}
...@@ -351,7 +379,9 @@ const ProjectData = observer(() => { ...@@ -351,7 +379,9 @@ const ProjectData = observer(() => {
variant="text" variant="text"
size="small" size="small"
onClick={() => hanleShowMoveFileDialog(item)} onClick={() => hanleShowMoveFileDialog(item)}
disabled={selectIds.length > 0 && !isPass("PROJECT_DATA_MOVE", 'USER')} disabled={
selectIds.length > 0 && !isPass("PROJECT_DATA_MOVE", "USER")
}
> >
移动至 移动至
</Button> </Button>
...@@ -361,7 +391,9 @@ const ProjectData = observer(() => { ...@@ -361,7 +391,9 @@ const ProjectData = observer(() => {
size="small" size="small"
color="error" color="error"
onClick={() => hanleDeleteFile(item)} onClick={() => hanleDeleteFile(item)}
disabled={selectIds.length > 0 && !isPass("PROJECT_DATA_DELETE", 'USER')} disabled={
selectIds.length > 0 && !isPass("PROJECT_DATA_DELETE", "USER")
}
> >
删除 删除
</Button> </Button>
...@@ -369,17 +401,20 @@ const ProjectData = observer(() => { ...@@ -369,17 +401,20 @@ const ProjectData = observer(() => {
); );
}; };
// 文件上传
let UpLoaderFileRef: any = React.createRef(); let UpLoaderFileRef: any = React.createRef();
const hanleShowUpLoaderFileDialog = () => { const hanleShowUpLoaderFileDialog = () => {
UpLoaderFileRef.current.showDialog(); UpLoaderFileRef.current.showDialog();
}; };
// 新增文件
let addFolderRef: any = React.createRef(); let addFolderRef: any = React.createRef();
const hanleShowAddFolderDialog = () => { const hanleShowAddFolderDialog = () => {
addFolderRef.current.showDialog(); addFolderRef.current.showDialog();
}; };
// 文件移动
let moveFileRef: any = React.createRef(); let moveFileRef: any = React.createRef();
const hanleShowMoveFileDialog = (item: any) => { const hanleShowMoveFileDialog = (item: any) => {
...@@ -387,10 +422,12 @@ const ProjectData = observer(() => { ...@@ -387,10 +422,12 @@ const ProjectData = observer(() => {
moveFileRef.current.showDialog(); moveFileRef.current.showDialog();
}; };
// 删除文件
const handleDeleteDialogClose = () => { const handleDeleteDialogClose = () => {
setDeleteDialogOpen(false); setDeleteDialogOpen(false);
}; };
// 删除数据集请求
const { run: getDataFileDelRun } = useMyRequest(getDataFileDel, { const { run: getDataFileDelRun } = useMyRequest(getDataFileDel, {
onSuccess: (res: any) => { onSuccess: (res: any) => {
Message.success("删除成功"); Message.success("删除成功");
...@@ -400,6 +437,7 @@ const ProjectData = observer(() => { ...@@ -400,6 +437,7 @@ const ProjectData = observer(() => {
}, },
}); });
// 删除流程判断待优化
const handleDelete = () => { const handleDelete = () => {
let deletePath = ""; let deletePath = "";
if (currentOperateFile) { if (currentOperateFile) {
...@@ -485,16 +523,19 @@ const ProjectData = observer(() => { ...@@ -485,16 +523,19 @@ const ProjectData = observer(() => {
} }
}; };
// 批量移动
const handleBatchMove = () => { const handleBatchMove = () => {
setCurrentOperateFile(null); setCurrentOperateFile(null);
moveFileRef.current.showDialog(); moveFileRef.current.showDialog();
}; };
// 批量删除
const handleBatchDelete = () => { const handleBatchDelete = () => {
setCurrentOperateFile(null); setCurrentOperateFile(null);
setDeleteDialogOpen(true); setDeleteDialogOpen(true);
}; };
// 前端展示的文件路径
const showPath = useMemo(() => { const showPath = useMemo(() => {
if (path === "/") { if (path === "/") {
return <span className={style.showPathSpan}>ProjectData</span>; return <span className={style.showPathSpan}>ProjectData</span>;
...@@ -575,7 +616,8 @@ const ProjectData = observer(() => { ...@@ -575,7 +616,8 @@ const ProjectData = observer(() => {
style={{ marginRight: "12px" }} style={{ marginRight: "12px" }}
onClick={hanleShowUpLoaderFileDialog} onClick={hanleShowUpLoaderFileDialog}
disabled={ disabled={
selectIds.length !== 0 || !isPass("PROJECT_DATA_UPLOAD", 'USER') selectIds.length !== 0 ||
!isPass("PROJECT_DATA_UPLOAD", "USER")
} }
> >
上传文件 上传文件
...@@ -586,7 +628,8 @@ const ProjectData = observer(() => { ...@@ -586,7 +628,8 @@ const ProjectData = observer(() => {
size="small" size="small"
onClick={hanleShowAddFolderDialog} onClick={hanleShowAddFolderDialog}
disabled={ disabled={
selectIds.length !== 0 || !isPass("PROJECT_DATA_ADDDIR", 'USER') selectIds.length !== 0 ||
!isPass("PROJECT_DATA_ADDDIR", "USER")
} }
> >
新建文件夹 新建文件夹
...@@ -646,7 +689,7 @@ const ProjectData = observer(() => { ...@@ -646,7 +689,7 @@ const ProjectData = observer(() => {
aria-label="refreshIcon" aria-label="refreshIcon"
size="small" size="small"
onClick={handleRefresh} onClick={handleRefresh}
disabled={!isPass('PROJECT_DATA_REFRESH', 'USER')} disabled={!isPass("PROJECT_DATA_REFRESH", "USER")}
> >
<RefreshIcon /> <RefreshIcon />
</IconButton> </IconButton>
...@@ -674,12 +717,12 @@ const ProjectData = observer(() => { ...@@ -674,12 +717,12 @@ const ProjectData = observer(() => {
caozuo: renderButtons(item), caozuo: renderButtons(item),
}))} }))}
></Table> ></Table>
{ {showList.length === 0 && (
showList.length === 0 && <div className={style.noDataBox}> <div className={style.noDataBox}>
<img className={style.noDataImg} src={noFile} alt="" /> <img className={style.noDataImg} src={noFile} alt="" />
<span className={style.noDataText}>暂未开启模板</span> <span className={style.noDataText}>暂未开启模板</span>
</div> </div>
} )}
</div> </div>
{selectIds.length > 1 && ( {selectIds.length > 1 && (
<div className={style.projectDataStickyBox}> <div className={style.projectDataStickyBox}>
...@@ -689,7 +732,7 @@ const ProjectData = observer(() => { ...@@ -689,7 +732,7 @@ const ProjectData = observer(() => {
size="small" size="small"
style={{ marginRight: "12px" }} style={{ marginRight: "12px" }}
onClick={handleBatchDelete} onClick={handleBatchDelete}
disabled={!isPass("PROJECT_DATA_DELETE", 'USER')} disabled={!isPass("PROJECT_DATA_DELETE", "USER")}
> >
批量删除({selectIds.length} 批量删除({selectIds.length}
</Button> </Button>
...@@ -699,7 +742,7 @@ const ProjectData = observer(() => { ...@@ -699,7 +742,7 @@ const ProjectData = observer(() => {
size="small" size="small"
style={{ marginRight: "24px" }} style={{ marginRight: "24px" }}
onClick={handleBatchMove} onClick={handleBatchMove}
disabled={!isPass("PROJECT_DATA_MOVE", 'USER')} disabled={!isPass("PROJECT_DATA_MOVE", "USER")}
> >
批量移动({selectIds.length} 批量移动({selectIds.length}
</Button> </Button>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment