diff --git a/core/core-frontend/src/utils/treeSortUtils.ts b/core/core-frontend/src/utils/treeSortUtils.ts index 5f72db52f3..9c5264665f 100644 --- a/core/core-frontend/src/utils/treeSortUtils.ts +++ b/core/core-frontend/src/utils/treeSortUtils.ts @@ -1,6 +1,22 @@ import { BusiTreeNode } from '@/models/tree/TreeNode' import _ from 'lodash' +export function treeParentWeight(tree: BusiTreeNode[], pWeight) { + const pWeightResult = {} + weightCheckCircle(tree, pWeightResult, pWeight) + console.log('===test===' + JSON.stringify(pWeightResult)) + return pWeightResult +} + +export function weightCheckCircle(tree: BusiTreeNode[], pWeightResult, pWeight) { + _.forEach(tree, node => { + pWeightResult[node.id] = pWeight + if (node.children && node.children.length > 0) { + weightCheckCircle(node.children, pWeightResult, node.weight) + } + }) +} + export default function treeSort(tree: BusiTreeNode[], sortType: string) { const result = _.cloneDeep(tree) sortCircle(result, sortType) @@ -14,7 +30,6 @@ export function sortCircle(tree: BusiTreeNode[], sortType: string) { sortCircle(node.children, sortType) } }) - return tree } export const sortPer = (subTree: BusiTreeNode[], sortType: string) => { diff --git a/core/core-frontend/src/views/common/DeResourceTree.vue b/core/core-frontend/src/views/common/DeResourceTree.vue index 801a120f8a..870d7d6995 100644 --- a/core/core-frontend/src/views/common/DeResourceTree.vue +++ b/core/core-frontend/src/views/common/DeResourceTree.vue @@ -45,7 +45,7 @@ import DeResourceCreateOptV2 from '@/views/common/DeResourceCreateOptV2.vue' import { useCache } from '@/hooks/web/useCache' import { findParentIdByChildIdRecursive } from '@/utils/canvasUtils' import { XpackComponent } from '@/components/plugin' -import treeSort from '@/utils/treeSortUtils' +import treeSort, { treeParentWeight } from '@/utils/treeSortUtils' import router from '@/router' const { wsCache } = useCache() @@ -86,6 +86,7 @@ const resourceGroupOpt = ref() const resourceCreateOpt = ref() const returnMounted = ref(false) const state = reactive({ + pWeightMap: {}, curSortType: 'time_desc', resourceTree: [] as BusiTreeNode[], originResourceTree: [] as BusiTreeNode[], @@ -160,32 +161,52 @@ const { handleDrop, allowDrop, handleDragStart } = treeDraggbleChart( 'resourceTree', curCanvasType.value ) -const menuList = computed(() => { - const list = [ - { - label: t('visualization.copy'), //'复制', - command: 'copy', - svgName: dvCopyDark - }, - { - label: t('visualization.move_to'), //'移动到', - command: 'move', - svgName: dvMove - }, - { - label: t('visualization.rename'), //'重命名', - command: 'rename', - svgName: dvRename - }, - { - label: t('visualization.delete'), //'删除', - command: 'delete', - svgName: dvDelete, - divided: true - } - ] - return list -}) + +const menuListWeight = id => { + const pWeight = state.pWeightMap[id] + return pWeight < 7 ? menuList : menuListWithCopy +} +const menuListWithCopy = [ + { + label: t('visualization.copy'), //'复制', + command: 'copy', + svgName: dvCopyDark + }, + { + label: t('visualization.move_to'), //'移动到', + command: 'move', + svgName: dvMove + }, + { + label: t('visualization.rename'), //'重命名', + command: 'rename', + svgName: dvRename + }, + { + label: t('visualization.delete'), //'删除', + command: 'delete', + svgName: dvDelete, + divided: true + } +] +const menuList = [ + { + label: t('visualization.move_to'), //'移动到', + command: 'move', + svgName: dvMove + }, + { + label: t('visualization.rename'), //'重命名', + command: 'rename', + svgName: dvRename + }, + { + label: t('visualization.delete'), //'删除', + command: 'delete', + svgName: dvDelete, + divided: true + } +] const infoId = wsCache.get(curCanvasType.value === 'dashboard' ? 'db-info-id' : 'dv-info-id') const routerDvId = router.currentRoute.value.query.dvId @@ -267,6 +288,7 @@ function flatTree(tree: BusiTreeNode[]) { } const afterTreeInit = () => { + state.pWeightMap = treeParentWeight(state.originResourceTree, rootManage.value ? 9 : 0) mounted.value = true if (selectedNodeKey.value && returnMounted.value) { expandedArray.value = getDefaultExpandedKeys() @@ -699,7 +721,7 @@ defineExpose({ :node="data" :any-manage="anyManage" :resource-type="curCanvasType" - :menu-list="data.leaf ? menuList : state.folderMenuList" + :menu-list="data.leaf ? menuListWeight(data.id) : state.folderMenuList" >