import React, { useState } from "react"; import { DashboardLayout } from "../layout"; import { Card, CardContent, CardHeader, CardTitle } from "~/components/ui/card"; import { Button } from "~/components/ui/button"; import { Input } from "~/components/ui/input"; import { Badge } from "~/components/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "~/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "~/components/ui/dropdown-menu"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "~/components/ui/dialog"; import { Label } from "~/components/ui/label"; import { Textarea } from "~/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "~/components/ui/select"; import { Plus, Search, Filter, MoreHorizontal, Edit, Trash2, Eye, Calendar, User, DollarSign, Clock, } from "lucide-react"; // Mock data for projects const mockProjects = [ { id: 1, name: "پروژه توسعه اپلیکیشن موبایل", manager: "علی احمدی", team: "تیم توسعه موبایل", status: "در حال انجام", priority: "بالا", startDate: "1403/01/15", endDate: "1403/06/30", budget: "500,000,000", progress: 65, description: "توسعه اپلیکیشن موبایل برای مدیریت پروژه‌ها", }, { id: 2, name: "پیاده‌سازی سیستم مدیریت محتوا", manager: "فاطمه کریمی", team: "تیم بک‌اند", status: "تکمیل شده", priority: "متوسط", startDate: "1402/10/01", endDate: "1403/02/15", budget: "750,000,000", progress: 100, description: "توسعه سیستم مدیریت محتوای وب", }, { id: 3, name: "بهینه‌سازی پایگاه داده", manager: "محمد رضایی", team: "تیم دیتابیس", status: "در انتظار", priority: "بالا", startDate: "1403/03/01", endDate: "1403/05/30", budget: "300,000,000", progress: 0, description: "بهینه‌سازی عملکرد پایگاه داده‌های موجود", }, { id: 4, name: "راه‌اندازی سیستم مانیتورینگ", manager: "سارا موسوی", team: "تیم DevOps", status: "در حال انجام", priority: "متوسط", startDate: "1403/02/01", endDate: "1403/04/15", budget: "400,000,000", progress: 30, description: "پیاده‌سازی سیستم نظارت و مانیتورینگ", }, { id: 5, name: "توسعه پنل مدیریت", manager: "رضا نوری", team: "تیم فرانت‌اند", status: "لغو شده", priority: "پایین", startDate: "1402/12/01", endDate: "1403/03/01", budget: "200,000,000", progress: 25, description: "توسعه پنل مدیریت برای ادمین‌ها", }, ]; const statusColors = { "در حال انجام": "info", "تکمیل شده": "success", "در انتظار": "warning", "لغو شده": "destructive", } as const; const priorityColors = { بالا: "destructive", متوسط: "warning", پایین: "secondary", } as const; export function ProjectsPage() { const [projects, setProjects] = useState(mockProjects); const [searchTerm, setSearchTerm] = useState(""); const [filterStatus, setFilterStatus] = useState("همه"); const [isAddDialogOpen, setIsAddDialogOpen] = useState(false); const [editingProject, setEditingProject] = useState(null); const [newProject, setNewProject] = useState({ name: "", manager: "", team: "", status: "در انتظار", priority: "متوسط", startDate: "", endDate: "", budget: "", description: "", }); const filteredProjects = projects.filter((project) => { const matchesSearch = project.name.toLowerCase().includes(searchTerm.toLowerCase()) || project.manager.toLowerCase().includes(searchTerm.toLowerCase()); const matchesStatus = filterStatus === "همه" || project.status === filterStatus; return matchesSearch && matchesStatus; }); const handleAddProject = () => { const id = Math.max(...projects.map((p) => p.id)) + 1; setProjects([...projects, { ...newProject, id, progress: 0 }]); setNewProject({ name: "", manager: "", team: "", status: "در انتظار", priority: "متوسط", startDate: "", endDate: "", budget: "", description: "", }); setIsAddDialogOpen(false); }; const handleEditProject = (project: any) => { setEditingProject(project); setNewProject(project); setIsAddDialogOpen(true); }; const handleUpdateProject = () => { setProjects( projects.map((p) => p.id === editingProject.id ? { ...newProject, id: editingProject.id, progress: editingProject.progress, } : p, ), ); setEditingProject(null); setNewProject({ name: "", manager: "", team: "", status: "در انتظار", priority: "متوسط", startDate: "", endDate: "", budget: "", description: "", }); setIsAddDialogOpen(false); }; const handleDeleteProject = (id: number) => { setProjects(projects.filter((p) => p.id !== id)); }; return (
{/* Page Header */}

مدیریت پروژه‌ها

مدیریت و پیگیری پروژه‌های فناوری و نوآوری

{editingProject ? "ویرایش پروژه" : "پروژه جدید"} {editingProject ? "اطلاعات پروژه را ویرایش کنید." : "اطلاعات پروژه جدید را وارد کنید."}
setNewProject({ ...newProject, name: e.target.value }) } className="font-persian" placeholder="نام پروژه را وارد کنید" />
setNewProject({ ...newProject, manager: e.target.value }) } className="font-persian" placeholder="نام مدیر پروژه" />
setNewProject({ ...newProject, team: e.target.value }) } className="font-persian" placeholder="نام تیم" />
setNewProject({ ...newProject, startDate: e.target.value, }) } className="font-persian" placeholder="1403/01/01" />
setNewProject({ ...newProject, endDate: e.target.value, }) } className="font-persian" placeholder="1403/06/01" />
setNewProject({ ...newProject, budget: e.target.value }) } className="font-persian" placeholder="500,000,000" />