Merge pull request #13709 from dataease/pr@dev-v2@fix_copy

fix(数据大屏、仪表板): 修复复制资源没有校验父文件夹权限问题
This commit is contained in:
王嘉豪 2024-12-01 19:51:45 +08:00 committed by GitHub
commit 05d266f65f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 66 additions and 29 deletions

View File

@ -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) => {

View File

@ -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"
></dv-handle-more>
</div>
</span>