From 0139a3a13b1c845414e7b92cbbcc8375246b83fb Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Sun, 1 Dec 2024 19:50:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E5=A4=A7=E5=B1=8F?= =?UTF-8?q?=E3=80=81=E4=BB=AA=E8=A1=A8=E6=9D=BF):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E8=B5=84=E6=BA=90=E6=B2=A1=E6=9C=89=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E7=88=B6=E6=96=87=E4=BB=B6=E5=A4=B9=E6=9D=83=E9=99=90?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core-frontend/src/utils/treeSortUtils.ts | 17 +++- .../src/views/common/DeResourceTree.vue | 78 ++++++++++++------- 2 files changed, 66 insertions(+), 29 deletions(-) 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" >