Commit 7a3b2e18 by zhaochengxiang

资产浏览

parent 94ed6c1a
...@@ -14,21 +14,19 @@ const RelationContainer = (props) => { ...@@ -14,21 +14,19 @@ const RelationContainer = (props) => {
useEffect(() => { useEffect(() => {
getDirectoryData(); getDirectoryData();
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, []) }, [])
useEffect(() => { useEffect(() => {
if ((nodeParams?.expandId||'') !== '') {
generateExpandNodeRelationData();
} else if ((nodeParams?.centerId||'')!== '' && (dirs||[]).length>0) {
generateNodes(); generateNodes();
} else {
//eslint-disable-next-line react-hooks/exhaustive-deps setRelationData(null);
}, [dirs]) }
useEffect(() => {
generateRelationData();
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, [nodeParams]) }, [nodeParams, dirs])
const getDirectoryData = () => { const getDirectoryData = () => {
...@@ -51,31 +49,38 @@ const RelationContainer = (props) => { ...@@ -51,31 +49,38 @@ const RelationContainer = (props) => {
} }
const generateNodes = () => { const generateNodes = () => {
let newNodes = [];
let centerDirectory = {};
function recursionToGetCenterDirectory(data) {
(data||[]).forEach((item, index) => {
if (item.nodeId === nodeParams?.centerId) {
centerDirectory = item;
return;
}
recursionToGetCenterDirectory(item.children);
})
}
recursionToGetCenterDirectory(dirs);
if (centerDirectory.nodeId) {
let newNodes = [{id: centerDirectory.nodeId, pid: null, levelId: '0', simple: false, show: true, text: centerDirectory.text }];
function recursion(data, parentId, parentLevelId) { function recursion(data, parentId, parentLevelId) {
(data||[]).forEach((item, index) => { (data||[]).forEach((item, index) => {
let currentLevelId = (parentLevelId)?`${parentLevelId}-${index}`:`${index}`; let currentLevelId = `${parentLevelId}-${index}`;
newNodes.push({ id: item.nodeId, pid: parentId, levelId: currentLevelId, simple: (currentLevelId.split('-').length>=3)?true: false, show: (currentLevelId.split('-').length>3)?false:true, text: item.text }); newNodes.push({ id: item.nodeId, pid: parentId, levelId: currentLevelId, simple: (currentLevelId.split('-').length>=3)?true: false, show: (currentLevelId.split('-').length>3)?false:true, text: item.text });
recursion(item.children, item.nodeId, currentLevelId); recursion(item.children, item.nodeId, currentLevelId);
}) })
} }
recursion(dirs, null, null); recursion(centerDirectory.children||[], centerDirectory.nodeId, '0');
setNodes(newNodes); setNodes(newNodes);
generateCenterNodeRelationData(newNodes);
generateRelationData(newNodes);
}
const generateRelationData = (data = nodes) => {
if ((nodeParams?.expandId||'') !== '') {
generateExpandNodeRelationData(data);
} else if ((nodeParams?.centerId||'') !== '') {
generateCenterNodeRelationData(data);
} else {
setRelationData(null);
} }
} }
...@@ -106,7 +111,6 @@ const RelationContainer = (props) => { ...@@ -106,7 +111,6 @@ const RelationContainer = (props) => {
} }
recursion(newRelationData.children, rootNode.id); recursion(newRelationData.children, rootNode.id);
setRelationData(newRelationData); setRelationData(newRelationData);
} }
} }
...@@ -122,17 +126,21 @@ const RelationContainer = (props) => { ...@@ -122,17 +126,21 @@ const RelationContainer = (props) => {
const currentNode = data[index]; const currentNode = data[index];
(data||[]).forEach(node => { (data||[]).forEach(node => {
if (((node.levelId.split('-').length===currentNode.levelId.split('-').length+1)||(node.levelId.split('-').length===currentNode.levelId.split('-').length+2)) && node.levelId.slice(0, currentNode.levelId.length)===currentNode.levelId) {
let nodeLevelId = `${node.levelId}-`;
let currentLevelId = `${currentNode.levelId}-`;
if (((node.levelId.split('-').length===currentNode.levelId.split('-').length+1)||(node.levelId.split('-').length===currentNode.levelId.split('-').length+2)) && node.levelId.slice(0, currentLevelId.length)===currentLevelId) {
node.show = true; node.show = true;
} }
if (node.levelId.split('-').length >2) { if (node.levelId.split('-').length >2) {
if (node.levelId.split('-').length<=currentNode.levelId.split('-').length) { if (node.levelId.split('-').length<currentNode.levelId.split('-').length) {
node.simple = (currentNode.levelId.slice(0, node.levelId.length)!==node.levelId); node.simple = (currentNode.levelId.slice(0, nodeLevelId.length)!==nodeLevelId);
} else if (node.levelId.split('-').length===currentNode.levelId.split('-').length+1) { } else if (node.levelId.split('-').length===currentNode.levelId.split('-').length) {
node.simple = (node.levelId.slice(0, currentNode.levelId.length)!==currentNode.levelId); node.simple = (node.levelId !== currentNode.levelId);
} else if (node.levelId.slice(0, currentNode.levelId.length)!==currentNode.levelId) { } else {
node.simple = true; node.simple = (node.levelId.slice(0, currentLevelId.length)!==currentLevelId);
} }
} }
}) })
......
...@@ -32,7 +32,6 @@ const AssetBrowse = (props) => { ...@@ -32,7 +32,6 @@ const AssetBrowse = (props) => {
setNodeParams(data); setNodeParams(data);
} }
let nodeId = ''; let nodeId = '';
if ((expandId||'') !== '') { if ((expandId||'') !== '') {
nodeId = expandId; nodeId = expandId;
...@@ -47,7 +46,7 @@ const AssetBrowse = (props) => { ...@@ -47,7 +46,7 @@ const AssetBrowse = (props) => {
return ( return (
<div className={classes}> <div className={classes}>
<div className='left'> <div className='left'>
<AssetTree onSelect={onTreeSelect} reference={reference} {...props} /> <AssetTree centerId={centerId} onSelect={onTreeSelect} reference={reference} {...props} />
</div> </div>
<div className='tree-toggle-wrap'> <div className='tree-toggle-wrap'>
<div className='tree-toggle' onClick={treeToggleClick}> <div className='tree-toggle' onClick={treeToggleClick}>
......
...@@ -13,7 +13,7 @@ import './AssetTree.less'; ...@@ -13,7 +13,7 @@ import './AssetTree.less';
const AssetTree = (props) => { const AssetTree = (props) => {
const { checkable = false, onSelect, className, onCheck, tableId, reference=AssetManageReference, showCustom=true, onDirectoryChange } = props; const { checkable = false, onSelect, className, onCheck, tableId, reference=AssetManageReference, showCustom=true, onDirectoryChange, centerId } = props;
const [ keyword, setKeyword ] = useState(''); const [ keyword, setKeyword ] = useState('');
const [ loading, setLoading ] = useState(false); const [ loading, setLoading ] = useState(false);
const [ treeData, setTreeData ] = useState([]); const [ treeData, setTreeData ] = useState([]);
...@@ -51,6 +51,13 @@ const AssetTree = (props) => { ...@@ -51,6 +51,13 @@ const AssetTree = (props) => {
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, [tableId]) }, [tableId])
useEffect(() => {
if ((centerId||'') !== '') {
centerIdChanged();
}
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [centerId])
const getDataAssetLocationThenGetTreeData = () => { const getDataAssetLocationThenGetTreeData = () => {
setLoading(true); setLoading(true);
dispatch({ dispatch({
...@@ -173,6 +180,46 @@ const AssetTree = (props) => { ...@@ -173,6 +180,46 @@ const AssetTree = (props) => {
}); });
} }
const centerIdChanged = () => {
let defaultItem = null;
function recursion(subCatalogs) {
if ((subCatalogs||[]).length===0) return;
(subCatalogs||[]).forEach(catalog=> {
if (catalog.nodeId === centerId) {
defaultItem = catalog;
}
recursion(catalog.children);
})
}
if ((centerId||'') !== '') {
recursion(treeData);
}
if (defaultItem) {
const expandedKeys = (dataList||[])
.map(item => {
if (item.key.indexOf(centerId) > -1) {
return getParentKey(item.key, treeData);
}
return null;
})
.filter((item, i, self) => item && self.indexOf(item) === i);
setExpandedKeys(expandedKeys);
setAutoExpandParent(true);
setCurrentDirId(defaultItem.nodeId);
setCurrentDirType(defaultItem.type||'');
}
}
const generateList = (treeData, list) => { const generateList = (treeData, list) => {
for (let i = 0; i < treeData.length; i++) { for (let i = 0; i < treeData.length; i++) {
const node = treeData[i]; const node = treeData[i];
......
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