diff --git a/src/components/admin/ui-kit/fulfillment-warehouse-2-demo.tsx b/src/components/admin/ui-kit/fulfillment-warehouse-2-demo.tsx index 9d06a7c..ff95964 100644 --- a/src/components/admin/ui-kit/fulfillment-warehouse-2-demo.tsx +++ b/src/components/admin/ui-kit/fulfillment-warehouse-2-demo.tsx @@ -56,14 +56,14 @@ export function FulfillmentWarehouse2Demo() { const [sortOrder, setSortOrder] = useState<"asc" | "desc">("asc"); const [expandedStores, setExpandedStores] = useState>(new Set()); - // Мок данные для статистики + // Данные для статистики - показываем только реальные данные const warehouseStats: WarehouseStats = { - products: { current: 2856, change: 124 }, - goods: { current: 1391, change: 87 }, - defects: { current: 43, change: -12 }, - pvzReturns: { current: 256, change: 34 }, - fulfillmentSupplies: { current: 189, change: 23 }, - sellerSupplies: { current: 534, change: 67 }, + products: { current: 0, change: 0 }, // Нет данных о продуктах + goods: { current: 0, change: 0 }, // Нет данных о товарах + defects: { current: 0, change: 0 }, // Нет данных о браке + pvzReturns: { current: 0, change: 0 }, // Нет данных о возвратах с ПВЗ + fulfillmentSupplies: { current: 0, change: 0 }, // Нет данных о расходниках ФФ + sellerSupplies: { current: 0, change: 0 }, // Нет данных о расходниках селлера }; // Мок данные для магазинов @@ -252,6 +252,7 @@ export function FulfillmentWarehouse2Demo() { {title} + {/* Показываем изменения всегда */}
= 0 ? "bg-green-500/20" : "bg-red-500/20" diff --git a/src/components/fulfillment-statistics/fulfillment-statistics-dashboard.tsx b/src/components/fulfillment-statistics/fulfillment-statistics-dashboard.tsx index 1164df3..51c0d63 100644 --- a/src/components/fulfillment-statistics/fulfillment-statistics-dashboard.tsx +++ b/src/components/fulfillment-statistics/fulfillment-statistics-dashboard.tsx @@ -46,38 +46,38 @@ export function FulfillmentStatisticsDashboard() { quickActions: true, }); - // Мок данные для статистики + // Реальные данные для статистики (пока отсутствуют) const statisticsData = { // Данные за все время - totalProducts: 15678, - totalDefects: 145, - totalSupplies: 2341, - totalRevenue: 45670000, - totalOrders: 8934, + totalProducts: 0, + totalDefects: 0, + totalSupplies: 0, + totalRevenue: 0, + totalOrders: 0, // Отправка на маркетплейсы - sentToWildberries: 8934, - sentToOzon: 4523, - sentToOthers: 1876, + sentToWildberries: 0, + sentToOzon: 0, + sentToOthers: 0, // Аналитика производительности - avgProcessingTime: 2.4, - defectRate: 0.92, - returnRate: 4.3, - customerSatisfaction: 4.8, + avgProcessingTime: 0, + defectRate: 0, + returnRate: 0, + customerSatisfaction: 0, // Тренды - revenueTrend: 18, - ordersTrend: 12, - defectsTrend: -8, - satisfactionTrend: 5, + revenueTrend: 0, + ordersTrend: 0, + defectsTrend: 0, + satisfactionTrend: 0, }; - // Данные склада (перенесено из fulfillment-warehouse) + // Данные склада (пока отсутствуют) const warehouseStats = { - efficiency: 94.5, - turnover: 2.3, - utilizationRate: 87, + efficiency: 0, + turnover: 0, + utilizationRate: 0, }; const formatNumber = (num: number) => { diff --git a/src/components/fulfillment-warehouse/fulfillment-warehouse-dashboard.tsx b/src/components/fulfillment-warehouse/fulfillment-warehouse-dashboard.tsx index e3ecc3b..98d09be 100644 --- a/src/components/fulfillment-warehouse/fulfillment-warehouse-dashboard.tsx +++ b/src/components/fulfillment-warehouse/fulfillment-warehouse-dashboard.tsx @@ -389,8 +389,8 @@ export function FulfillmentWarehouseDashboard() { return { products: { - current: totalProductsFromOrders, // Реальное количество товаров на складе - change: productsReceivedToday - productsUsedToday, // Реальное изменение за сутки + current: 0, // Нет данных о готовых продуктах для продажи + change: 0, // Нет данных об изменениях продуктов }, goods: { current: 0, // Нет реальных данных о готовых товарах @@ -695,20 +695,8 @@ export function FulfillmentWarehouseDashboard() { ) ); - // Реальные изменения товаров для этого партнера - const partnerProductsChange = - totalProducts > 0 - ? Math.floor( - (totalProducts / - (allProducts.reduce( - (sum, p: any) => sum + (p.orderedQuantity || 0), - 0 - ) || 1)) * - (productsReceivedToday - productsUsedToday) - ) - : Math.floor( - (productsReceivedToday - productsUsedToday) / totalVirtualPartners - ); + // Нет данных об изменениях продуктов для этого партнера + const partnerProductsChange = 0; // Реальные изменения расходников селлера для этого партнера const partnerSuppliesChange = @@ -720,9 +708,9 @@ export function FulfillmentWarehouseDashboard() { sum + (supply.currentStock || 0), 0 ) || 1)) * - suppliesReceivedToday + (suppliesReceivedToday - suppliesUsedToday) ) - : Math.floor(suppliesReceivedToday / totalVirtualPartners); + : Math.floor((suppliesReceivedToday - suppliesUsedToday) / totalVirtualPartners); return { id: `virtual-partner-${index + 1}`, @@ -977,9 +965,6 @@ export function FulfillmentWarehouseDashboard() { change: number; description: string; }) => { - // Генерируем случайные значения для положительных и отрицательных изменений - const positiveChange = Math.floor(Math.random() * 50) + 10; // от 10 до 59 - const negativeChange = Math.floor(Math.random() * 30) + 5; // от 5 до 34 const percentChange = current > 0 ? (change / current) * 100 : 0; return ( @@ -993,7 +978,7 @@ export function FulfillmentWarehouseDashboard() {
{title} - {/* Процентное изменение */} + {/* Процентное изменение - всегда показываем */}
{change >= 0 ? ( @@ -1013,17 +998,15 @@ export function FulfillmentWarehouseDashboard() {
{formatNumber(current)}
+ {/* Изменения - всегда показываем */}
- {/* Положительное изменение */} -
- - +{positiveChange} - -
- {/* Отрицательное изменение */} -
- - -{negativeChange} +
= 0 ? 'bg-green-500/20' : 'bg-red-500/20' + }`}> + = 0 ? 'text-green-400' : 'text-red-400' + }`}> + {change >= 0 ? '+' : ''}{change}
@@ -1483,12 +1466,12 @@ export function FulfillmentWarehouseDashboard() {
- +0 {/* ТЕСТ: Временно захардкожено для проверки */} + +{Math.max(totals.sellerSuppliesChange, 0)}
- -0 {/* ТЕСТ: Временно захардкожено для проверки */} + -{Math.max(-totals.sellerSuppliesChange, 0)}
diff --git a/src/components/seller-statistics/advertising-tab.tsx b/src/components/seller-statistics/advertising-tab.tsx index 37425cf..6ea4595 100644 --- a/src/components/seller-statistics/advertising-tab.tsx +++ b/src/components/seller-statistics/advertising-tab.tsx @@ -153,7 +153,7 @@ const CompactCampaignSelector = ({ selectedCampaigns: number[], loading: boolean }) => { - const [isExpanded, setIsExpanded] = useState(false) + const [isExpanded, setIsExpanded] = useState(true) // Автоматически разворачиваем для удобства const [showManualInput, setShowManualInput] = useState(false) const [manualIds, setManualIds] = useState('') const [selectedIds, setSelectedIds] = useState>(new Set(selectedCampaigns)) @@ -166,6 +166,20 @@ const CompactCampaignSelector = ({ const campaigns = campaignsData?.getWildberriesCampaignsList?.data?.adverts || [] + // Автоматически выбираем активные кампании при загрузке данных + useEffect(() => { + if (campaigns.length > 0 && selectedIds.size === 0) { + const activeCampaigns = campaigns + .filter((group: CampaignGroup) => group.status === 9) // Активные кампании + .flatMap((group: CampaignGroup) => group.advert_list.map((item: CampaignListItem) => item.advertId)) + .slice(0, 3) // Берем первые 3 активные кампании + + if (activeCampaigns.length > 0) { + setSelectedIds(new Set(activeCampaigns)) + } + } + }, [campaigns]) + // Функции для получения названий типов и статусов const getCampaignTypeName = (type: number) => { const types: Record = { @@ -280,7 +294,7 @@ const CompactCampaignSelector = ({ ) : ( <> - Загрузить + {selectedIds.size > 0 ? `Загрузить (${selectedIds.size})` : 'Выбрать'} )} @@ -1001,10 +1015,23 @@ export function AdvertisingTab({ selectedPeriod, useCustomDates, startDate, endD

Статистика рекламных кампаний

-

Выберите кампании для получения детальной статистики

-

+

Выберите кампании выше и нажмите “Загрузить” для получения статистики

+

Поддерживается API Wildberries /adv/v2/fullstats

+ + {/* Инструкция для пользователя */} +
+

+ + Как начать работу: +

+
    +
  1. Разверните селектор кампаний выше (нажмите кнопку с иконкой)
  2. +
  3. Выберите нужные кампании из списка или введите ID вручную
  4. +
  5. Нажмите кнопку “Загрузить” для получения статистики
  6. +
+
diff --git a/src/components/wb-warehouse/fulfillment-warehouse-tab.tsx b/src/components/wb-warehouse/fulfillment-warehouse-tab.tsx index 5cb3ec3..70888e8 100644 --- a/src/components/wb-warehouse/fulfillment-warehouse-tab.tsx +++ b/src/components/wb-warehouse/fulfillment-warehouse-tab.tsx @@ -35,49 +35,7 @@ export function FulfillmentWarehouseTab() { const [searchTerm, setSearchTerm] = useState('') const [selectedStatus, setSelectedStatus] = useState('all') - const [orders, setOrders] = useState([ - { - id: '1', - orderId: 'FL-2024-001', - customerName: 'Иван Петров', - items: [ - { name: 'Товар A', quantity: 2, sku: 'SKU-001' }, - { name: 'Товар B', quantity: 1, sku: 'SKU-002' } - ], - status: 'pending', - priority: 'high', - createdAt: '2024-01-15T10:30:00', - shippingAddress: 'Москва, ул. Ленина, 10', - totalValue: 3500 - }, - { - id: '2', - orderId: 'FL-2024-002', - customerName: 'Анна Сидорова', - items: [ - { name: 'Товар C', quantity: 1, sku: 'SKU-003' } - ], - status: 'processing', - priority: 'medium', - createdAt: '2024-01-14T15:20:00', - shippingAddress: 'СПб, пр. Невский, 25', - totalValue: 1200 - }, - { - id: '3', - orderId: 'FL-2024-003', - customerName: 'Олег Козлов', - items: [ - { name: 'Товар D', quantity: 3, sku: 'SKU-004' }, - { name: 'Товар E', quantity: 2, sku: 'SKU-005' } - ], - status: 'shipped', - priority: 'low', - createdAt: '2024-01-13T09:15:00', - shippingAddress: 'Екатеринбург, ул. Мира, 45', - totalValue: 5600 - } - ]) + const [orders, setOrders] = useState([]) const stats: FulfillmentStats = { totalOrders: orders.length,