From 8b0d3cde009d96bf7eac2fa0b9f39613f58e73be Mon Sep 17 00:00:00 2001 From: Bivekich Date: Mon, 28 Jul 2025 14:49:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BA=D1=8D=D1=88=D0=B0=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81=D0=B0=20=D0=B7=D0=B0=D0=BA?= =?UTF-8?q?=D0=B0=D0=B7=D0=BE=D0=B2=20=D0=B2=20=D0=BA=D0=BE=D0=BC=D0=BF?= =?UTF-8?q?=D0=BE=D0=BD=D0=B5=D0=BD=D1=82=D0=B5=20RealSupplyOrdersTab.=20?= =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=20=D0=B2=D1=8B=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=20refetch=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D1=83?= =?UTF-8?q?=D1=81=D0=BF=D0=B5=D1=88=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BE=D0=B1?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D1=83=D1=81=D0=B0.=20=D0=A0=D0=B5=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=20=D0=BE=D1=82=D0=BB?= =?UTF-8?q?=D0=B0=D0=B4=D0=BE=D1=87=D0=BD=D0=BE=D0=B5=20=D0=BB=D0=BE=D0=B3?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20?= =?UTF-8?q?=D1=83=D0=BD=D0=B8=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20ID=20=D0=B7=D0=B0=D0=BA=D0=B0=D0=B7=D0=BE=D0=B2.?= =?UTF-8?q?=20=D0=9E=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B2=20=D0=BA=D1=8D?= =?UTF-8?q?=D1=88=D0=B5=20=D0=BF=D1=80=D0=B8=20=D0=B8=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B8=20=D1=81=D1=82=D0=B0=D1=82=D1=83?= =?UTF-8?q?=D1=81=D0=B0=20=D0=B7=D0=B0=D0=BA=D0=B0=D0=B7=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../real-supply-orders-tab.tsx | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/src/components/supplies/fulfillment-supplies/real-supply-orders-tab.tsx b/src/components/supplies/fulfillment-supplies/real-supply-orders-tab.tsx index 920f06c..62f5896 100644 --- a/src/components/supplies/fulfillment-supplies/real-supply-orders-tab.tsx +++ b/src/components/supplies/fulfillment-supplies/real-supply-orders-tab.tsx @@ -180,7 +180,6 @@ export function RealSupplyOrdersTab() { onCompleted: (data) => { if (data.updateSupplyOrderStatus.success) { toast.success(data.updateSupplyOrderStatus.message); - refetch(); } else { toast.error(data.updateSupplyOrderStatus.message); } @@ -189,6 +188,45 @@ export function RealSupplyOrdersTab() { console.error("Error updating supply order status:", error); toast.error("Ошибка при обновлении статуса заказа"); }, + update: (cache, { data }) => { + if (data?.updateSupplyOrderStatus?.success && data?.updateSupplyOrderStatus?.order) { + console.log(`✅ Обновляем кэш для заказа ${data.updateSupplyOrderStatus.order.id} на статус ${data.updateSupplyOrderStatus.order.status}`); + + // Точечно обновляем кэш для конкретного заказа + cache.modify({ + id: cache.identify(data.updateSupplyOrderStatus.order), + fields: { + status() { + console.log(`📝 Обновляем поле status для заказа ${data.updateSupplyOrderStatus.order.id}`); + return data.updateSupplyOrderStatus.order.status; + }, + }, + }); + + // Также обновляем данные в запросе GET_SUPPLY_ORDERS если нужно + try { + const existingData = cache.readQuery({ query: GET_SUPPLY_ORDERS }) as any; + if (existingData?.supplyOrders) { + console.log(`📋 Обновляем список заказов в кэше, всего заказов: ${existingData.supplyOrders.length}`); + cache.writeQuery({ + query: GET_SUPPLY_ORDERS, + data: { + ...existingData, + supplyOrders: existingData.supplyOrders.map((order: any) => { + if (order.id === data.updateSupplyOrderStatus.order.id) { + console.log(`🎯 Найден и обновлен заказ ${order.id}`); + return { ...order, status: data.updateSupplyOrderStatus.order.status }; + } + return order; + }), + }, + }); + } + } catch (error) { + console.log("Cache update fallback - data not in cache yet", error); + } + } + }, } ); @@ -202,6 +240,20 @@ export function RealSupplyOrdersTab() { } ); + // Отладочное логирование для проверки дублирующихся ID + React.useEffect(() => { + if (incomingSupplyOrders.length > 0) { + const ids = incomingSupplyOrders.map(order => order.id); + const uniqueIds = new Set(ids); + if (ids.length !== uniqueIds.size) { + console.warn(`⚠️ Обнаружены дублирующиеся ID заказов! Всего: ${ids.length}, уникальных: ${uniqueIds.size}`); + console.warn('Дублирующиеся ID:', ids.filter((id, index) => ids.indexOf(id) !== index)); + } else { + console.log(`✅ Все ID заказов уникальны: ${ids.length} заказов`); + } + } + }, [incomingSupplyOrders]); + // Функции для работы с таблицей const toggleOrderExpansion = (orderId: string) => { const newExpanded = new Set(expandedOrders); @@ -223,6 +275,8 @@ export function RealSupplyOrdersTab() { }; const handleStatusUpdate = async (orderId: string, status: string) => { + console.log(`🔄 Обновляем статус заказа ${orderId} на ${status}`); + try { await updateSupplyOrderStatus({ variables: {