Fix innerDocCard side one and two

This commit is contained in:
Vova 2025-12-13 23:59:24 +03:00
parent 619687df68
commit a4e96cf809
3 changed files with 45 additions and 25 deletions

View File

@ -866,8 +866,17 @@ watch(selectedRequisitionSideTwoId, async (newId) => {
selectedRequisitionSideTwo.value = requisitionSideTwoDetails.value;
deal.value.side_two_requisition_id = newId;
}
// Установка клиента в deal для стороны 2
if (requisitionSideTwoDetails.value?.client && typeof requisitionSideTwoDetails.value.client === 'object') {
deal.value.side_two_client_main = requisitionSideTwoDetails.value.client;
} else {
selectedRequisitionSideTwo.value = null; // Очищаем, если newId === null
deal.value.side_two_client_main = null;
}
console.log('Загружены основной клиент стороны 2:', deal.value.side_two_client_main);
} else {
selectedRequisitionSideTwo.value = null;
}
});
@ -910,7 +919,7 @@ watch(selectedObjectSideOneId, async (newId) => {
deal.value.side_one_object_id = newId;
}
} else {
selectedObjectSideOne.value = null; // Очищаем, если newId === null
selectedObjectSideOne.value = null;
}
});
@ -923,7 +932,7 @@ watch(selectedObjectSideTwoId, async (newId) => {
deal.value.side_two_object_id = newId;
}
} else {
selectedObjectSideTwo.value = null; // Очищаем, если newId === null
selectedObjectSideTwo.value = null;
}
});
@ -1179,12 +1188,31 @@ const saveDeal = async () => {
life: 3000,
});
// Обновляем локальное состояние сделки
// // Обновляем локальное состояние сделки
// if (response.data.deal) {
// //deal.value = response.data.deal;
// const rawDeal = response.data.deal;
//
// // Конвертируем строки в Date, чтобы избежать падений в computed
// if (rawDeal.deal_date) {
// rawDeal.deal_date = dayjs(rawDeal.deal_date, [
// 'YYYY-MM-DD HH:mm:ss',
// 'DD.MM.YYYY HH:mm'
// ], true).toDate();
// }
// if (rawDeal.created_at) {
// rawDeal.created_at = new Date(rawDeal.created_at);
// }
// if (rawDeal.updated_at) {
// rawDeal.updated_at = new Date(rawDeal.updated_at);
// }
//
// deal.value = rawDeal;
// }
if (response.data.deal) {
//deal.value = response.data.deal;
const rawDeal = response.data.deal;
const rawDeal = { ...response.data.deal };
// Конвертируем строки в Date, чтобы избежать падений в computed
// Конвертируем строки в Date
if (rawDeal.deal_date) {
rawDeal.deal_date = dayjs(rawDeal.deal_date, [
'YYYY-MM-DD HH:mm:ss',
@ -1198,8 +1226,11 @@ const saveDeal = async () => {
rawDeal.updated_at = new Date(rawDeal.updated_at);
}
deal.value = rawDeal;
// Вместо перезаписи обновляем поля
Object.assign(deal.value, rawDeal);
}
console.log('cat deal', response.data.deal)
//return response.data.deal;
return null;

View File

@ -1,8 +1,6 @@
<template>
<div v-if="deal && deal.id" class="dealAddContract">
<div class="modal-content">
<h3>Составить договор</h3>
<div class="mb-4 mt-4 add-contract-title">
<label class="mb-2">Бланк документа:</label>
<Select
@ -13,9 +11,6 @@
class="w-full"
:key="innerBlanksList.length"
>
<!-- <template #dropdownicon>-->
<!-- <DropdownIcon />-->
<!-- </template>-->
</Select>
</div>
@ -31,7 +26,6 @@
/>
</div>
<button @click="saveDealInnerDoc" class="mt-4 p-2 rounded w-full add-deal-contract-button">
Составить договор
</button>
@ -43,7 +37,6 @@
<script setup>
import {inject, onMounted, ref} from 'vue';
import { useLaravelApi } from '@/composables/useLaravelApi';
//import DropdownIcon from "@/shared/assets/icons/dropdown-icon.vue";
import Textarea from "primevue/textarea";
import Select from 'primevue/select';
@ -170,7 +163,7 @@ const saveDealInnerDoc = async () => {
client_id: client.id,
role: deal.side_one
})) || [])
].filter(Boolean), // Убираем null, если основного клиента нет
].filter(Boolean),
side_two: [
// Основной клиент стороны 2
(deal.side_two_client_main ? {
@ -182,7 +175,7 @@ const saveDealInnerDoc = async () => {
client_id: client.id,
role: deal.side_two
})) || [])
].filter(Boolean), // Убираем null, если основного клиента нет
].filter(Boolean),
};
console.log('Full payload:', payload);
@ -194,11 +187,7 @@ const saveDealInnerDoc = async () => {
if (response.data.success) {
console.log('[InnerDocAddModal] Doc сохранен:', response.data.data);
console.log('dialogRef.value:', dialogRef.value);
dialogRef.value.close(response.data.data);
//closeDialog(response.data.data);
} else {
// Обработка ошибок валидации
if (response.data.errors) {
@ -216,7 +205,6 @@ const saveDealInnerDoc = async () => {
}
};
</script>
<!--<style>-->

View File

@ -10,7 +10,7 @@
<!-- Сторона 1 -->
<div class="clients-inner-doc mt-4">
<h4 class="inner-doc-title">Сторона 1:</h4>
<div v-for="side in currentDeal[0]?.side_one || []" :key="side.client_id" class="mt-2 flex items-baseline">
<div v-for="side in currentDeal.side_one || []" :key="side.client_id" class="mt-2 flex items-baseline">
<span style="margin-right: 10px;" class="font-medium min-w-[80px]">{{ side.role }}:</span>
<div class="ml-2 underline">
<span>{{ getClientName(side) }} ({{ side.phone }})</span>
@ -21,7 +21,7 @@
<!-- Сторона 2 -->
<div class="clients-inner-doc mt-4">
<h4 class="inner-doc-title">Сторона 2:</h4>
<div v-for="side in currentDeal[0]?.side_two || []" :key="side.client_id" class="mt-2 flex items-baseline">
<div v-for="side in currentDeal.side_two || []" :key="side.client_id" class="mt-2 flex items-baseline">
<span style="margin-right: 10px;" class="font-medium min-w-[80px]">{{ side.role }}:</span>
<div class="ml-2 underline">
<span>{{ getClientName(side) }} ({{ side.phone }})</span>
@ -99,7 +99,8 @@ const confirm = useConfirm();
const toast = useToast();
const currentDeal = computed(() => {
return props.innerDoc.deals?.[0];
console.log('currentDeal', props.innerDoc.deals);
return props.innerDoc.deals?.[0] || {};
});
// Получаем pivot данные для текущего документа