Авторизуйтесь для доступа к панели управления
Общая статистика количества порций по всем отделам предприятия
| Название Отдела / Цеха | Завтраки (З) | Обеды (О) | Ужины (У) | Поздние (ПУ) | Итого порций | Расчетная сумма | Фактическая (РК7) |
|---|---|---|---|---|---|---|---|
| {{ item.department_name }} | {{ item.breakfast }} | {{ item.lunch }} | {{ item.dinner }} | {{ item.late_dinner }} | {{ item.total }} | {{ formatCurrency(item.calculated_sum) }} ₸ | {{ formatCurrency(item.rk7_sum) }} ₸ |
| Нет данных для отображения. | |||||||
| ИТОГО К ВЫДАЧЕ: | {{ globalTotals.breakfast }} | {{ globalTotals.lunch }} | {{ globalTotals.dinner }} | {{ globalTotals.late_dinner }} | {{ globalTotals.total }} | {{ formatCurrency(globalTotals.calculated_sum) }} ₸ | {{ formatCurrency(globalTotals.rk7_sum) }} ₸ |
Доступ ограничен
Используйте персональную ссылку отдела.
| ФИО Сотрудника | {{ formatDate(date) }} | |||
|---|---|---|---|---|
| З | О | У | ПУ | |
|
{{ user.fio }}
🏨 Гость
📅 {{ formatDate(user.guest_start_date) }} - {{ formatDate(user.guest_end_date) }}
💳 {{ user.card_number }}
|
||||
| В этом отделе пока нет сотрудников на выбранную вахту. Добавьте персонал вручную через блок ниже. | ||||
Введите учетные данные для доступа к настройкам
Управление вахтами, доступами, интеграциями (1С, СКУД, R-Keeper), камерами и безопасностью
Отправляет «Сводный отчет» и «Отчет по блюдам» с почты {{ emailReportConfig.smtp_user || 'notifications@saryopan.com' }} автоматически на следующий день после завершения вахты.
| Название вахты | Дата начала | Дата окончания | Действие |
|---|---|---|---|
| {{ p.name }} Выбрана | {{ p.start_date }} | {{ p.end_date }} | |
| Вахты еще не созданы. | |||
Настройка логинов, паролей, доступных вкладок, разрешенных цехов/подрядчиков и камер видеонаблюдения
| Пользователь / Цех | Пароль |
Доступные вкладки меню
клик сохраняет сразу
|
Доступ к отделам | Камеры CCTV | Статус | Действие |
|---|---|---|---|---|---|---|
|
{{ acc.username }}
🏢
{{ acc.department_name }}
|
•••••••• |
Пресеты:
✓ Сохранено
{{ getAccActiveTabsCount(acc.allowed_tabs) }}/{{ allTabsList.length }}
|
|
Управление активностью отделов, признаком подрядчика и разрешением редактирования прошлых дат
| Название отдела | Привязанные учетные записи | Статус | Тип отдела | Прошлые дни | Действия |
|---|---|---|---|---|---|
| {{ d.name }} Подрядчик 📁 В архиве |
👤 {{ m.username }}
—
|
|
Ручной предпросмотр и синхронизация кадровых данных из 1С:ЗУП. Ручные переводы сотрудников между отделами защищены от перезаписи.
| ФИО в системе / 1С | Цех | Таб. № | ИИН | Должность | Карта |
|---|---|---|---|---|---|
| {{ m.new_fio }} | {{ m.new_dept }} 🔒 Ручной перевод | {{ m.tab_number }} | {{ m.iin || '—' }} | {{ m.position }} | {{ m.card_number || '—' }} |
| ФИО | Цех назначения | Таб. № | ИИН | Должность |
|---|---|---|---|---|
| {{ c.fio }} | {{ c.department_name }} | {{ c.tab_number }} | {{ c.iin || '—' }} | {{ c.position }} |
| ФИО | Цех | Таб. № | Дата увольнения |
|---|---|---|---|
| {{ d.fio }} | {{ d.department_name }} | {{ d.tab_number || '—' }} | {{ d.fired_at || 'Уволен' }} |
Свяжите подразделения из кадровой базы 1С с внутренними цехами системы для корректного распределения сотрудников.
| Код 1С | Подразделение в 1С | Штат в 1С | Цех / Отдел в системе | Статус |
|---|---|---|---|---|
| {{ item.code_1c || '—' }} | {{ item.name_1c }} | {{ item.working_employees }} сотр. 0 сотр. |
Игнор.
✓ Связано
Не связано
|
Свяжите сотрудников системы с учетными записями СКУД HikCentral для автоматического расчета табеля по проходам турникетов.
| № | Сотрудник в системе | Цех | Статус | Привязка в HikCentral (СКУД) | Действие |
|---|---|---|---|---|---|
| {{ idx + 1 }} |
{{ emp.fio }}
{{ emp.position }}
|
{{ emp.department_name }} | ✓ Связано 💡 Совет Не связан |
{{ emp.linked_hik_name || emp.fio }}
Код: {{ emp.hik_person_code }}
{{ emp.suggested_hik.full_name }}
Код: {{ emp.suggested_hik.person_code }}
|
— |
Настройка наименований, групп помещений, очередности и статуса активности камер
| # | Поток (Stream ID) | Название камеры | Группа / Расположение | Порядок | Статус | Действие |
|---|---|---|---|---|---|---|
| {{ idx + 1 }} | {{ cam.stream_id }} |
Фиксация всех действий в системе: изменения табелей, кадры, питание, привязка карт, учетные записи и авторизация
| № | Дата и время | Пользователь / Роль | Категория | Описание действия | Детали |
|---|---|---|---|---|---|
| Загрузка журнала аудита... | |||||
| Записей в журнале за выбранный период не найдено | |||||
| {{ (auditPage - 1) * auditPageSize + idx + 1 }} |
{{ formatAuditDateTime(log.created_at) }}
IP: {{ log.actor_ip }}
|
{{ log.actor_username }}
{{ log.actor_role }}
🏢 {{ log.department_name }}
|
{{ log.action_type_label || log.action_type }} | {{ log.description }} | — |
Пользователь: {{ accDeptsModalAccount.username }} (Основной цех: {{ accDeptsModalAccount.department_name }})
Пользователь: {{ cctvPermAccount?.username }} ({{ cctvPermAccount?.department_name }})
{{ formatAuditDateTime(auditActiveLog?.created_at) }} | {{ auditActiveLog?.actor_username }} ({{ auditActiveLog?.actor_role }})
{{ JSON.stringify(auditActiveLog?.details, null, 2) }}
Сравнение плановой стоимости по отметкам и фактических транзакций по картам R-Keeper
| Отдел | План | Факт | Разница |
|---|---|---|---|
| {{ d.department_name }} | {{ formatCurrency(d.calculated_sum) }} | {{ formatCurrency(d.rk7_sum) }} |
{{ d.difference >= 0 ? '+' : '' }}{{ formatCurrency(d.difference) }}
({{ d.difference >= 0 ? '+' : '' }}{{ d.percent.toFixed(1) }}%)
|
| ФИО {{ getSortIcon('name') }} | Отдел {{ getSortIcon('department_name') }} | План {{ getSortIcon('calculated_sum') }} | Факт {{ getSortIcon('rk7_sum') }} | Разница {{ getSortIcon('difference') }} |
|---|---|---|---|---|
| {{ e.name }} | {{ e.department_name }} | {{ formatCurrency(e.calculated_sum) }} | {{ formatCurrency(e.rk7_sum) }} |
{{ e.difference >= 0 ? '+' : '' }}{{ formatCurrency(e.difference) }}
({{ e.difference >= 0 ? '+' : '' }}{{ e.percent.toFixed(1) }}%)
|
| Сотрудники не найдены. | ||||
Сводное количество запланированных порций З-О-У-ПУ на выбранную дату
| Название Отдела / Цеха | Завтраки (З) | Обеды (О) | Ужины (У) | Поздние (ПУ) | Итого порций |
|---|---|---|---|---|---|
| {{ r.department_name }} | {{ r.breakfast }} | {{ r.lunch }} | {{ r.dinner }} | {{ r.late_dinner }} | {{ r.total }} |
| ИТОГО ПОРЦИЙ | {{ dailyPlanTotals.breakfast }} | {{ dailyPlanTotals.lunch }} | {{ dailyPlanTotals.dinner }} | {{ dailyPlanTotals.late_dinner }} | {{ dailyPlanTotals.total }} |
Официальные транзакции по картам сотрудника
| Наименование | Кол-во |
|---|---|
| {{ item.dish }} | {{ item.quantity }} |
| Дата / Время | Блюдо | Кол-во |
|---|---|---|
| {{ formatReceiptDate(t.date) }} {{ t.time }} | {{ t.dish }} | {{ t.qty }} |
Табель для выбранного месяца и цеха ещё не создан.
| № | Ф.И.О. сотрудника | Должность | {{ getDayNumber(d) }} | Дни | Часы | Ноч. | Отп | Б/Л | Б/С |
Действия
|
|---|---|---|---|---|---|---|---|---|---|---|
| {{ idx + 1 }} | {{ row.fio }} |
{{ code }}
|
{{ calculateRowDays(row) }} | {{ calculateRowHours(row) }} | {{ calculateRowNightHours(row) }} | {{ calculateRowVacations(row) }} | {{ calculateRowSicks(row) }} | {{ calculateRowUnpaid(row) }} | ||
| ИТОГО: | {{ calculateTotalDays() }} | {{ calculateTotalHours() }} | {{ calculateTotalNightHours() }} | {{ calculateTotalVacations() }} | {{ calculateTotalSicks() }} | {{ calculateTotalUnpaid() }} | ||||
Сотрудник: {{ tsActiveSkudRow?.fio }} (в СКУД: {{ tsActiveSkudData.matched_fio }}) | Месяц: {{ tsActiveSkudData?.month ? tsMonths.find(m => m.id === tsActiveSkudData.month)?.name : '' }} {{ tsActiveSkudData?.year }} г.
Запрос данных о проходах через турникеты СКУД...
| День | Дата | Первый проход | Последний проход | Время на объекте | Статус смены | Код табеля |
|---|---|---|---|---|---|---|
| {{ dayInfo.day }} | {{ dateStr }} (вых) | {{ dayInfo.first_pass }} — | {{ dayInfo.last_pass }} — | {{ dayInfo.duration_str }} | {{ dayInfo.status }} |
Подразделение: {{ attReportData?.department_name || (tsAvailableDepts.find(d => d.id === attSelectedDeptId)?.name || 'Не выбран') }} | Период: {{ attStartDate }} — {{ attEndDate }} ({{ attReportData.dates.length }} дн.)
Формирование отчета и сопоставление отметок СКУД...
Опрос сервера турникетов HikCentral
| # | ФИО | Должность |
{{ d.day }}
{{ d.weekday }}
|
Дней | Часов | Прох. |
|---|---|---|---|---|---|---|
| {{ idx + 1 }} |
{{ emp.fio }}
🏢 {{ emp.department_name }}
(СКУД: {{ emp.matched_skud_fio }})
|
{{ emp.position || '—' }} | 11 8 {{ emp.days[d.date].suggested_code }} ТУ {{ emp.days[d.date].suggested_code }} В | {{ emp.summary.total_work_days }} | {{ emp.summary.total_work_hours }} | {{ emp.summary.total_passes }} |
| Сотрудники не найдены | ||||||
| Всего на смене (чел.): | {{ filteredAttEmployees.filter(e => e.days[d.date]?.is_work_day).length }} | {{ filteredAttEmployees.reduce((sum, e) => sum + e.summary.total_work_days, 0) }} | {{ filteredAttEmployees.reduce((sum, e) => sum + e.summary.total_work_hours, 0) }} | {{ filteredAttEmployees.reduce((sum, e) => sum + e.summary.total_passes, 0) }} | ||
Учет личного состава подразделения, управление должностями, статусами и подготовка к объединению данных 1С, СКУД и R-Keeper
|
№
{{ getPersonnelSortIcon('id') }}
|
ФИО сотрудника
{{ getPersonnelSortIcon('fio') }}
|
Должность
{{ getPersonnelSortIcon('position') }}
|
Отдел
{{ getPersonnelSortIcon('department_name') }}
|
Статус
{{ getPersonnelSortIcon('is_active') }}
|
1С (Таб. №)
{{ getPersonnelSortIcon('tab_number') }}
|
СКУД (HikCentral)
{{ getPersonnelSortIcon('skud') }}
|
R-Keeper (Карта)
{{ getPersonnelSortIcon('card_number') }}
|
Действия |
|---|---|---|---|---|---|---|---|---|
| {{ idx + 1 }} |
{{ emp.fio }}
🏨 Гость
1С
📅 Визит: {{ formatDate(emp.guest_start_date) }} — {{ formatDate(emp.guest_end_date) }}
ИИН: {{ emp.iin }}
|
Гость
{{ emp.position }}
— не указана
📅 {{ emp.schedule }}
|
{{ emp.department_name }}
🚜 Подрядчик
|
Работает Уволен | {{ emp.tab_number }} — | СКУД — |
|
|
| Сотрудники не найдены по заданным критериям фильтра. | ||||||||
| ⏳ Загрузка реестра сотрудников... | ||||||||
Слияние профилей, перенос истории питания (плана) и привязанных карт
meals_records) и карты сотрудника-дубликата переносятся на Основной профиль (Эталон). Если у эталона отсутствовали таб. номер, ИИН или код турникета, они будут автоматически дозаполнены из дубликата. Профиль дубликата будет заархивирован и удален из активного реестра.
Автоматический поиск по совпадениям ФИО, карт, ИИН и табельных номеров
{{ cardHistoryUser.fio }} ({{ cardHistoryUser.department_name }})
| Карта | Дата выдачи | Дата закрытия | Статус | Причина / Основание |
|---|---|---|---|---|
| {{ c.card_number }} | {{ formatCardDateTime(c.assigned_at) }} | {{ c.revoked_at ? formatCardDateTime(c.revoked_at) : '—' }} | Активна Закрыта | {{ c.reason || '—' }} |
Прямая трансляция потоков MediaMTX HLS с низкими задержками
У вашей учетной записи нет разрешенных видеопотоков или ни одна камера не совпадает с условиями фильтра. Обратитесь к администратору.
{{ cctvFullscreenCamera ? cctvFullscreenCamera.group_name : '' }} • Основной поток высокой четкости (Main-stream HD) Вторичный поток (Sub-stream), выполняется буферизация HD...
Норма: 0,5 л молока на 1 отработанную смену. Выдача в столовой производится строго в таре по 1 л. Нецелая часть автоматически переносится на следующую вахту.
| № | Ф.И.О. сотрудника | Должность | Отработано смен | Норма/день | Норма вахта | Вх. долг (л) | Всего (л) | К ВЫДАЧЕ (1 л) | Исх. остаток | Источник | Действ. |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Нет данных для отображения. Выберите подразделение и период или нажмите «🔄 Пересчитать по СКУД». | |||||||||||
| {{ idx + 1 }} | {{ item.fio }} | {{ item.position }} | {{ item.daily_norm }} л | {{ item.period_norm }} л | {{ item.total_liters }} л | {{ item.liters_to_issue }} л | +{{ item.carried_balance_out }} л | 🚪 СКУД 🍽️ Столовая ⚡ СКУД+Еда {{ item.calc_source }} | |||
| ИТОГО ПО ПОДРАЗДЕЛЕНИЮ: | {{ milkTotals.total_shifts }} | {{ milkTotals.total_period_norm }} л | {{ milkTotals.total_balance_in }} л | {{ milkTotals.total_liters }} л | {{ milkTotals.total_issued_liters }} упак. (1л) | +{{ milkTotals.total_balance_out }} л | |||||
| № | Ф.И.О. сотрудника | Должность | Смен | Норма/дн | Норма вахта | Вх. остаток | Всего | К выдаче (1л) | Исх. остаток | Подпись сотрудника |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ idx + 1 }} | {{ it.fio }} | {{ it.position }} | {{ it.shifts_count }} | {{ it.daily_norm }} | {{ it.period_norm }} | {{ it.carried_balance_in }} | {{ it.total_liters }} | {{ it.liters_to_issue }} | {{ it.carried_balance_out }} | |
| ИТОГО: | {{ milkTotals.total_shifts }} | {{ milkTotals.total_period_norm }} | {{ milkTotals.total_balance_in }} | {{ milkTotals.total_liters }} | {{ milkTotals.total_issued_liters }} л (бут.) | {{ milkTotals.total_balance_out }} | ||||
Организация транспортировки выезжающих с вахты и заезжающих сотрудников: Отдел, Ф.И.О., Телефон, Пункт назначения, Заезд / Отъезд.
| № | Ф.И.О. сотрудника | Контактный телефон | Пункт назначения | Направление | Примечание | Действ. |
|---|---|---|---|---|---|---|
| В заявке пока нет сотрудников. Нажмите , чтобы выбрать сотрудников цеха. | ||||||
| {{ idx + 1 }} |
{{ item.fio }}
|
|||||
| ИТОГО ПО ПОДРАЗДЕЛЕНИЮ: | {{ transferTotals.total }} чел. | 🟢 Заезд: {{ transferTotals.arrivals }} 🔴 Отъезд: {{ transferTotals.departures }} | ||||
| № | Подразделение | Ф.И.О. сотрудника | Телефон | Пункт назначения | Направление | Примечание | Статус заявки |
|---|---|---|---|---|---|---|---|
| Нет данных по перевахтовке для выбранного периода. | |||||||
| {{ idx + 1 }} | {{ item.department_name }} | {{ item.fio }} | {{ item.phone || '—' }} | {{ item.destination }} | {{ item.direction === 'Заезд' ? '🟢 Заезд' : '🔴 Отъезд' }} | {{ item.comment || '—' }} | ✓ Сдана Черновик |
| ИТОГО ПО ВСЕМ ЦЕХАМ: | {{ transferAllManifestTotals.total }} чел. | 🟢 Заезд: {{ transferAllManifestTotals.arrivals }} 🔴 Отъезд: {{ transferAllManifestTotals.departures }} | |||||
| № | Отдел | Ф.И.О. сотрудника | Телефон | Пункт назначения | Заезд / Отъезд | Примечание | Подпись сотрудника |
|---|---|---|---|---|---|---|---|
| {{ idx + 1 }} | {{ it.department_name }} | {{ it.fio }} | {{ it.phone || '—' }} | {{ it.destination }} | {{ it.direction }} | {{ it.comment }} | |
| ИТОГО ПАССАЖИРОВ: | {{ transferViewMode === 'dept' ? transferTotals.total : transferAllManifestTotals.total }} чел. | Заезд: {{ transferViewMode === 'dept' ? transferTotals.arrivals : transferAllManifestTotals.arrivals }} / Отъезд: {{ transferViewMode === 'dept' ? transferTotals.departures : transferAllManifestTotals.departures }} | |||||
Цех: {{ getTransferDeptName(transferDeptId) }} (всего сотрудников: {{ transferDeptUsers.length }})
Краткосрочный визит с питанием (1–3 дня максимум)
Гостя можно зарегистрировать в любом подразделении компании
Номер карты будет привязан к гостю, чтобы проходы на кассе R-Keeper сопоставлялись автоматически.
Отметки питания будут автоматически проставлены в график вахты на дни пребывания.