Commit 09bbecc5 authored by chenshouchao's avatar chenshouchao

feat:移动文件增加自己的文件置灰判断

parent 6e80e2e5
...@@ -6,6 +6,7 @@ import TreeItem from "@mui/lab/TreeItem"; ...@@ -6,6 +6,7 @@ import TreeItem from "@mui/lab/TreeItem";
interface TreeItemType { interface TreeItemType {
id: string; id: string;
name: string; name: string;
disabled?: boolean;
subdirs?: readonly TreeItemType[]; subdirs?: readonly TreeItemType[];
} }
...@@ -24,6 +25,7 @@ type MyTreeViewProps = { ...@@ -24,6 +25,7 @@ type MyTreeViewProps = {
interface RenderTree { interface RenderTree {
id: string | number; id: string | number;
name: string; name: string;
disabled?: boolean;
subdirs?: readonly RenderTree[]; subdirs?: readonly RenderTree[];
} }
...@@ -47,6 +49,7 @@ const MyTreeView = (props: MyTreeViewProps) => { ...@@ -47,6 +49,7 @@ const MyTreeView = (props: MyTreeViewProps) => {
idFunc ? idFunc(nodes) : nodes.id || `${nodes.name}${index}` idFunc ? idFunc(nodes) : nodes.id || `${nodes.name}${index}`
)} )}
label={renderLabel === undefined ? nodes.name : renderLabel(nodes.name)} label={renderLabel === undefined ? nodes.name : renderLabel(nodes.name)}
disabled={nodes?.disabled ? true : false}
> >
{Array.isArray(nodes.subdirs) {Array.isArray(nodes.subdirs)
? nodes.subdirs.map((node, i) => renderTreeObj(node, i)) ? nodes.subdirs.map((node, i) => renderTreeObj(node, i))
......
...@@ -42,8 +42,30 @@ const MoveFile = (props: any) => { ...@@ -42,8 +42,30 @@ const MoveFile = (props: any) => {
} }
); );
// 要移动的文件夹 之后用来隐藏文件夹树中同路径的文件夹
const moveFolderPathArr = useMemo(() => {
let moveFolderArr: any = [];
let pathArr = [];
if (currentOperateFile) {
if (currentOperateFile.type === "directory") {
moveFolderArr = [currentOperateFile];
} else {
moveFolderArr = [];
}
} else {
moveFolderArr = showList.filter((item: any) => {
return selectIds.indexOf(item.name) !== -1 && item.type === "directory";
});
}
pathArr = moveFolderArr.map((item: any) => {
return path === "/" ? `/${item.name}` : `${path}/${item.name}`;
});
return pathArr;
}, [selectIds, showList, currentOperateFile, path]);
const [newPath, setNewPath] = useState("/"); const [newPath, setNewPath] = useState("/");
const [rootActive, setRootActive] = useState(true); const [rootActive, setRootActive] = useState(true);
const [moveFileSubmitloading, setMoveFileSubmitloading] = useState(false);
const [treeData, setTreeData] = useState<any>([]); const [treeData, setTreeData] = useState<any>([]);
...@@ -56,18 +78,38 @@ const MoveFile = (props: any) => { ...@@ -56,18 +78,38 @@ const MoveFile = (props: any) => {
false false
)?.then((res) => { )?.then((res) => {
if (Array.isArray(res.data)) { if (Array.isArray(res.data)) {
setTreeData(res.data); let arr = res.data;
const deleteRepeatFolder = (folderTree: any) => {
folderTree.forEach((item: any, index: number) => {
if (
moveFolderPathArr.indexOf(
`${item.dir.substr(1)}${item.name}`
) !== -1
) {
item.disabled = true;
// folderTree.splice(index, 1);
} else {
item.disabled = false;
if (item.subdirs.length > 0) {
deleteRepeatFolder(item.subdirs);
}
}
});
};
deleteRepeatFolder(arr);
setTreeData(arr);
} else { } else {
setTreeData([]); setTreeData([]);
} }
}); });
} }
}, [fileToken, projectId]); }, [fileToken, projectId, moveFolderPathArr]);
let moveFileDialogRef: any = React.createRef(); let moveFileDialogRef: any = React.createRef();
const showDialog = () => { const showDialog = () => {
moveFileDialogRef.current.handleClickOpen(); moveFileDialogRef.current.handleClickOpen();
setTreeData([]);
getTree(); getTree();
}; };
...@@ -100,6 +142,7 @@ const MoveFile = (props: any) => { ...@@ -100,6 +142,7 @@ const MoveFile = (props: any) => {
// 移动成功后的操作 // 移动成功后的操作
const successMove = () => { const successMove = () => {
Message.success("移动成功!"); Message.success("移动成功!");
setMoveFileSubmitloading(false);
moveFileDialogRef?.current?.handleClose(); moveFileDialogRef?.current?.handleClose();
refresh(); refresh();
}; };
...@@ -111,6 +154,7 @@ const MoveFile = (props: any) => { ...@@ -111,6 +154,7 @@ const MoveFile = (props: any) => {
} else if (newPath === path) { } else if (newPath === path) {
Message.error("指定的目标路径为数据原路径,无需移动。"); Message.error("指定的目标路径为数据原路径,无需移动。");
} else { } else {
setMoveFileSubmitloading(true);
if (!currentOperateFile) { if (!currentOperateFile) {
// 批量移动 // 批量移动
// 要移动的数据集 // 要移动的数据集
...@@ -266,8 +310,6 @@ const MoveFile = (props: any) => { ...@@ -266,8 +310,6 @@ const MoveFile = (props: any) => {
setRootActive(true); setRootActive(true);
}; };
const moveFileSubmitloading = false;
return ( return (
<MyDialog <MyDialog
handleSubmit={handleMoveFileSubmit} handleSubmit={handleMoveFileSubmit}
......
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