@extends('layouts.app') @section('title', '專案清單') @push('styles') @endpush @section('content') @php $typeRank = ['產品'=>1,'開發'=>2,'保固'=>3,'維護'=>4,'結束'=>5]; $typeCls = ['開發'=>'rm5-type-dev','維護'=>'rm5-type-maint','產品'=>'rm5-type-prod','結束'=>'rm5-type-end','保固'=>'rm5-type-war']; $viewMode = \App\Models\UserUiPreference::viewMode(); @endphp {{-- ── 頂部深藍欄 ── --}}
{{ config('app.company_name') }} 專案管理平台
{{-- ── Tab 導覽 ── --}}
專案清單 活動 議題清單
@can('create', App\Models\Project::class) + 新增專案 @endcan
{{-- ── 頁面主體 ── --}}

專案清單

{{-- 到期提醒 --}} @if ($soonToExpire->count())
⏰ 即將到期專案提醒
@endif {{-- 篩選器 --}}
等於
@can('create', App\Models\Project::class) 📊 匯出 Excel 📄 匯出 CSV @endcan
{{-- 選項清單(摺疊) --}}
目前無自訂選項。
{{-- 多欄卡片 --}} @php $grouped = $projects->groupBy(fn($p) => $p->client?->name ?? '(未分類)'); @endphp
@foreach ($grouped as $clientName => $clientProjects) @php $safeId = 'rc_' . $loop->index; $topLevel = $clientProjects->whereNull('parent_id'); $children = $clientProjects->whereNotNull('parent_id')->groupBy('parent_id'); @endphp
@foreach ($topLevel->sortBy(fn($p)=>$typeRank[$p->project_type]??5) as $p)
{{ $p->project_type }} {{ $p->name }} @can('update', $p) 👤 @endcan
@if($p->description)
{{ Str::limit($p->description, 60) }}
@endif {{-- 子專案 --}} @if(isset($children[$p->id]) && $children[$p->id]->count())
@foreach($children[$p->id]->sortBy(fn($c)=>$c->name) as $child)
{{ $child->project_type }} {{ $child->name }} @can('update', $child)👤@endcan
@endforeach
@endif @endforeach
@can('update', $clientProjects->first())
+ 新增此客戶專案
@endcan
@endforeach
找不到符合的專案。
{{-- /rm5-page --}} @endsection @push('scripts') @endpush