超管后台 - 管理员编辑权限对应功能展示checkbox
This commit is contained in:
@@ -73,10 +73,12 @@ class Administrator extends Controller
|
|||||||
*/
|
*/
|
||||||
public function getDetail($id)
|
public function getDetail($id)
|
||||||
{
|
{
|
||||||
// 查询管理员信息
|
// 查询管理员信息,关联权限表
|
||||||
$admin = AdminModel::where('id', $id)
|
$admin = AdminModel::alias('a')
|
||||||
->where('deleteTime', 0)
|
->leftJoin('administrator_permissions p', 'a.id = p.adminId')
|
||||||
->field('id, account, name, status, authId, createTime, lastLoginTime')
|
->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();
|
->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 = [
|
$data = [
|
||||||
'id' => $admin->id,
|
'id' => $admin['id'],
|
||||||
'username' => $admin->account,
|
'username' => $admin['account'],
|
||||||
'name' => $admin->name,
|
'name' => $admin['name'],
|
||||||
'status' => $admin->status,
|
'status' => $admin['status'],
|
||||||
'authId' => $admin->authId,
|
'authId' => $admin['authId'],
|
||||||
'roleName' => $this->getRoleName($admin->authId),
|
'roleName' => $this->getRoleName($admin['authId']),
|
||||||
'createdAt' => $admin->createTime,
|
'createdAt' => $admin['createTime'],
|
||||||
'lastLogin' => !empty($admin->lastLoginTime) ? date('Y-m-d H:i', $admin->lastLoginTime) : '从未登录',
|
'lastLogin' => !empty($admin['lastLoginTime']) ? date('Y-m-d H:i', $admin['lastLoginTime']) : '从未登录',
|
||||||
'permissions' => $this->getPermissions($admin->authId)
|
'permissions' => $permissionIds, // 直接返回权限ID数组
|
||||||
];
|
];
|
||||||
|
|
||||||
return json([
|
return json([
|
||||||
|
|||||||
@@ -72,8 +72,9 @@ export default function EditAdminPage({ params }: { params: { id: string } }) {
|
|||||||
if (permissionsResponse.code === 200 && permissionsResponse.data) {
|
if (permissionsResponse.code === 200 && permissionsResponse.data) {
|
||||||
// 如果有权限数据,则设置选中的权限
|
// 如果有权限数据,则设置选中的权限
|
||||||
if (permissionsResponse.data.permissions) {
|
if (permissionsResponse.data.permissions) {
|
||||||
// 假设权限是存储为菜单ID的数组
|
// 处理权限ID数组,确保是数字类型
|
||||||
setSelectedPermissions(permissionsResponse.data.permissions.map((p: any) => p.id || p))
|
const permissionIds = permissionsResponse.data.permissions.map(Number);
|
||||||
|
setSelectedPermissions(permissionIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user