Обновлен компонент панели поставок: изменены вкладки для товаров и расходников, добавлены новые вкладки для детального просмотра товаров и расходников. Обновлены интерфейсы и логика отображения данных, улучшена читаемость кода. Добавлена интеграция с GraphQL для получения данных о сотрудниках и логистических партнерах.

This commit is contained in:
Veronika Smirnova
2025-07-21 17:48:25 +03:00
parent 155c6c95cd
commit 4b468a369d
5 changed files with 2217 additions and 126 deletions

View File

@ -1,54 +1,66 @@
"use client"
"use client";
import { useState } from 'react'
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
import { Card } from '@/components/ui/card'
import { Sidebar } from '@/components/dashboard/sidebar'
import { useSidebar } from '@/hooks/useSidebar'
import { Package, Truck, Wrench, ArrowLeftRight } from 'lucide-react'
import { useState } from "react";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { Card } from "@/components/ui/card";
import { Sidebar } from "@/components/dashboard/sidebar";
import { useSidebar } from "@/hooks/useSidebar";
import { Building2, ShoppingCart } from "lucide-react";
// Импорты компонентов подразделов
import { GoodsSuppliesTab } from './goods-supplies/goods-supplies-tab'
import { MaterialsSuppliesTab } from './materials-supplies/materials-supplies-tab'
import { FulfillmentSuppliesTab } from "./fulfillment-supplies/fulfillment-supplies-tab";
import { MarketplaceSuppliesTab } from "./marketplace-supplies/marketplace-supplies-tab";
export function FulfillmentSuppliesDashboard() {
const { getSidebarMargin } = useSidebar()
const [activeTab, setActiveTab] = useState('goods')
const { getSidebarMargin } = useSidebar();
const [activeTab, setActiveTab] = useState("fulfillment");
return (
<div className="h-screen flex overflow-hidden">
<Sidebar />
<main className={`flex-1 ${getSidebarMargin()} px-4 py-3 overflow-hidden transition-all duration-300`}>
<main
className={`flex-1 ${getSidebarMargin()} px-4 py-3 overflow-hidden transition-all duration-300`}
>
<div className="h-full w-full flex flex-col">
{/* Основной контент с табами */}
<div className="flex-1 overflow-hidden">
<Tabs value={activeTab} onValueChange={setActiveTab} className="h-full flex flex-col">
<Tabs
value={activeTab}
onValueChange={setActiveTab}
className="h-full flex flex-col"
>
<TabsList className="grid w-full grid-cols-2 bg-white/5 backdrop-blur border-white/10 flex-shrink-0 h-10">
<TabsTrigger
value="goods"
<TabsTrigger
value="fulfillment"
className="data-[state=active]:bg-white/20 data-[state=active]:text-white text-white/70 flex items-center gap-1 text-sm"
>
<Package className="h-3 w-3" />
Товары
<Building2 className="h-3 w-3" />
Поставки на ФФ
</TabsTrigger>
<TabsTrigger
value="materials"
<TabsTrigger
value="marketplace"
className="data-[state=active]:bg-white/20 data-[state=active]:text-white text-white/70 flex items-center gap-1 text-sm"
>
<Wrench className="h-3 w-3" />
Расходники
<ShoppingCart className="h-3 w-3" />
Поставки на маркетплейсы
</TabsTrigger>
</TabsList>
<TabsContent value="goods" className="flex-1 overflow-hidden mt-3">
<TabsContent
value="fulfillment"
className="flex-1 overflow-hidden mt-3"
>
<Card className="glass-card h-full overflow-hidden p-0">
<GoodsSuppliesTab />
<FulfillmentSuppliesTab />
</Card>
</TabsContent>
<TabsContent value="materials" className="flex-1 overflow-hidden mt-3">
<TabsContent
value="marketplace"
className="flex-1 overflow-hidden mt-3"
>
<Card className="glass-card h-full overflow-hidden p-0">
<MaterialsSuppliesTab />
<MarketplaceSuppliesTab />
</Card>
</TabsContent>
</Tabs>
@ -56,5 +68,5 @@ export function FulfillmentSuppliesDashboard() {
</div>
</main>
</div>
)
}
);
}