import React, { useState } from "react"; import { Link } from "react-router-dom"; import { useQuery } from "@tanstack/react-query"; import { FaBuilding, FaPlus, FaSearch, FaFilter, FaDownload, FaEdit, FaEye, FaMapMarkerAlt, FaBox, FaArrowUp, FaExclamationTriangle, FaChartLine, } from "react-icons/fa"; import classNames from "classnames"; import { WarehouseTypeEnum } from "../../../types/wm"; import { mockWarehouses } from "../../../mocks/mockWarehouses"; import { getWarehouseTypeColor, getWarehouseTypeText, } from "../../../utils/erp"; const WarehouseList: React.FC = () => { const [searchTerm, setSearchTerm] = useState(""); const [filterType, setFilterType] = useState("all"); const [showFilters, setShowFilters] = useState(false); const { data: warehouses, isLoading, error, } = useQuery({ queryKey: ["warehouses", searchTerm, filterType], queryFn: async () => { await new Promise((resolve) => setTimeout(resolve, 500)); return mockWarehouses.filter((warehouse) => { const matchesSearch = warehouse.code.toLowerCase().includes(searchTerm.toLowerCase()) || warehouse.name.toLowerCase().includes(searchTerm.toLowerCase()); const matchesType = filterType === "all" || warehouse.warehouseType === filterType; return matchesSearch && matchesType; }); }, }); const getUtilizationColor = (utilization: number) => { const percentage = utilization; if (percentage >= 90) return "text-red-600"; if (percentage >= 75) return "text-yellow-600"; return "text-green-600"; }; if (isLoading) { return (
Toplam Depo
{warehouses?.length || 0}
Toplam Kapasite
{warehouses ?.reduce((acc, w) => acc + w.capacity, 0) .toLocaleString() || 0}
Kullanım Oranı
{warehouses?.length ? Math.round( (warehouses.reduce( (acc, w) => acc + w.currentUtilization, 0 ) / (warehouses.reduce((acc, w) => acc + w.capacity, 0) || 1)) * 100 ) : 0} %
Aktif Depo
{warehouses?.filter((w) => w.isActive).length || 0}
| Depo Bilgileri | Tür / Konum | Kapasite | Kullanım Oranı | Performans | Durum | İşlemler |
|---|---|---|---|---|---|---|
|
{warehouse.code}
{warehouse.name}
{warehouse.isMainWarehouse && (
Ana Depo
)}
|
{getWarehouseTypeText(warehouse.warehouseType)}
|
{warehouse.capacity.toLocaleString()} m³
Toplam Kapasite
|
Kullanılan:
{warehouse.currentUtilization.toLocaleString()} m³
= 90
? "bg-red-500"
: utilizationPercentage >= 75
? "bg-yellow-500"
: "bg-green-500"
)}
style={{
width: `${Math.min(utilizationPercentage, 100)}%`,
}}
/>
%{utilizationPercentage}
|
Son 30 gün
|
{warehouse.isActive ? "Aktif" : "Pasif"} |
|
Yeni depo ekleyerek başlayın.