diff --git a/Server/application/superadmin/controller/Administrator.php b/Server/application/superadmin/controller/Administrator.php index 0a58400b..5b36e827 100644 --- a/Server/application/superadmin/controller/Administrator.php +++ b/Server/application/superadmin/controller/Administrator.php @@ -73,10 +73,12 @@ class Administrator extends Controller */ public function getDetail($id) { - // 查询管理员信息 - $admin = AdminModel::where('id', $id) - ->where('deleteTime', 0) - ->field('id, account, name, status, authId, createTime, lastLoginTime') + // 查询管理员信息,关联权限表 + $admin = AdminModel::alias('a') + ->leftJoin('administrator_permissions p', 'a.id = p.adminId') + ->where('a.id', $id) + ->where('a.deleteTime', 0) + ->field('a.id, a.account, a.name, a.status, a.authId, a.createTime, a.lastLoginTime, p.permissions') ->find(); // 如果查不到记录 @@ -88,17 +90,31 @@ class Administrator extends Controller ]); } + // 解析权限数据 + $permissionIds = []; + if (!empty($admin['permissions'])) { + $permissions = json_decode($admin['permissions'], true); + $permissions = json_decode($permissions, true); + + if (isset($permissions['ids'])) { + $permissionIds = is_string($permissions['ids']) ? explode(',', $permissions['ids']) : $permissions['ids']; + + // 确保所有ID都是整数 + $permissionIds = array_map('intval', $permissionIds); + } + } + // 格式化数据 $data = [ - 'id' => $admin->id, - 'username' => $admin->account, - 'name' => $admin->name, - 'status' => $admin->status, - 'authId' => $admin->authId, - 'roleName' => $this->getRoleName($admin->authId), - 'createdAt' => $admin->createTime, - 'lastLogin' => !empty($admin->lastLoginTime) ? date('Y-m-d H:i', $admin->lastLoginTime) : '从未登录', - 'permissions' => $this->getPermissions($admin->authId) + 'id' => $admin['id'], + 'username' => $admin['account'], + 'name' => $admin['name'], + 'status' => $admin['status'], + 'authId' => $admin['authId'], + 'roleName' => $this->getRoleName($admin['authId']), + 'createdAt' => $admin['createTime'], + 'lastLogin' => !empty($admin['lastLoginTime']) ? date('Y-m-d H:i', $admin['lastLoginTime']) : '从未登录', + 'permissions' => $permissionIds, // 直接返回权限ID数组 ]; return json([ diff --git a/SuperAdmin/app/dashboard/admins/[id]/edit/page.tsx b/SuperAdmin/app/dashboard/admins/[id]/edit/page.tsx index 7c58788b..6a84ba46 100644 --- a/SuperAdmin/app/dashboard/admins/[id]/edit/page.tsx +++ b/SuperAdmin/app/dashboard/admins/[id]/edit/page.tsx @@ -72,8 +72,9 @@ export default function EditAdminPage({ params }: { params: { id: string } }) { if (permissionsResponse.code === 200 && permissionsResponse.data) { // 如果有权限数据,则设置选中的权限 if (permissionsResponse.data.permissions) { - // 假设权限是存储为菜单ID的数组 - setSelectedPermissions(permissionsResponse.data.permissions.map((p: any) => p.id || p)) + // 处理权限ID数组,确保是数字类型 + const permissionIds = permissionsResponse.data.permissions.map(Number); + setSelectedPermissions(permissionIds); } } }