// File: app/(dashboard)/correspondences/page.tsx "use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { Plus, Search, Filter, MoreHorizontal, FileText, Calendar, Eye } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; import { Checkbox } from "@/components/ui/checkbox"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; // --- Type Definitions --- type Correspondence = { id: string; documentNumber: string; subject: string; type: "Letter" | "Memo" | "RFI" | "Transmittal"; status: "Draft" | "Submitted" | "Approved" | "Rejected"; project: string; date: string; from: string; to: string; }; // --- Mock Data --- const mockData: Correspondence[] = [ { id: "1", documentNumber: "LCBP3-LET-GEN-001", subject: "Submission of Monthly Progress Report - January 2025", type: "Letter", status: "Submitted", project: "LCBP3-C1", date: "2025-01-05", from: "CNNC", to: "PAT", }, { id: "2", documentNumber: "LCBP3-RFI-STR-024", subject: "Clarification on Beam Reinforcement Detail at Zone A", type: "RFI", status: "Approved", project: "LCBP3-C2", date: "2025-01-10", from: "ITD-NWR", to: "TEAM", }, { id: "3", documentNumber: "LCBP3-MEMO-HR-005", subject: "Site Access Protocol Update", type: "Memo", status: "Draft", project: "LCBP3", date: "2025-01-12", from: "PAT", to: "All Contractors", }, { id: "4", documentNumber: "LCBP3-TRN-STR-011", subject: "Transmittal of Shop Drawings for Piling Works", type: "Transmittal", status: "Submitted", project: "LCBP3-C1", date: "2025-01-15", from: "CNNC", to: "CSC", }, ]; export default function CorrespondencesPage() { const router = useRouter(); const [searchTerm, setSearchTerm] = useState(""); const [typeFilter, setTypeFilter] = useState("ALL"); // Filter Logic const filteredData = mockData.filter((item) => { const matchesSearch = item.subject.toLowerCase().includes(searchTerm.toLowerCase()) || item.documentNumber.toLowerCase().includes(searchTerm.toLowerCase()); const matchesType = typeFilter === "ALL" || item.type === typeFilter; return matchesSearch && matchesType; }); const getStatusVariant = (status: string) => { switch (status) { case "Approved": return "success"; case "Rejected": return "destructive"; case "Draft": return "secondary"; default: return "default"; // Submitted } }; const handleCreate = () => { router.push("/correspondences/new"); }; return (
จัดการเอกสารเข้า-ออกทั้งหมดในโครงการ
{item.subject}