From d7546d79d3020c5d26b98d327a967f6908ae2b48 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Sun, 5 Jul 2026 15:41:34 +0300 Subject: [PATCH] Fix clients side_two --- .../deal/addEdit/RequisitionDetails.vue | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/components/deal/addEdit/RequisitionDetails.vue b/src/components/deal/addEdit/RequisitionDetails.vue index 790b51d..01d1164 100644 --- a/src/components/deal/addEdit/RequisitionDetails.vue +++ b/src/components/deal/addEdit/RequisitionDetails.vue @@ -178,28 +178,30 @@ const emit = defineEmits(['closeDealRequisition', 'refreshClients']); const selectedClientIds = ref([]); let isUpdating = false; -watch(() => props.deal.side_one_clients, (newVal) => { - if (isUpdating) return; - if (props.side === 'sideOne' && newVal) { - selectedClientIds.value = newVal.map(c => c.id); - } -}, { deep: true }); +const clientsKey = computed(() => props.side === 'sideOne' ? 'side_one_clients' : 'side_two_clients'); -watch(() => props.deal.side_two_clients, (newVal) => { +// При монтировании — если данные уже загружены, сразу синхронизируем +const currentData = props.deal[clientsKey.value]; +if (currentData && Array.isArray(currentData) && currentData.length > 0) { + selectedClientIds.value = currentData.map(c => c.id); +} + +watch(() => props.deal[clientsKey.value], (newVal) => { if (isUpdating) return; - if (props.side === 'sideTwo' && newVal) { - selectedClientIds.value = newVal.map(c => c.id); + if (newVal && Array.isArray(newVal)) { + const newIds = newVal.map(c => c.id); + if (newIds.length !== selectedClientIds.value.length || newIds.some((id, i) => id !== selectedClientIds.value[i])) { + selectedClientIds.value = newIds; + } } }, { deep: true }); watch(selectedClientIds, (newIds) => { + if (isUpdating) return; isUpdating = true; const selectedClients = props.clientsList.filter(c => newIds.includes(c.id)); - if (props.side === 'sideOne') { - props.deal.side_one_clients = selectedClients; - } else if (props.side === 'sideTwo') { - props.deal.side_two_clients = selectedClients; - } + console.log(`[RequisitionDetails] ${props.side} watch selectedClientIds:`, newIds, '-> writing to deal.${clientsKey.value}'); + props.deal[clientsKey.value] = selectedClients; nextTick(() => { isUpdating = false; }); });