From 4b7fd59e61a5686e1fc784d9a27d03ce1f0fefbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Tue, 16 Sep 2025 00:29:07 +0300 Subject: [PATCH] Container Maintenance Management --- .../Seeds/SeederData.json | 12 +- .../components/AssignNotificationModal.tsx | 137 +-- .../components/AssignWorkOrderModal.tsx | 118 +- .../components/AssignWorkOrdersModal.tsx | 240 ++-- .../ChangeNotificationStatusModal.tsx | 156 ++- .../components/ChangeWorkOrderStatusModal.tsx | 222 ++-- .../CreateWorkOrderFromNotificationModal.tsx | 233 ++-- .../components/CreateWorkOrderModal.tsx | 269 ++-- .../components/EditFaultNotificationModal.tsx | 272 ++--- .../components/EditMaintenancePlanModal.tsx | 249 ++-- .../maintenance/components/EditTeamModal.tsx | 295 ++--- .../components/EditWorkCenterModal.tsx | 212 ++-- .../components/EditWorkOrderModal.tsx | 463 +++---- .../components/FaultNotifications.tsx | 860 ++++++------- .../components/MaintenanceCalendar.tsx | 547 ++++----- .../components/MaintenancePlanModal.tsx | 119 +- .../components/MaintenancePlans.tsx | 783 ++++++------ .../components/MaintenanceTeams.tsx | 800 ++++++------ .../components/MaintenanceWorkOrders.tsx | 955 +++++++-------- .../components/NewCalendarEventModal.tsx | 304 ++--- .../components/NewFaultNotificationModal.tsx | 232 ++-- .../components/NewMaintenancePlanModal.tsx | 263 ++-- .../maintenance/components/NewTeamModal.tsx | 307 ++--- .../components/NewWorkCenterModal.tsx | 229 ++-- .../components/NewWorkOrderModal.tsx | 342 ++---- .../components/PlanStatusChangeModal.tsx | 169 +-- .../components/StartWorkOrderModal.tsx | 174 ++- .../components/StatusUpdateModal.tsx | 118 +- .../components/TeamStatusChangeModal.tsx | 148 +-- .../components/ViewFaultNotificationModal.tsx | 141 +-- .../components/ViewMaintenancePlanModal.tsx | 243 ++-- .../maintenance/components/ViewTeamModal.tsx | 119 +- .../components/ViewWorkCenterModal.tsx | 195 ++- .../components/ViewWorkOrderModal.tsx | 169 +-- .../maintenance/components/WorkCenterForm.tsx | 1085 ++++++++--------- 35 files changed, 4620 insertions(+), 6560 deletions(-) diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json index cde35f6c..e3111487 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json @@ -3330,16 +3330,6 @@ "RequiredPermissionName": null, "IsDisabled": false }, - { - "ParentCode": "App.Maintenance", - "Code": "App.Maintenance.Equipment", - "DisplayName": "Ekipmanlar", - "Order": 1, - "Url": "/admin/maintenance/equipment", - "Icon": "FcEngineering", - "RequiredPermissionName": null, - "IsDisabled": false - }, { "ParentCode": "App.Maintenance", "Code": "App.Maintenance.Workcenters", @@ -3373,7 +3363,7 @@ { "ParentCode": "App.Maintenance", "Code": "App.Maintenance.Teams", - "DisplayName": "Bakım Takımları", + "DisplayName": "Bakım Ekipleri", "Order": 5, "Url": "/admin/maintenance/teams", "Icon": "FcConferenceCall", diff --git a/ui/src/views/maintenance/components/AssignNotificationModal.tsx b/ui/src/views/maintenance/components/AssignNotificationModal.tsx index c6132668..6e243959 100644 --- a/ui/src/views/maintenance/components/AssignNotificationModal.tsx +++ b/ui/src/views/maintenance/components/AssignNotificationModal.tsx @@ -1,18 +1,14 @@ -import React, { useState } from "react"; -import { FaTimes, FaSave, FaUser, FaUsers } from "react-icons/fa"; -import { PmFaultNotification } from "../../../types/pm"; -import { mockEmployees } from "../../../mocks/mockEmployees"; -import { mockMaintenanceTeams } from "../../../mocks/mockMaintenanceTeams"; +import React, { useState } from 'react' +import { FaTimes, FaSave, FaUser, FaUsers } from 'react-icons/fa' +import { PmFaultNotification } from '../../../types/pm' +import { mockEmployees } from '../../../mocks/mockEmployees' +import { mockMaintenanceTeams } from '../../../mocks/mockMaintenanceTeams' interface AssignNotificationModalProps { - isOpen: boolean; - onClose: () => void; - onSave: (assignments: { - notificationIds: string[]; - assignedTo?: string; - teamId?: string; - }) => void; - notifications: PmFaultNotification[]; + isOpen: boolean + onClose: () => void + onSave: (assignments: { notificationIds: string[]; assignedTo?: string; teamId?: string }) => void + notifications: PmFaultNotification[] } const AssignNotificationModal: React.FC = ({ @@ -21,46 +17,44 @@ const AssignNotificationModal: React.FC = ({ onSave, notifications, }) => { - const [assignmentType, setAssignmentType] = useState<"person" | "team">( - "person" - ); - const [assignedTo, setAssignedTo] = useState(""); - const [teamId, setTeamId] = useState(""); - const [errors, setErrors] = useState>({}); + const [assignmentType, setAssignmentType] = useState<'person' | 'team'>('person') + const [assignedTo, setAssignedTo] = useState('') + const [teamId, setTeamId] = useState('') + const [errors, setErrors] = useState>({}) - if (!isOpen || notifications.length === 0) return null; + if (!isOpen || notifications.length === 0) return null const validateForm = () => { - const newErrors: Record = {}; + const newErrors: Record = {} - if (assignmentType === "person" && !assignedTo) { - newErrors.assignedTo = "Kişi seçimi gerekli"; + if (assignmentType === 'person' && !assignedTo) { + newErrors.assignedTo = 'Kişi seçimi gerekli' } - if (assignmentType === "team" && !teamId) { - newErrors.teamId = "Ekip seçimi gerekli"; + if (assignmentType === 'team' && !teamId) { + newErrors.teamId = 'Ekip seçimi gerekli' } - setErrors(newErrors); - return Object.keys(newErrors).length === 0; - }; + setErrors(newErrors) + return Object.keys(newErrors).length === 0 + } const handleSave = () => { if (validateForm()) { const assignmentData = { notificationIds: notifications.map((n) => n.id), - ...(assignmentType === "person" ? { assignedTo } : { teamId }), - }; + ...(assignmentType === 'person' ? { assignedTo } : { teamId }), + } - onSave(assignmentData); - onClose(); + onSave(assignmentData) + onClose() // Reset form - setAssignmentType("person"); - setAssignedTo(""); - setTeamId(""); - setErrors({}); + setAssignmentType('person') + setAssignedTo('') + setTeamId('') + setErrors({}) } - }; + } return (
@@ -68,10 +62,7 @@ const AssignNotificationModal: React.FC = ({ {/* Header */}

Atama Yap

-
@@ -86,14 +77,12 @@ const AssignNotificationModal: React.FC = ({
{notifications.map((notification) => (
- - {notification.notificationCode} - - {" - "} + {notification.notificationCode} + {' - '} {notification.title} - {" ("} + {' ('} {notification.workCenter.code} - {")"} + {')'}
))}
@@ -101,18 +90,14 @@ const AssignNotificationModal: React.FC = ({ {/* Assignment Type */}
- +
{/* Person Assignment */} - {assignmentType === "person" && ( + {assignmentType === 'person' && (
- ); -}; + ) +} -export default AssignNotificationModal; +export default AssignNotificationModal diff --git a/ui/src/views/maintenance/components/AssignWorkOrderModal.tsx b/ui/src/views/maintenance/components/AssignWorkOrderModal.tsx index 73aef33f..1777a320 100644 --- a/ui/src/views/maintenance/components/AssignWorkOrderModal.tsx +++ b/ui/src/views/maintenance/components/AssignWorkOrderModal.tsx @@ -1,13 +1,13 @@ -import React, { useState } from "react"; -import { FaTimes, FaSave, FaWrench } from "react-icons/fa"; -import { mockMaintenancePlans } from "../../../mocks/mockMaintenancePlans"; -import { Team } from "../../../types/common"; +import React, { useState } from 'react' +import { FaTimes, FaSave, FaWrench } from 'react-icons/fa' +import { mockMaintenancePlans } from '../../../mocks/mockMaintenancePlans' +import { Team } from '../../../types/common' interface AssignWorkOrderModalProps { - isOpen: boolean; - onClose: () => void; - onSave: (assignments: { teamId: string; planIds: string[] }[]) => void; - selectedTeams: Team[]; + isOpen: boolean + onClose: () => void + onSave: (assignments: { teamId: string; planIds: string[] }[]) => void + selectedTeams: Team[] } const AssignWorkOrderModal: React.FC = ({ @@ -16,22 +16,20 @@ const AssignWorkOrderModal: React.FC = ({ onSave, selectedTeams, }) => { - const [assignments, setAssignments] = useState>({}); - const [bulkPlanIds, setBulkPlanIds] = useState([]); - const [useBulkAssignment, setUseBulkAssignment] = useState(true); + const [assignments, setAssignments] = useState>({}) + const [bulkPlanIds, setBulkPlanIds] = useState([]) + const [useBulkAssignment, setUseBulkAssignment] = useState(true) - if (!isOpen) return null; + if (!isOpen) return null // Get available maintenance plans - const availablePlans = mockMaintenancePlans.filter((plan) => plan.isActive); + const availablePlans = mockMaintenancePlans.filter((plan) => plan.isActive) const handleBulkPlanChange = (planId: string) => { setBulkPlanIds((prev) => - prev.includes(planId) - ? prev.filter((id) => id !== planId) - : [...prev, planId] - ); - }; + prev.includes(planId) ? prev.filter((id) => id !== planId) : [...prev, planId], + ) + } const handleIndividualPlanChange = (teamId: string, planId: string) => { setAssignments((prev) => ({ @@ -39,40 +37,40 @@ const AssignWorkOrderModal: React.FC = ({ [teamId]: prev[teamId]?.includes(planId) ? prev[teamId].filter((id) => id !== planId) : [...(prev[teamId] || []), planId], - })); - }; + })) + } const handleSave = () => { if (useBulkAssignment) { if (bulkPlanIds.length === 0) { - alert("Lütfen en az bir bakım planı seçin"); - return; + alert('Lütfen en az bir bakım planı seçin') + return } const bulkAssignments = selectedTeams.map((team) => ({ teamId: team.id, planIds: bulkPlanIds, - })); - onSave(bulkAssignments); + })) + onSave(bulkAssignments) } else { const individualAssignments = selectedTeams .map((team) => ({ teamId: team.id, planIds: assignments[team.id] || [], })) - .filter((assignment) => assignment.planIds.length > 0); + .filter((assignment) => assignment.planIds.length > 0) if (individualAssignments.length === 0) { - alert("Lütfen en az bir ekip için bakım planı seçin"); - return; + alert('Lütfen en az bir ekip için bakım planı seçin') + return } - onSave(individualAssignments); + onSave(individualAssignments) } - onClose(); + onClose() // Reset state - setAssignments({}); - setBulkPlanIds([]); - }; + setAssignments({}) + setBulkPlanIds([]) + } return (
@@ -85,10 +83,7 @@ const AssignWorkOrderModal: React.FC = ({ Seçili ekiplere ({selectedTeams.length}) bakım planları atayın

-
@@ -97,9 +92,7 @@ const AssignWorkOrderModal: React.FC = ({
{/* Assignment Mode Selection */}
-

- Atama Türü -

+

Atama Türü