Commit 7a3b2e18 by zhaochengxiang

资产浏览

parent 94ed6c1a
......@@ -14,21 +14,19 @@ const RelationContainer = (props) => {
useEffect(() => {
getDirectoryData();
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
useEffect(() => {
if ((nodeParams?.expandId||'') !== '') {
generateExpandNodeRelationData();
} else if ((nodeParams?.centerId||'')!== '' && (dirs||[]).length>0) {
generateNodes();
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [dirs])
useEffect(() => {
generateRelationData();
} else {
setRelationData(null);
}
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [nodeParams])
}, [nodeParams, dirs])
const getDirectoryData = () => {
......@@ -51,31 +49,38 @@ const RelationContainer = (props) => {
}
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) {
(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 });
recursion(item.children, item.nodeId, currentLevelId);
})
}
recursion(dirs, null, null);
recursion(centerDirectory.children||[], centerDirectory.nodeId, '0');
setNodes(newNodes);
generateRelationData(newNodes);
}
const generateRelationData = (data = nodes) => {
if ((nodeParams?.expandId||'') !== '') {
generateExpandNodeRelationData(data);
} else if ((nodeParams?.centerId||'') !== '') {
generateCenterNodeRelationData(data);
} else {
setRelationData(null);
generateCenterNodeRelationData(newNodes);
}
}
......@@ -106,7 +111,6 @@ const RelationContainer = (props) => {
}
recursion(newRelationData.children, rootNode.id);
setRelationData(newRelationData);
}
}
......@@ -122,17 +126,21 @@ const RelationContainer = (props) => {
const currentNode = data[index];
(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;
}
if (node.levelId.split('-').length >2) {
if (node.levelId.split('-').length<=currentNode.levelId.split('-').length) {
node.simple = (currentNode.levelId.slice(0, node.levelId.length)!==node.levelId);
} else if (node.levelId.split('-').length===currentNode.levelId.split('-').length+1) {
node.simple = (node.levelId.slice(0, currentNode.levelId.length)!==currentNode.levelId);
} else if (node.levelId.slice(0, currentNode.levelId.length)!==currentNode.levelId) {
node.simple = true;
if (node.levelId.split('-').length<currentNode.levelId.split('-').length) {
node.simple = (currentNode.levelId.slice(0, nodeLevelId.length)!==nodeLevelId);
} else if (node.levelId.split('-').length===currentNode.levelId.split('-').length) {
node.simple = (node.levelId !== currentNode.levelId);
} else {
node.simple = (node.levelId.slice(0, currentLevelId.length)!==currentLevelId);
}
}
})
......
......@@ -32,7 +32,6 @@ const AssetBrowse = (props) => {
setNodeParams(data);
}
let nodeId = '';
if ((expandId||'') !== '') {
nodeId = expandId;
......@@ -47,7 +46,7 @@ const AssetBrowse = (props) => {
return (
<div className={classes}>
<div className='left'>
<AssetTree onSelect={onTreeSelect} reference={reference} {...props} />
<AssetTree centerId={centerId} onSelect={onTreeSelect} reference={reference} {...props} />
</div>
<div className='tree-toggle-wrap'>
<div className='tree-toggle' onClick={treeToggleClick}>
......
......@@ -13,7 +13,7 @@ import './AssetTree.less';
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 [ loading, setLoading ] = useState(false);
const [ treeData, setTreeData ] = useState([]);
......@@ -51,6 +51,13 @@ const AssetTree = (props) => {
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [tableId])
useEffect(() => {
if ((centerId||'') !== '') {
centerIdChanged();
}
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [centerId])
const getDataAssetLocationThenGetTreeData = () => {
setLoading(true);
dispatch({
......@@ -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) => {
for (let i = 0; i < treeData.length; 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