@extends('layouts.app') @section('title', '工時總表') @push('styles') @endpush @section('content')
{{-- ① 頂部控制區 --}} @php $today = \Carbon\Carbon::today(); $dayNames = ['日','一','二','三','四','五','六']; $todayLabel = $today->format('Y/m/d') . '(' . $dayNames[$today->dayOfWeek] . ')'; @endphp
{{-- 上週 --}} {{-- 週選擇下拉 --}} {{-- 下週 --}} {{-- 分隔 --}}
{{-- 本週 --}} {{-- 日期查詢(點擊開啟日曆,選日期後跳轉至該週)--}}
查詢日期
{{-- 彈性空間 --}}
{{-- 小時 / 人天 切換 --}}
{{-- ② 篩選區 --}}
進階篩選
{{-- 人員篩選 --}}
不選即顯示全部
{{-- 專案類型篩選 --}}
@foreach(['開發','維護','保固','其他'] as $fixedType) @endforeach
@if(count($userStats) === 0)
本週尚無工時記錄。
@else {{-- ② 矩陣表格 --}}
專案工時矩陣 — {{ $weekStartStr }} ~ {{ $weekEndStr }}
@foreach($userStats as $uid => $stat) @endforeach @foreach($projectsByType as $type => $projects) {{-- 類型分類列 --}} @foreach($projects as $project) @php $rowTotal = 0; $rowTotalMd = 0; foreach(array_keys($userStats) as $uid) { $rowTotal += $matrix[$project->id][$uid]['hours'] ?? 0; $rowTotalMd += $matrix[$project->id][$uid]['man_days'] ?? 0; } @endphp @php $pm = $projectMetrics[$project->project_id] ?? []; @endphp @foreach(array_keys($userStats) as $uid) @php $h = $matrix[$project->id][$uid]['hours'] ?? 0; $md = $matrix[$project->id][$uid]['man_days'] ?? 0; @endphp @endforeach {{-- 累積總人天 --}} {{-- 累計執行人天佔比 --}} {{-- 與前周比較(系統) --}} {{-- 實際完成比 --}} {{-- 與前周比較(實際):無歷史快照 --}} {{-- 進度差異比 --}} @endforeach @endforeach @php $extraCols = 6; @endphp {{-- 實際執行人天 --}} @foreach($userStats as $uid => $stat) @endforeach @for($i = 0; $i < $extraCols; $i++)@endfor {{-- 應執行人天 --}} @foreach($userStats as $uid) @endforeach @for($i = 0; $i < $extraCols; $i++)@endfor {{-- 加班時數 --}} @foreach($userStats as $uid => $stat) @php $ot = max(0, $stat['total_hours'] - $weekStandardHours); @endphp @endforeach @for($i = 0; $i < $extraCols; $i++)@endfor
客戶 專案名稱 預計結案日 評估人天 {{ $stat['user']->name }}
{{ rtrim(rtrim(number_format($stat['total_hours'], 2), '0'), '.') }}小時 {{ number_format($stat['total_man_days'], 2) }}天
合計 累積總人天 累計執行
人天佔比
與前周比較
(系統)
實際完成比 與前周比較
(實際)
進度差異比
{{ $type }}
@php $clientName = $project->client?->name ?? '—'; @endphp {{ $clientName }} {{ $project->name }} {{ $project->end_date ? \Carbon\Carbon::parse($project->end_date)->format('Y-m-d') : '—' }} @if(!is_null($estimatedManDays[$project->project_id] ?? null)) {{ $estimatedManDays[$project->project_id] }}天 @else @endif @if($h > 0) {{ number_format($h, 2) }}小時 {{ number_format($md, 2) }}天 @else @endif {{ $rowTotal > 0 ? number_format($rowTotal, 2).'小時' : '—' }} {{ $rowTotalMd > 0 ? number_format($rowTotalMd, 2).'天' : '—' }} {{ isset($pm['cum_md']) && $pm['cum_md'] > 0 ? number_format($pm['cum_md'], 1).'天' : '—' }} @if(!is_null($pm['cum_ratio'] ?? null)) {{ $pm['cum_ratio'] }}% @else @endif @if(!is_null($pm['sys_delta'] ?? null)) @php $d = $pm['sys_delta']; @endphp {{ $d > 0 ? '+' : '' }}{{ $d }}% @else @endif @if(!is_null($pm['actual_done'] ?? null)) {{ $pm['actual_done'] }}% @else @endif @if(!is_null($pm['progress_gap'] ?? null)) @php $gap = $pm['progress_gap']; @endphp {{ $gap > 0 ? '+' : '' }}{{ $gap }}% @else @endif
實際執行人天 {{ number_format($stat['total_man_days'], 1) }}天({{ number_format($stat['total_hours'], 2) }}小時) {{ number_format($totals['man_days'], 1) }}天({{ number_format($totals['hours'], 2) }}小時)
應執行人天(週標準) {{ $weekStandardDays }}天{{ number_format($weekStandardHours, 2) }}小時
加班時數 {{ $ot > 0 ? number_format($ot, 2).'小時' : '—' }} @php $totalOt = max(0, $totals['hours'] - $weekStandardHours * count($userStats)); @endphp {{ $totalOt > 0 ? number_format($totalOt, 2).'小時' : '—' }}
@endif
{{-- ── 詳細填報 Modal ── --}} @endsection @push('scripts') @endpush