@@ -52,7 +52,6 @@ const searchFields = computed(() => [
5252
5353/* 查询与跨页选择 */
5454const drawerVisible = ref (false )
55- const workspaceId = ref (' ' )
5655const targetId = ref (' ' )
5756const folderData = ref <FolderItem >()
5857const loading = ref (false )
@@ -62,25 +61,21 @@ const selectedUsers = ref<ResourceUserPermission[]>([])
6261const paginationConfig = ref ({ currentPage: 1 , pageSize: 20 , total: 0 })
6362const searchQuery = ref <Dict <unknown >>()
6463const tableRef = useTemplateRef (' tableRef' )
65- let requestId = 0
66- let sessionId = 0
6764
6865function loadPermissions() {
6966 if (! targetId .value ) return Promise .resolve ()
70- const currentRequestId = ++ requestId
7167 loading .value = true
7268 return props .api
73- .getResourceAuthorization (workspaceId . value , targetId .value , authorizationType .value , paginationConfig .value , searchQuery .value )
69+ .getResourceAuthorization (targetId .value , authorizationType .value , paginationConfig .value , searchQuery .value )
7470 .then (({ records , total }) => {
75- if (currentRequestId !== requestId ) return
7671 permissionUsers .value = records .map ((user ) => ({
7772 ... user ,
7873 permission: props .isRootFolder && user .permission === RESOURCE_PERMISSION .NOT_AUTH ? RESOURCE_PERMISSION .VIEW : user .permission ,
7974 }))
8075 paginationConfig .value .total = total
8176 })
8277 .finally (() => {
83- if ( currentRequestId === requestId ) loading .value = false
78+ loading .value = false
8479 })
8580}
8681
@@ -100,17 +95,17 @@ function handleSelectionChange(selection: unknown[]) {
10095 selectedUsers .value = selection as ResourceUserPermission []
10196}
10297
103- /* 子资源范围:使用目标工作空间鉴权,不依赖路由路径推断 。 */
98+ /* 子资源范围:直接使用路由中的工作空间鉴权 。 */
10499const managedFolderIds = computed (() => {
105100 const permissions = folderPermissions .value
106101 if (! folderData .value || ! permissions ) return []
107102 const canManageAll = hasPermission (
108- [RoleConstants .ADMIN , new Role (RoleConstants .WORKSPACE_MANAGE .name , workspaceId . value ), permissions .auth .getWorkspaceManageFlagPermission ()],
103+ [RoleConstants .ADMIN , new Role (RoleConstants .WORKSPACE_MANAGE .name , getWorkspaceId () ), permissions .auth .getWorkspaceManageFlagPermission ()],
109104 undefined ,
110- { workspaceId: workspaceId . value },
105+ { workspaceId: getWorkspaceId () },
111106 )
112107 function collectFolders(folder : FolderItem ): string [] {
113- const canManage = canManageAll || hasPermission (buildBaseResourcePermission (permissions ! .edit , folder .id , workspaceId . value ))
108+ const canManage = canManageAll || hasPermission (buildBaseResourcePermission (permissions ! .edit , folder .id , getWorkspaceId () ))
114109 return [... (canManage ? [folder .id ] : []), ... (folder .children ?? []).flatMap (collectFolders )]
115110 }
116111 return collectFolders (folderData .value )
@@ -139,7 +134,6 @@ function handlePermissionChange(value: string | number | boolean | undefined, us
139134
140135function submitPermissions(permission : ResourcePermission , includeChildren : boolean ) {
141136 if (submitting .value || ! pendingUserIds .value .length || (includeChildren && ! managedFolderIds .value .length )) return
142- const currentSessionId = sessionId
143137 const permissions: ResourceUserPermissionPayload [] = pendingUserIds .value .map ((userId ) => ({
144138 user_id: userId ,
145139 permission ,
@@ -148,9 +142,8 @@ function submitPermissions(permission: ResourcePermission, includeChildren: bool
148142 }))
149143 submitting .value = true
150144 return props .api
151- .putResourceAuthorization (workspaceId . value , targetId .value , authorizationType .value , permissions )
145+ .putResourceAuthorization (targetId .value , authorizationType .value , permissions )
152146 .then (() => {
153- if (currentSessionId !== sessionId ) return
154147 MsgSuccess (' 提交成功' )
155148 configDialogRef .value ?.close ()
156149 pendingUserIds .value = []
@@ -159,16 +152,19 @@ function submitPermissions(permission: ResourcePermission, includeChildren: bool
159152 return loadPermissions ()
160153 })
161154 .finally (() => {
162- if ( currentSessionId === sessionId ) submitting .value = false
155+ submitting .value = false
163156 })
164157}
165158
166- /* 抽屉生命周期 */
159+ function open(id : string , folder ? : FolderItem ) {
160+ targetId .value = id
161+ folderData .value = folder ? cloneDeep (folder ) : undefined
162+ drawerVisible .value = true
163+ loadPermissions ()
164+ }
165+
167166function resetData() {
168- sessionId += 1
169- requestId += 1
170167 targetId .value = ' '
171- workspaceId .value = ' '
172168 folderData .value = undefined
173169 permissionUsers .value = []
174170 searchQuery .value = undefined
@@ -179,20 +175,11 @@ function resetData() {
179175 clearSelection ()
180176}
181177
182- function open(id : string , folder ? : FolderItem , resourceWorkspaceId ? : string ) {
183- resetData ()
184- targetId .value = id
185- workspaceId .value = resourceWorkspaceId ?? folder ?.workspace_id ?? getWorkspaceId () ?? ' default'
186- folderData .value = folder ? cloneDeep (folder ) : undefined
187- drawerVisible .value = true
188- loadPermissions ()
189- }
190-
191178defineExpose ({ open })
192179 </script >
193180
194181<template >
195- <MkDrawer v-model =" drawerVisible " title="资源授权" size="850 " :show-close =" ! submitting " @closed =" resetData " >
182+ <MkDrawer v-model =" drawerVisible " title="资源授权" : size =" 920 " :show-close =" ! submitting " @closed =" resetData " >
196183 <div class =" flex-between mb-4 gap-4" >
197184 <el-button type =" primary" :disabled =" !selectedUsers.length || loading || submitting" @click =" handleOpenBatchConfig" >配置权限</el-button >
198185 <MkComplexSearch :fields =" searchFields " @change =" handleSearch " />
0 commit comments