4848 </div >
4949
5050 <div
51- v-if =" canOperation"
51+ v-if =" canOperation && permissionPrecise.folderManage(data.id) "
5252 @click.stop
5353 v-show =" hoverNodeId === data.id"
5454 @mouseenter.stop =" handleMouseEnter(data)"
5555 @mouseleave.stop =" handleMouseleave"
5656 class =" mr-16"
5757 >
5858 <el-dropdown trigger =" click" :teleported =" false" >
59- <el-button text class =" w-full" v-if =" MoreFilledPermission(node )" >
59+ <el-button text class =" w-full" v-if =" permissionPrecise.folderManage(data.id )" >
6060 <AppIcon iconName =" app-more" ></AppIcon >
6161 </el-button >
6262 <template #dropdown >
6363 <el-dropdown-menu >
6464 <el-dropdown-item
6565 @click.stop =" openCreateFolder(data)"
66- v-if =" node.level !== 3 && permissionPrecise.folderCreate( )"
66+ v-if =" node.level !== 3 && permissionPrecise.folderManage(data.id )"
6767 >
6868 <AppIcon iconName =" app-add-folder" class =" color-secondary" ></AppIcon >
6969 {{ $t('components.folder.addChildFolder') }}
7070 </el-dropdown-item >
7171 <el-dropdown-item
7272 @click.stop =" openEditFolder(data)"
73- v-if =" permissionPrecise.folderEdit( )"
73+ v-if =" permissionPrecise.folderManage(data.id )"
7474 >
7575 <AppIcon iconName =" app-edit" class =" color-secondary" ></AppIcon >
7676 {{ $t('common.edit') }}
7777 </el-dropdown-item >
78+ <el-dropdown-item
79+ @click.stop =" openAuthorization(data)"
80+ v-if =" permissionPrecise.folderManage(data.id)"
81+ >
82+ <AppIcon iconName =" app-resource-authorization" class =" color-secondary" ></AppIcon >
83+ {{ $t('views.system.resourceAuthorization.title') }}
84+ </el-dropdown-item >
7885 <el-dropdown-item
7986 divided
8087 @click.stop =" deleteFolder(data)"
8188 :disabled =" !data.parent_id"
82- v-if =" permissionPrecise.folderDelete( )"
89+ v-if =" permissionPrecise.folderManage(data.id )"
8390 >
8491 <AppIcon iconName =" app-delete" class =" color-secondary" ></AppIcon >
8592 {{ $t('common.delete') }}
94101 </el-scrollbar >
95102 </div >
96103 <CreateFolderDialog ref =" CreateFolderDialogRef" @refresh =" refreshFolder" :title =" title" />
104+ <ResourceAuthorizationDrawer
105+ :type =" props.source"
106+ :is-folder =" true"
107+ :is-root-folder =" !currentNode?.parent_id"
108+ ref =" ResourceAuthorizationDrawerRef"
109+ />
97110 </div >
98111</template >
99112
@@ -102,6 +115,7 @@ import { computed, onUnmounted, ref, watch } from 'vue'
102115import { onBeforeRouteLeave } from ' vue-router'
103116import type { TreeInstance } from ' element-plus'
104117import CreateFolderDialog from ' @/components/folder-tree/CreateFolderDialog.vue'
118+ import ResourceAuthorizationDrawer from ' @/components/resource-authorization-drawer/index.vue'
105119import { t } from ' @/locales'
106120import { i18n_name } from ' @/utils/common'
107121import folderApi from ' @/api/folder'
@@ -255,6 +269,13 @@ function openEditFolder(row: Tree) {
255269 CreateFolderDialogRef .value .open (props .source , row .id , row )
256270}
257271
272+ const currentNode = ref <Tree | null >(null )
273+ const ResourceAuthorizationDrawerRef = ref ()
274+ function openAuthorization(data : any ) {
275+ currentNode .value = data
276+ ResourceAuthorizationDrawerRef .value .open (data .id )
277+ }
278+
258279function refreshFolder() {
259280 emit (' refreshTree' )
260281}
0 commit comments