diff --git a/src/components/deal/DealModal.vue b/src/components/deal/DealModal.vue index 2771634..90d2168 100644 --- a/src/components/deal/DealModal.vue +++ b/src/components/deal/DealModal.vue @@ -22,7 +22,7 @@ Укажите сторону 1: @@ -32,20 +32,13 @@ {{ errorMessages.side_one }} - Выберите заявку: - - - - - + Заявка стороны 1: + @@ -78,7 +71,7 @@ Укажите сторону 2: @@ -88,7 +81,7 @@ {{ errorMessages.side_two }} - Выберите заявку: + Заявка стороны 2: import MyButton from "@/shared/UI/MyButton.vue"; -import {ref, onMounted, watch, inject, toRaw, markRaw} from "vue"; -import { useLaravelApi } from '@/composables/useLaravelApi'; +import {computed, inject, onMounted, ref, watch} from "vue"; +import {useLaravelApi} from '@/composables/useLaravelApi'; //import useDeal from '@/composables/useDeal'; -import { useToast } from "primevue/usetoast"; -import { useDialog } from 'primevue/usedialog'; +import {useToast} from "primevue/usetoast"; +import {useDialog} from 'primevue/usedialog'; import ConfirmDialog from 'primevue/confirmdialog'; import Toast from "primevue/toast"; import InputText from "primevue/inputtext"; @@ -455,6 +448,8 @@ const newDealReqId = dialogRef.value.data?.newDealReqId; let dealId = null; const isEditing = ref(false); +const isSideOneLoaded = ref(false); + const { data: dealData, fetchData: fetchDealData } = useLaravelApi(); const { data: employeesData, fetchData: fetchEmployeesData } = useLaravelApi(); const { data: requisitionsListData, fetchData: fetchRequisitionsListData } = useLaravelApi(); @@ -563,8 +558,10 @@ watch(() => newDealReqId, async (newVal) => { selectedRequisitionSideOneId.value = Number(newVal); - //ToDo роль - //deal.value.side_one = 'Продавец'; + deal.value.side_one = getSideByRequisitionType(reqData.type_id, reqData.type_name); + + isSideOneLoaded.value = true; + } catch (error) { console.error('Ошибка загрузки заявки:', error); showError('Не удалось загрузить заявку'); @@ -823,12 +820,23 @@ onMounted(async () => { const reqList = requisitions.data?.data?.map(item => ({ id: item.id, - name: item.name || `Заявка ${item.id}` + name: item.name || `Заявка ${item.id}`, + type_id: item.type_id })) || []; - requisitionsList.value = reqList; originalRequisitionsList.value = reqList; + if (isSideOneLoaded) { + const sideOneTypeId = selectedRequisitionSideOne.value.type?.heir || selectedRequisitionSideOne.value.type_id; + if (sideOneTypeId === 2) { + requisitionsList.value = reqList.filter(req => req.type_id !== 2); + } else { + requisitionsList.value = reqList.filter(req => req.type_id === 2); + } + } else { + requisitionsList.value = reqList; + } + } catch (error) { console.error('Ошибка загрузки:', error); showError('Не удалось загрузить данные'); @@ -859,7 +867,14 @@ watch(selectedRequisitionSideOneId, async (newId) => { }); // Получение деталей выбранной заявки 2 стороны -watch(selectedRequisitionSideTwoId, async (newId) => { +watch(selectedRequisitionSideTwoId, async (newId, oldId) => { + + if (oldId && newId !== oldId) { + selectedObjectSideTwoId.value = null; + selectedObjectSideTwo.value = null; + deal.value.side_two_object_id = null; + } + if (newId) { await fetchRequisitionSideTwoDetails(`/requisitions/${newId}`); if (requisitionSideTwoDetails.value) { @@ -874,7 +889,6 @@ watch(selectedRequisitionSideTwoId, async (newId) => { deal.value.side_two_client_main = null; } console.log('Загружены основной клиент стороны 2:', deal.value.side_two_client_main); - } else { selectedRequisitionSideTwo.value = null; } @@ -1256,6 +1270,44 @@ const saveDeal = async () => { } }; +const getSideByRequisitionType = (typeId) => { + if (typeId === 2) { + return 'Продавец'; + } + return 'Покупатель'; +}; + +// Список сторон в зависимости от типа заявки +const sideOneOptions = computed(() => { + if (!selectedRequisitionSideOne.value) return []; + const typeId = selectedRequisitionSideOne.value.type_id; + if (typeId === 2) { + return ['Продавец', 'Арендодатель', 'Застройщик']; + } + return ['Покупатель', 'Арендатор']; +}); + +const sideTwoOptions = computed(() => { + const sideOne = deal.value.side_one; + + if (!sideOne) return []; + + // Если сторона 1 - продавец/арендодатель/застройщик + if (sideOne === 'Продавец' || sideOne === 'Арендодатель' || sideOne === 'Застройщик') { + return ['Покупатель', 'Арендатор']; + } + + // Если сторона 1 - покупатель/арендатор + if (sideOne === 'Покупатель' || sideOne === 'Арендатор') { + return ['Продавец', 'Арендодатель', 'Застройщик']; + } + + return []; +}); + +// Полный список для случаев, когда заявка не выбрана +const fullSidesList = ['Покупатель', 'Продавец', 'Арендодатель', 'Арендатор', 'Застройщик']; + // Локальное состояние const isOpen = ref(props.isOpen);