import React from "react"; import { Navigate } from "react-router-dom"; import { DriverDeliveryPlanner } from "../components/driver/DriverDeliveryPlanner"; import { LogisticsReadinessBoard } from "../components/logistics/LogisticsReadinessBoard"; import { OrderDetailPanel } from "../components/orders/OrderDetailPanel"; import { OrdersTable } from "../components/orders/OrdersTable"; import { Button } from "../components/UI/Button"; import { Modal } from "../components/UI/Modal"; import { Panel } from "../components/UI/Panel"; import { ProductGuidePanel } from "../components/dashboard/ProductGuidePanel"; import { useAuth } from "../context/AuthContext"; import { useOrderGroups } from "../hooks/useOrderGroups"; import { AppShell } from "../layouts/AppShell"; const ROLE_SECTION = { manager: { key: "orders", label: "Группы", description: "Реестр групп доставки, поиск и просмотр карточки.", }, logistician: { key: "logistics", label: "Логистика", description: "Группы доставки по готовности к уведомлению.", }, driver: { key: "deliveries", label: "Мои доставки", description: "Группы доставки по датам и статусам.", }, }; export const DashboardPage = () => { const { user, signOut } = useAuth(); const userRole = user?.role; const section = ROLE_SECTION[userRole] || ROLE_SECTION.manager; const [activeSection, setActiveSection] = React.useState(section.key); const [isGroupModalOpen, setIsGroupModalOpen] = React.useState(false); const { orderGroups, allOrderGroups, filteredOrderGroups, selectedOrderGroup, selectedOrderGroupId, setSelectedOrderGroupId, filters, setFilters, statusOptions, isLoading, loadError, } = useOrderGroups(); React.useEffect(() => { setActiveSection(section.key); }, [section.key]); const openGroupModal = React.useCallback((groupId) => { setSelectedOrderGroupId(groupId); setIsGroupModalOpen(true); }, []); const navItems = [ { key: section.key, label: section.label, description: section.description, badge: String(allOrderGroups.length || orderGroups.length || 0), }, ]; const guideSectionMeta = { key: "guide", label: "Справка", description: "Карта продукта, роли, сценарии и частые вопросы.", }; const activeSectionMeta = activeSection === "guide" ? guideSectionMeta : navItems[0]; const isGuideOpen = activeSection === "guide"; if (!user) { return ; } const renderManagerWorkspace = () => (
); const renderLogisticsWorkspace = () => (
); const renderDriverWorkspace = () => (
); const renderActiveSection = () => { if (activeSection === "guide") { return ; } if (userRole === "driver") { return renderDriverWorkspace(); } if (userRole === "logistician") { return renderLogisticsWorkspace(); } return renderManagerWorkspace(); }; return ( setActiveSection((current) => (current === "guide" ? section.key : "guide"))} isGuideOpen={isGuideOpen} navItems={navItems} activeSection={activeSection} onSectionChange={setActiveSection} sectionMeta={activeSectionMeta} > {isLoading ? ( Загружаем данные... ) : null} {loadError ? ( Не удалось загрузить данные. Обратитесь к администратору. ) : null} {renderActiveSection()} setIsGroupModalOpen(false)}>

Карточка группы доставки

Все данные из таблицы `order_groups`.

); };