Ver Fonte

feat: 转办人列表,各种权限问题修复

wuwenyi há 2 semanas atrás
pai
commit
7adc82f43f

+ 6 - 1
src/api/system/role.ts

@@ -1,5 +1,5 @@
 import request from '@/api/request'
-import type { Role } from '@/types/system'
+import type { Role, User } from '@/types/system'
 import type { PageQuery, PageResult } from '@/types/api'
 
 export function listRole(params?: PageQuery & Partial<Role> & { deptId?: number }): Promise<PageResult<Role>> {
@@ -25,3 +25,8 @@ export function deleteRole(id: number): Promise<void> {
 export function bindRoleWeCom(id: number, data: { wecomUserId?: string; wecomRemindEnabled?: number }): Promise<void> {
   return request.put(`/system/role/${id}/wecom`, data)
 }
+
+/** 查询拥有某角色的用户列表(转办选人) */
+export function listUsersByRole(roleId: number): Promise<User[]> {
+  return request.get(`/system/role/${roleId}/users`)
+}

+ 0 - 4
src/components/Sidebar/index.vue

@@ -84,10 +84,6 @@ const menuRoutes = router.getRoutes()
   .filter(r => r.children.length > 0)
 
 const filteredMenuRoutes = computed(() => {
-  // 角色用户只显示首页和审批中心
-  if (userStore.isRoleUser) {
-    return menuRoutes.filter(r => ['/', '/approval'].includes(r.path))
-  }
   const empType = userStore.userInfo?.employeeType || 'common_user'
   const allowedPaths = menuPermissions[empType] || menuPermissions.common_user
   return menuRoutes.filter(r => allowedPaths.includes(r.path))

+ 11 - 0
src/views/flow/task/todo.vue

@@ -217,6 +217,7 @@ import { ref, reactive, onMounted, computed } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { Check, Close, Switch, Plus, View } from '@element-plus/icons-vue'
 import { listTodo, approveTask, rejectTask, transferTask, addSignTask, batchApproveTask, batchRejectTask } from '@/api/flow/task'
+import { listUsersByRole } from '@/api/system/role'
 import { listUser } from '@/api/system/user'
 import { uploadFile } from '@/api/file'
 import { getInstanceAttachments } from '@/api/flow/instance'
@@ -377,6 +378,16 @@ async function openTransfer(row: FlowTask) {
   currentTask.value = row
   form.action = 'transfer'
   batchMode.value = false
+  // 转办选人:ROLE 任务查同角色用户,USER 任务查全部用户
+  if (row.assigneeType === 'ROLE' && row.assigneeId) {
+    try {
+      userList.value = await listUsersByRole(row.assigneeId)
+    } catch {
+      userList.value = []
+    }
+  } else {
+    await loadUsers()
+  }
   await loadPreviousAttachments(row.instanceId)
   approveDrawerVisible.value = true
 }

+ 11 - 0
src/views/workbench/index.vue

@@ -257,6 +257,7 @@ import { listTodo, approveTask, rejectTask, transferTask, addSignTask } from '@/
 import { listHandled, listCc } from '@/api/flow/task'
 import { listMyInstance, getInstanceAttachments } from '@/api/flow/instance'
 import { listUser } from '@/api/system/user'
+import { listUsersByRole } from '@/api/system/role'
 import { uploadFile } from '@/api/file'
 import { todoCount } from '@/api/flow/task'
 import { beforeFileUpload, getUploadUrl } from '@/utils/file'
@@ -399,6 +400,16 @@ async function openTransfer(row: FlowTask) {
   resetApproveForm()
   currentTask.value = row
   form.action = 'transfer'
+  // 转办选人:ROLE 任务查同角色用户,USER 任务查全部用户
+  if (row.assigneeType === 'ROLE' && row.assigneeId) {
+    try {
+      userList.value = await listUsersByRole(row.assigneeId)
+    } catch {
+      userList.value = []
+    }
+  } else {
+    await loadUsers()
+  }
   await loadPreviousAttachments(row.instanceId)
   approveDrawerVisible.value = true
 }