Обновление компонентов интерфейса и оптимизация логики
- Добавлен компонент AppShell в RootLayout для улучшения структуры - Обновлен компонент Sidebar для предотвращения дублирования при рендеринге - Оптимизированы импорты в компонентах AdvertisingTab и SalesTab - Реализована логика кэширования статистики селлера в GraphQL резолверах
This commit is contained in:
@ -1,8 +1,8 @@
|
||||
'use client'
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
|
||||
import { useQuery, useMutation } from '@apollo/client'
|
||||
import React, { useState, useEffect } from 'react'
|
||||
import { useMutation, useQuery } from '@apollo/client'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { toast } from 'sonner'
|
||||
|
||||
import { Sidebar } from '@/components/dashboard/sidebar'
|
||||
@ -112,17 +112,17 @@ export function WBWarehouseDashboard() {
|
||||
|
||||
// Получаем аналитические данные для данного nmId
|
||||
const analytics = analyticsMap.get(card.nmID)
|
||||
if (analytics && Array.isArray(analytics)) {
|
||||
analytics.forEach((item: any) => {
|
||||
if (item.stocks && Array.isArray(item.stocks)) {
|
||||
item.stocks.forEach((stockItem: any) => {
|
||||
if (analytics && analytics.data && analytics.data.regions && Array.isArray(analytics.data.regions)) {
|
||||
analytics.data.regions.forEach((region: any) => {
|
||||
if (region.offices && Array.isArray(region.offices)) {
|
||||
region.offices.forEach((office: any) => {
|
||||
stock.stocks.push({
|
||||
warehouseId: stockItem.warehouseId || 0,
|
||||
warehouseName: String(stockItem.warehouseName || 'Неизвестный склад'),
|
||||
quantity: Number(stockItem.quantity) || 0,
|
||||
quantityFull: Number(stockItem.quantityFull) || 0,
|
||||
inWayToClient: Number(stockItem.inWayToClient) || 0,
|
||||
inWayFromClient: Number(stockItem.inWayFromClient) || 0,
|
||||
warehouseId: office.officeID || 0,
|
||||
warehouseName: String(office.officeName || 'Неизвестный склад'),
|
||||
quantity: Number(office.metrics?.stockCount) || 0,
|
||||
quantityFull: Number(office.metrics?.stockCount) || 0,
|
||||
inWayToClient: Number(office.metrics?.toClientCount) || 0,
|
||||
inWayFromClient: Number(office.metrics?.fromClientCount) || 0,
|
||||
})
|
||||
})
|
||||
}
|
||||
@ -363,12 +363,12 @@ export function WBWarehouseDashboard() {
|
||||
}, [cacheLoading, user?.organization, initialized])
|
||||
|
||||
return (
|
||||
<div className="h-screen flex overflow-hidden">
|
||||
<div className="h-screen flex overflow-hidden min-h-0">
|
||||
<Sidebar />
|
||||
<main className={`flex-1 ${getSidebarMargin()} px-6 py-4 overflow-hidden transition-all duration-300`}>
|
||||
<div className="h-full w-full flex flex-col">
|
||||
<main className={`flex-1 ${getSidebarMargin()} px-6 py-4 overflow-hidden transition-all duration-300 min-h-0 flex flex-col`}>
|
||||
<div className="h-full w-full flex flex-col min-h-0">
|
||||
{/* Табы */}
|
||||
<Tabs value={activeTab} onValueChange={setActiveTab} className="flex-1 flex flex-col">
|
||||
<Tabs value={activeTab} onValueChange={setActiveTab} className="flex-1 flex flex-col min-h-0">
|
||||
<TabsList className="grid grid-cols-3 w-full max-w-md mb-6 bg-white/5 border border-white/10">
|
||||
<TabsTrigger
|
||||
value="fulfillment"
|
||||
@ -390,12 +390,12 @@ export function WBWarehouseDashboard() {
|
||||
</TabsTrigger>
|
||||
</TabsList>
|
||||
|
||||
<div className="flex-1 overflow-hidden">
|
||||
<TabsContent value="fulfillment" className="h-full mt-0">
|
||||
<div className="flex-1 overflow-hidden min-h-0">
|
||||
<TabsContent value="fulfillment" className="h-full mt-0 min-h-0">
|
||||
<FulfillmentWarehouseTab />
|
||||
</TabsContent>
|
||||
|
||||
<TabsContent value="wildberries" className="h-full mt-0">
|
||||
<TabsContent value="wildberries" className="h-full mt-0 min-h-0">
|
||||
<WildberriesWarehouseTab
|
||||
stocks={stocks}
|
||||
warehouses={warehouses}
|
||||
@ -412,7 +412,7 @@ export function WBWarehouseDashboard() {
|
||||
/>
|
||||
</TabsContent>
|
||||
|
||||
<TabsContent value="my-warehouse" className="h-full mt-0">
|
||||
<TabsContent value="my-warehouse" className="h-full mt-0 min-h-0">
|
||||
<MyWarehouseTab />
|
||||
</TabsContent>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user