diff --git a/frontend/src/app/departments/[id]/page.tsx b/frontend/src/app/departments/[id]/page.tsx index 8246bbfa..103a4e41 100644 --- a/frontend/src/app/departments/[id]/page.tsx +++ b/frontend/src/app/departments/[id]/page.tsx @@ -18,9 +18,11 @@ import { import { AppShell } from "@/components/AppShell"; import { DepartmentPersonChip } from "@/components/departments/DepartmentPersonChip"; +import { RequestAvatar } from "@/components/requests/RequestAvatar"; import { SearchableSelectSingle } from "@/components/shared/SearchableSelect"; import { Modal } from "@/components/ui/Modal"; import { useDepartmentPage } from "@/hooks/useDepartmentPage"; +import { displayUserName, userProfileLink } from "@/lib/shared"; import type { DepartmentMemberLink, DepartmentRole } from "@/types/api"; function MetaChip({ @@ -78,9 +80,59 @@ function DepartmentMemberRow({ member.employee.position?.name || member.employee.email || null; const managementMode = canAssignRoles || canChangeHead || canManage; const roleLabel = member.role?.name || "Без роли"; + const personName = displayUserName(member.employee); + const profileLink = userProfileLink(member.employee, currentUserId); + const fallback = ( + member.employee.first_name?.[0] || + member.employee.last_name?.[0] || + member.employee.email?.[0] || + "?" + ).toUpperCase(); + + if (!managementMode) { + const personBubble = ( + + + + + {personName} + + {subtitle ? ( + {subtitle} + ) : null} + + + {roleLabel} + + + ); + + return ( + <> + {profileLink ? ( + + {personBubble} + + ) : ( + {personBubble} + )} + {isHead ? ( + + + Руководитель + + ) : null} + + ); + } return ( -
+
-
+
{h.filteredMembers.length ? ( h.filteredMembers.map((member) => (