3359a8db13
Модель/сервисы HR-заявок с заменами, приглашения на установку пароля (инвайты), обновлённая страница профиля сотрудника и правки 2FA. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
54 lines
3.6 KiB
HTML
54 lines
3.6 KiB
HTML
{% load common_tags %}
|
|
{% load i18n %}
|
|
{% if manager_chain %}
|
|
<div style="background:var(--color-card); border-radius:0.75rem; border:1px solid var(--color-border); padding:1rem 1.25rem;">
|
|
<h3 style="font-size:0.8125rem; font-weight:600; margin-bottom:0.75rem;">{% trans "Цепочка руководства" %}</h3>
|
|
<div style="display:flex; flex-direction:column; gap:0.5rem;">
|
|
{% for mgr in manager_chain %}
|
|
<a href="/employees/{{ mgr.pk }}/?tab=overview" hx-get="/employees/{{ mgr.pk }}/?tab=overview" hx-target="#main-content" hx-push-url="/employees/{{ mgr.pk }}/?tab=overview" hx-indicator="#loader"
|
|
style="display:flex; align-items:center; gap:0.5rem; text-decoration:none;">
|
|
<span style="width:1.5rem; height:1.5rem; border-radius:50%; background:color-mix(in srgb, var(--color-primary) 10%, transparent); color:var(--color-primary); display:flex; align-items:center; justify-content:center; font-size:0.625rem; font-weight:600; flex-shrink:0;">{{ mgr|initials }}</span>
|
|
<span style="font-size:0.8125rem; color:var(--color-foreground);">{{ mgr.get_full_name }}</span>
|
|
</a>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if subordinates %}
|
|
<div style="background:var(--color-card); border-radius:0.75rem; border:1px solid var(--color-border); padding:1rem 1.25rem;">
|
|
<h3 style="font-size:0.8125rem; font-weight:600; margin-bottom:0.75rem;">{% trans "Подчинённые" %} · {{ subordinates|length }}</h3>
|
|
<div style="display:flex; flex-direction:column; gap:0.625rem;">
|
|
{% for sub in subordinates %}
|
|
<a href="/employees/{{ sub.pk }}/?tab=overview" hx-get="/employees/{{ sub.pk }}/?tab=overview" hx-target="#main-content" hx-push-url="/employees/{{ sub.pk }}/?tab=overview" hx-indicator="#loader"
|
|
style="display:flex; align-items:center; gap:0.5rem; text-decoration:none;">
|
|
<span style="width:1.75rem; height:1.75rem; border-radius:50%; background:color-mix(in srgb, var(--color-primary) 10%, transparent); color:var(--color-primary); display:flex; align-items:center; justify-content:center; font-size:0.625rem; font-weight:600; flex-shrink:0;">{{ sub|initials }}</span>
|
|
<div>
|
|
<div style="font-size:0.8125rem; color:var(--color-foreground);">{{ sub.get_full_name }}</div>
|
|
{% if sub.post %}<div style="font-size:0.6875rem; color:var(--color-muted-foreground);">{{ sub.post.name }}</div>{% endif %}
|
|
</div>
|
|
</a>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if can_view_pii and last_attendance %}
|
|
<div style="background:var(--color-card); border-radius:0.75rem; border:1px solid var(--color-border); padding:1rem 1.25rem;">
|
|
<h3 style="font-size:0.8125rem; font-weight:600; margin-bottom:0.75rem;">{% trans "Последнее посещение" %}</h3>
|
|
<div style="font-size:0.8125rem;">{% if last_attendance.direction == 'in' %}{% trans "Приход" %}{% else %}{% trans "Выход" %}{% endif %} · {{ last_attendance.timestamp|date:"d.m.Y H:i" }}</div>
|
|
<div style="font-size:0.75rem; color:var(--color-muted-foreground); margin-top:0.125rem;">{{ last_attendance.location.name }}</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if employee.groups.all %}
|
|
<div style="background:var(--color-card); border-radius:0.75rem; border:1px solid var(--color-border); padding:1rem 1.25rem;">
|
|
<h3 style="font-size:0.8125rem; font-weight:600; margin-bottom:0.75rem;">{% trans "Группы доступа" %}</h3>
|
|
<div style="display:flex; flex-wrap:wrap; gap:0.375rem;">
|
|
{% for group in employee.groups.all %}
|
|
<span class="badge badge-muted">{{ group.name }}</span>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
{% endif %}
|