📅 {{ t('page.daily_stats') }} 📆 {{ t('page.period_stats') }} 🏆 {{ t('page.top_workers') }} 📍 {{ t('page.current_activity') }} ⚙️ {{ t('page.settings') }} 🏢 {{ t('page.org_settings') }} 📋 {{ t('page.attendance') }} 🕐 {{ t('page.shift_analysis') }} 🌾 {{ t('page.area_efficiency') }} 🔄 {{ t('page.turnover') }} ✏️ {{ t('page.crop_audit') }} 📦 {{ t('page.box_efficiency') }}
📊 {{ t('chart.efficiency_distribution') }}
🥧 {{ t('chart.efficiency_shares') }}
🏆 {{ t('chart.top10_workers') }}
⏱️ {{ t('chart.work_types_analysis') }}
📈 {{ t('chart.productivity_vs_earnings') }}
👥 {{ t('tbl.title.workers_list') }}
| {{ t('tbl.num') }} | {{ t('tbl.name') }} | {{ t('tbl.barcode') }} | {{ t('tbl.boxes') }} | {{ t('tbl.weight_kg') }} | {{ t('tbl.hours') }} | {{ t('tbl.piecework') }} | {{ t('tbl.timework') }} | {{ t('tbl.earnings') }} | {{ t('tbl.efficiency') }} | 📦/ч |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ (currentPage - 1) * itemsPerPage + index + 1 }} | {{ worker.name }} | {{ worker.barcode }} |
{{ worker.total_boxes || worker.boxes_count || 0 }} | {{ (worker.total_weight || worker.weight_kg || 0).toFixed(1) }} | {{ worker.total_hours || '00:00' }} | {{ worker.piecework_hours || '00:00' }} | {{ worker.timework_hours || '00:00' }} | {{ (worker.total_earnings || worker.earnings || 0).toFixed(2) }} {{ t('common.currency') }} | {{ (worker.efficiency_percent || worker.efficiency_score || 0).toFixed(1) }}% | {{ worker.scan_boxes_per_hour || worker.boxes_per_hour || 0 }} |
📊 {{ t('chart.efficiency_distribution') }}
🥧 {{ t('chart.efficiency_shares') }}
🏆 {{ t('chart.top10_workers') }}
⏱️ {{ t('chart.work_types_analysis') }}
📈 {{ t('chart.productivity_vs_earnings') }}
👥 {{ t('tbl.title.workers_period') }}
| {{ t('tbl.num') }} | {{ t('tbl.name') }} | {{ t('tbl.days') }} | {{ t('tbl.boxes') }} | {{ t('tbl.weight') }} | {{ t('tbl.hours') }} | {{ t('tbl.earnings') }} | {{ t('tbl.efficiency') }} | 📦/ч |
|---|---|---|---|---|---|---|---|---|
| {{ (currentPage - 1) * itemsPerPage + index + 1 }} | {{ worker.name }} | {{ worker.days_worked || 0 }} | {{ worker.total_boxes || worker.boxes_count || 0 }} | {{ (worker.total_weight || 0).toFixed(1) }} | {{ worker.total_hours || '00:00' }} | {{ (worker.total_earnings || 0).toFixed(2) }} {{ t('common.currency') }} | {{ (worker.efficiency_percent || 0).toFixed(1) }}% | {{ worker.scan_boxes_per_hour || worker.boxes_per_hour || 0 }} |
{{ worker.name }}
{{ t('top.no_data') }}
📭 {{ t('current.no_activity') }}
📦 {{ t('settings.piecework_coefficient') }}
{{ t('settings.piecework_formula') }}
⏱️ {{ t('settings.timework_coefficients') }}
{{ t('settings.timework_formula') }}
🎯 {{ t('settings.efficiency_thresholds') }}
🗄️ {{ t('settings.org_cache') }}
{{ t('settings.cache_help') }}
| {{ t('table.worker') }} | {{ t('report.days_present') }} | {{ t('report.total_hours') }} | {{ d.substring(5) }} |
|---|---|---|---|
| {{ w.worker_name }} | {{ w.days_present }} | {{ w.total_hours }} | ✓ — |
{{ t('report.select_period') }}
| {{ t('report.hour') }} | {{ t('report.record_count') }} | {{ t('report.unique_workers') }} |
|---|---|---|
| {{ h.hour }}:00 — {{ h.hour }}:59 | {{ h.count }} | {{ h.unique_workers }} |
{{ t('report.select_period') }}
| {{ t('table.area') }} | {{ t('report.area_size_ha') }} | {{ t('report.qty_total') }} | {{ t('report.qty_per_ha') }} | {{ t('report.weight_total') }} | {{ t('report.weight_per_ha') }} | {{ t('report.hours_total') }} | {{ t('report.qty_per_hour') }} | {{ t('report.total_cost') }} | {{ t('report.cost_per_ha') }} | {{ t('report.workers_count') }} |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ a.area_name }} | {{ a.area_size }} | {{ a.total_quantity }} | {{ a.quantity_per_ha }} | {{ a.total_weight }} | {{ a.weight_per_ha }} | {{ a.total_hours }} | {{ a.quantity_per_hour }} | {{ a.total_pay }} | {{ a.pay_per_ha }} | {{ a.unique_workers }} |
{{ t('report.select_period') }}
🟢 {{ t('report.hired_list') }}
| {{ t('table.worker') }} | {{ t('report.hiring_date') }} |
|---|---|
| {{ w.name }} | {{ w.hiring_date }} |
🔴 {{ t('report.fired_list') }}
| {{ t('table.worker') }} | {{ t('report.firing_date') }} |
|---|---|
| {{ w.name }} | {{ w.firing_date }} |
{{ t('report.select_period') }}
{{ t('report.by_user') }}
| {{ t('report.user') }} | {{ t('report.count') }} | Δ {{ t('report.quantity') }} | Δ {{ t('report.weight') }} |
|---|---|---|---|
| {{ userName }} | {{ stats.count }} | {{ stats.qty_delta }} | {{ stats.wt_delta }} |
| {{ t('report.date_mod') }} | {{ t('table.worker') }} | {{ t('table.area') }} | {{ t('report.class') }} | {{ t('report.user') }} | {{ t('report.qty_before') }} | {{ t('report.qty_after') }} | Δ |
|---|---|---|---|---|---|---|---|
| {{ e.date_time_mod }} | {{ e.worker_name }} | {{ e.area_name }} | {{ e.class_name }} | {{ e.user_name }} | {{ e.quantity_before }} | {{ e.quantity_after }} | {{ e.quantity_delta }} |
{{ reportData.message }}
{{ t('report.select_period') }}
| # | {{ t('table.worker') }} | {{ reportData.is_single_day ? t('report.box_count') : t('report.avg_boxes_day') }} | {{ t('report.first_scan') }} | {{ t('report.last_scan') }} | {{ reportData.is_single_day ? t('report.duration') : t('report.avg_duration') }} | {{ reportData.is_single_day ? t('report.boxes_per_hour') : t('report.avg_bph') }} | {{ t('report.avg_weight') }} | {{ t('report.days_worked') }} |
|---|---|---|---|---|---|---|---|---|
| {{ idx + 1 }} | {{ w.name }} | {{ reportData.is_single_day ? w.box_count : w.avg_boxes_per_day }} | {{ w.first_scan ? w.first_scan.substring(11, 16) : '—' }} | {{ w.last_scan ? w.last_scan.substring(11, 16) : '—' }} | {{ w.duration_display }} | {{ w.boxes_per_hour }} | {{ w.avg_weight }} | {{ w.days_worked }} |
{{ reportData.message }}
{{ t('report.select_period') }}