Хто сьогодні на роботі
Зараз на роботі
{{ todaySummary.in }}
Пішли додому
{{ todaySummary.out }}
Не з'являлись
{{ todaySummary.absent }}
Оновлено {{ formatTime(new Date()) }}
За офісами:
{{ o.name }}
{{ o.in }} на роботі
{{ o.out }} пішли
Офіси
+ Додати офіс
| id | Назва | Адреса | TZ | |
|---|---|---|---|---|
| {{ o.id }} | {{ o.name }} | {{ o.address }} | {{ o.timezone }} | |
| Немає офісів | ||||
Співробітники
Зареєстрували палець
{{ fpStats.enrolled }} з {{ fpStats.total }}
Без пальця: {{ fpStats.missing.length }}
{{ m.full_name }},
— всі зареєстровані ✓
{{ lastSync }}
+ Додати співробітника вручну
Палець реєструється фізично на терміналі: User Mgt → Edit user → Enroll FP → 3 рази палець.
| id | ПІБ | OKSANA | Палець | PIN | Активний | |
|---|---|---|---|---|---|---|
| {{ e.id }} | {{ e.full_name }} | {{ e.oksana_user_id || '—' }} | {{ e.has_fingerprint ? '✓ зареєстр.' : '✗ немає' }} | {{ e.has_pin ? '✓' : '—' }} | {{ e.is_active ? '✓' : '—' }} | |
| {{ empFilter ? 'Нічого не знайдено' : 'Немає співробітників' }} | ||||||
Біометричні термінали
Список ZKTeco WL30 чи інших FP-терміналів, які пушать події через /iclock/. Прив'яжіть кожен пристрій до офісу — події успадковуватимуть його, і звіти/Сьогодні будуть розкладатись по офісах.
| id | SN | IP | Офіс | Модель | Останнє звернення |
|---|---|---|---|---|---|
| {{ d.id }} | {{ d.sn }} | {{ d.ip || '—' }} | {{ d.model || '—' }} · {{ d.firmware }} | {{ formatTime(d.last_seen_at) }} ({{ deviceAge(d.last_seen_at) }}) | |
| Терміналів ще не зареєстровано — увімкніть ADMS на пристрої (System → Ethernet → ADMS → Server 192.168.3.32:7791) | |||||
Графіки робочого часу
+ Додати графік
| id | Співробітник | Дні | Початок | Кінець | Допуск | |
|---|---|---|---|---|---|---|
| {{ s.id }} | {{ empName(s.employee_id) }} | {{ s.weekdays.map(w => ['Пн','Вт','Ср','Чт','Пт','Сб','Нд'][w]).join(', ') }} | {{ s.start_time.slice(0,5) }} | {{ s.end_time.slice(0,5) }} | +{{ s.grace_late_min }}хв / +{{ s.grace_overtime_min }}хв | |
| Графіки не задано | ||||||
Звіти відвідуваності
завантаження…
Підсумок за період {{ reportFilter.since }} — {{ reportFilter.until }}
| Співробітник | Робочих днів | Присутній | Відсутній | Опізднень | Запізн. (хв) | Переробка (хв) | Годин |
|---|---|---|---|---|---|---|---|
| {{ r.employee_name }} | {{ r.days_with_shift }} | {{ r.days_present }} | {{ r.days_absent || '—' }} | {{ r.late_days || '—' }} | {{ r.late_min || '—' }} | {{ r.overtime_min || '—' }} | {{ (r.worked_min/60).toFixed(1) }} |
| Немає даних за період | |||||||
Деталі по днях ({{ reportDetail.length }} рядків)
| Дата | День | Співробітник | Графік | Прийшов | Пішов | Хв | Запізн. | Раніше | Переробка | Відсутн. |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.date }} | {{ ['Пн','Вт','Ср','Чт','Пт','Сб','Нд'][r.weekday] }} | {{ r.employee_name }} | {{ r.shift ? r.shift.start + '-' + r.shift.end : '—' }} | {{ r.first_in || '—' }} | {{ r.last_out || '—' }} | {{ r.worked_min || '—' }} | {{ r.late_min || '' }} | {{ r.early_left_min || '' }} | {{ r.overtime_min || '' }} | {{ r.absent ? 'так' : '' }} |
Показано перші 500 рядків — для повного звіту використовуйте Excel/PDF експорт.
Журнал подій
| Час | Тип | Співробітник | Офіс | Score | Liveness |
|---|---|---|---|---|---|
| {{ formatTime(e.ts) }} | {{ e.event_type }} | {{ empName(e.employee_id) || '—' }} | {{ officeName(e.office_id) || '—' }} | {{ e.score ? (e.score*100).toFixed(0) + '%' : '—' }} | {{ e.spoof_score != null ? (e.spoof_score*100).toFixed(0) + '%' : '—' }} |
| Подій ще не було | |||||