// File: app/(dashboard)/projects/page.tsx "use client"; import { useState } from "react"; import { Plus, Search, MoreHorizontal, Folder, Calendar, BarChart3 } from "lucide-react"; import { useRouter } from "next/navigation"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; import { Progress } from "@/components/ui/progress"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Card, CardContent, CardHeader, CardTitle, CardDescription, CardFooter, } from "@/components/ui/card"; // Type สำหรับข้อมูล Project (Mockup ตาม Data Dictionary) interface Project { id: number; projectCode: string; projectName: string; status: "Active" | "Completed" | "On Hold"; progress: number; startDate: string; endDate: string; contractorName: string; } // Mock Data const mockProjects: Project[] = [ { id: 1, projectCode: "LCBP3", projectName: "โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)", status: "Active", progress: 45, startDate: "2021-01-01", endDate: "2025-12-31", contractorName: "Multiple Contractors", }, { id: 2, projectCode: "LCBP3-C1", projectName: "งานก่อสร้างงานทางทะเล (ส่วนที่ 1)", status: "Active", progress: 70, startDate: "2021-06-01", endDate: "2024-06-01", contractorName: "CNNC", }, { id: 3, projectCode: "LCBP3-C2", projectName: "งานก่อสร้างอาคาร ท่าเทียบเรือ (ส่วนที่ 2)", status: "Active", progress: 15, startDate: "2023-01-01", endDate: "2026-01-01", contractorName: "ITD-NWR Joint Venture", }, ]; export default function ProjectsPage() { const router = useRouter(); const [searchTerm, setSearchTerm] = useState(""); const filteredProjects = mockProjects.filter((project) => project.projectName.toLowerCase().includes(searchTerm.toLowerCase()) || project.projectCode.toLowerCase().includes(searchTerm.toLowerCase()) ); const getStatusVariant = (status: string) => { switch (status) { case "Active": return "success"; // ใช้ variant ที่เรา custom ไว้ใน badge.tsx case "Completed": return "default"; case "On Hold": return "warning"; default: return "secondary"; } }; const handleCreateProject = () => { router.push("/projects/new"); // อัปเดตเป็นลิงก์จริง }; const handleViewDetails = (id: number) => { router.push(`/projects/${id}`); }; return (
จัดการโครงการ สัญญา และความคืบหน้า