@extends('layouts.app') @section('title', '工時填寫') @push('styles') @endpush @section('content') @php $srcIssue = (bool) \App\Models\SystemSetting::get('time_source_issue', false); $srcApi = (bool) \App\Models\SystemSetting::get('time_source_api', false); $srcBoard = (bool) \App\Models\SystemSetting::get('time_source_board', false); $srcProject = (bool) \App\Models\SystemSetting::get('time_source_project', false); $srcCount = 1 + ($srcIssue ? 1 : 0) + ($srcApi ? 1 : 0) + ($srcBoard ? 1 : 0) + ($srcProject ? 1 : 0); $srcCountText = ['', '一', '二', '三', '四'][$srcCount] ?? (string)$srcCount; @endphp
{{-- 頂部:返回 + 選擇器 --}}
@if (session('success')) @endif {{-- 當日概覽卡片 --}}
今日已記錄

{{ $dayStatistics['total_recorded_hours_display'] }} / {{ $dayStatistics['day_hours'] }} 小時

有記錄專案

{{ $dayStatistics['projects_with_records'] }} 個

選擇日期

{{ $selectedDay }}

{{-- 新增工時表單 --}}
新增工時記錄
@csrf
{{-- 提示 --}}
點擊詳細可展開填寫備註
{{-- 工時記錄列表 --}}
{{ $selectedDay }} 工時記錄
總計:{{ $dayStatistics['total_hours_display'] }} 小時
@forelse($projectTimeRecords as $index => $record)
{{-- 主要列 --}}
{{-- 第一欄:專案名稱與狀態 --}}
{{ $record['project_name'] }} {{ $record['status_text'] }} @if($srcBoard && $record['day_record']->isFromBoard()) 看板同步 @elseif($srcProject && $record['day_record']->source_time_entry_id) 專案工時 @elseif($srcIssue && $record['day_record']->isFromIssue()) 議題同步 @elseif($srcApi && $record['day_record']->isFromApi()) API 寫入 @else 手動輸入 @endif
{{ $record['client'] }}
{{-- 第二欄:備註(置中) --}}
@if($record['day_record']->comments)
{{ $record['day_record']->comments }}
@endif
{{-- 第三欄:工時輸入 + 操作按鈕 --}}
@if($record['day_record']) {{-- 已有記錄:顯示工時 + 儲存/刪除 --}}
@csrf @method('PUT')
工時
@csrf @method('DELETE')
@else {{-- 尚無記錄:快速新增 --}}
@csrf
工時
@endif
{{-- 展開區塊(僅已有記錄者) --}} @if($record['day_record'])
{{-- 第一欄:專案資訊 --}}
客戶 {{ $record['client'] }}
評估工時 {{ $record['estimated_hours'] !== null ? rtrim(rtrim(number_format($record['estimated_hours'], 2), '0'), '.').' 小時' : '—' }}
評估人天 {{ $record['estimated_man_days'] !== null ? $record['estimated_man_days'].' 天' : '—' }}
已用(全員) {{ number_format($record['used_man_days'], 1) }} 天 @if($record['estimated_man_days'] && $record['estimated_man_days'] > 0) ({{ number_format($record['used_man_days'] / $record['estimated_man_days'] * 100, 1) }}%) @endif
今日人天 {{ number_format((float)$record['day_record']->man_days, 2) }} 天
@if((float)$record['day_record']->overtime_hours > 0)
加班 {{ rtrim(rtrim(number_format((float)$record['day_record']->overtime_hours, 2), '0'), '.') }} 小時
@endif
{{-- 第二欄:週統計 --}}
本週工時
{{ rtrim(rtrim(number_format($record['this_week_hours'], 2), '0'), '.') }} 小時
與上週差異
@php $diff = $record['week_diff']; $diffColor = $diff > 0 ? 'text-success' : ($diff < 0 ? 'text-danger' : 'text-muted'); $diffIcon = $diff > 0 ? '+' : ($diff < 0 ? '' : ''); $diffText = $diff != 0 ? number_format(abs($diff), 1) . ' 小時' : '—'; @endphp
{!! $diffIcon !!}{{ $diffText }}
{{-- 第三欄:完成率 + 備註 --}}
{{-- 完成率 --}} @php // 優先:今日記錄 → 最近一次填報 → issues 計算 $doneVal = $record['day_record']->done_ratio ?? $record['recent_done_ratio'] ?? $record['project_done_ratio'] ?? 0; $doneSource = $record['day_record']->done_ratio !== null ? '' : ($record['recent_done_ratio'] !== null ? '(帶入上次填報)' : ''); @endphp
%
{{-- 備註 --}}
@endif
@empty

今日尚無工時記錄

請使用上方表單新增工時

@endforelse
工時紀錄說明: 工時紀錄會對應到每個專案,計算方式與來源如下:
@endsection @push('scripts') @endpush