fix close step

This commit is contained in:
mac 2026-06-21 14:09:17 +03:00
parent 0054d5c328
commit c7a10511cc
2 changed files with 95 additions and 44 deletions

View File

@ -436,20 +436,24 @@ var ac = new Vue({
// Сначала загружаем данные сделки, потом открываем модал
var loadDealData = function(callback) {
console.log('[DEAL_CLOSE] loadDealData started, reqId:', ac.reqId);
axios.post('/ajax/ajax_vue_requisitions.php', {
request: 'get_deal_by_req',
req_id: ac.reqId,
})
.then(function(response) {
var res = typeof response.data === 'string' ? JSON.parse(response.data) : response.data;
console.log('[DEAL_CLOSE] get_deal_by_req response:', res);
if (res.deal_id) {
console.log('[DEAL_CLOSE] found deal_id:', res.deal_id, ', loading deal data...');
axios.post('/ajax/ajax_vue_requisitions.php', {
request: 'get_deal_data',
deal_id: res.deal_id,
})
.then(function(dealRes) {
var dealData = dealRes.data.deal;
if (dealData) {
var dealData = dealRes.data.deal;
console.log('[DEAL_CLOSE] get_deal_data response:', dealData);
if (dealData) {
ac.dealCloseData = dealData;
ac.dealCloseAgentCommission = dealData.agent_commission || 0;
ac.dealCloseSumma = dealData.contract_price || 0;

View File

@ -4185,66 +4185,113 @@ $user_id = $_SESSION['id'];
});
function renderDealCloseContent() {
var d = window.dealCloseData;
if (!d) return;
console.log('[DEAL_CLOSE] renderDealCloseContent called, dealCloseData:', d);
if (!d) { console.log('[DEAL_CLOSE] dealCloseData is null/undefined'); return; }
var html = '';
if (d.title) html += '<div style="margin-bottom: 8px;"><span style="font-weight: 500;">Название:</span> ' + d.title + '</div>';
if (d.contract_price) html += '<div style="margin-bottom: 8px;"><span style="font-weight: 500;">Сумма в договоре:</span> ' + Number(d.contract_price).toLocaleString('ru-RU') + ' руб.</div>';
if (d.agent_commission) html += '<div style="margin-bottom: 8px;"><span style="font-weight: 500;">Комиссия агента:</span> ' + Number(d.agent_commission).toLocaleString('ru-RU') + ' руб.</div>';
console.log('[DEAL_CLOSE] basic html:', html);
$('#deal_close_content').html(html);
// Собираем ID заявок и объектов
var reqIds = [];
if (d.side_one_requisition_id) reqIds.push(d.side_one_requisition_id);
if (d.side_two_requisition_id) reqIds.push(d.side_two_requisition_id);
var objIds = [];
if (d.side_one_object_id) objIds.push(d.side_one_object_id);
if (d.side_two_object_id) objIds.push(d.side_two_object_id);
console.log('[DEAL_CLOSE] reqIds:', reqIds, 'objIds:', objIds);
var pending = 0;
if (reqIds.length > 0) pending++;
if (objIds.length > 0) pending++;
if (pending === 0) {
console.log('[DEAL_CLOSE] no reqs or objects, rendering fact data');
renderFactData(d);
return;
}
var reqData = null;
var objData = null;
function tryRender() {
console.log('[DEAL_CLOSE] tryRender called, reqData:', reqData, 'objData:', objData);
if (reqData !== null && objData !== null) {
if (reqData.length > 0) {
var reqHtml = '<div style="margin-top: 10px;"><b>Связанные заявки:</b></div>';
reqData.forEach(function(req) {
reqHtml += '<div style="padding: 3px 0;">' + req.name;
reqHtml += req.deleted == 1 ? ' <span style="color: #43A047;">✓ закрыта</span>' : ' <span style="color: #f57c00;">открыта</span>';
reqHtml += '</div>';
});
console.log('[DEAL_CLOSE] appending reqHtml:', reqHtml);
$('#deal_close_content').append(reqHtml);
} else {
console.log('[DEAL_CLOSE] no requisitions found');
}
if (objData.length > 0) {
var objHtml = '<div style="margin-top: 10px;"><b>Связанные объекты:</b></div>';
objData.forEach(function(obj) {
objHtml += '<div style="padding: 3px 0;">' + obj.nazv + ' <span style="color: #999;">' + obj.adres + '</span></div>';
});
console.log('[DEAL_CLOSE] appending objHtml:', objHtml);
$('#deal_close_content').append(objHtml);
} else {
console.log('[DEAL_CLOSE] no objects found');
}
renderFactData(d);
}
}
if (reqIds.length > 0) {
console.log('[DEAL_CLOSE] loading requisitions...');
$.ajax({
url: '/ajax/ajax_vue_requisitions.php',
type: 'POST',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify({ request: 'get_deals_linked_reqs', req_ids: reqIds }),
success: function(reqRes) {
var reqs = reqRes.reqs || [];
if (reqs.length > 0) {
html += '<div style="margin-top: 10px;"><b>Связанные заявки:</b></div>';
reqs.forEach(function(req) {
html += '<div style="padding: 3px 0;">' + req.name;
html += req.deleted == 1 ? ' <span style="color: #43A047;">✓ закрыта</span>' : ' <span style="color: #f57c00;">открыта</span>';
html += '</div>';
});
}
var objIds = [];
if (d.side_one_object_id) objIds.push(d.side_one_object_id);
if (d.side_two_object_id) objIds.push(d.side_two_object_id);
if (objIds.length > 0) {
$.ajax({
url: '/ajax/ajax_vue_requisitions.php',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ request: 'get_deals_linked_objects', object_ids: objIds }),
success: function(objRes) {
var objs = objRes.objects || [];
if (objs.length > 0) {
html += '<div style="margin-top: 10px;"><b>Связанные объекты:</b></div>';
objs.forEach(function(obj) {
html += '<div style="padding: 3px 0;">' + obj.nazv + ' <span style="color: #999;">' + obj.adres + '</span></div>';
});
}
html += '<div style="margin-top: 12px; padding-top: 10px; border-top: 1px solid #e0e0e0;"><b>Фактические данные</b></div>';
html += '<div><span style="color: #666;">Комиссия агента:</span> ' + (d.agent_commission || 0) + ' руб. | <span style="color: #666;">Сумма сделки:</span> ' + (d.contract_price || 0) + ' руб.</div>';
$('#deal_close_content').html(html);
}
});
} else {
html += '<div style="margin-top: 12px; padding-top: 10px; border-top: 1px solid #e0e0e0;"><b>Фактические данные</b></div>';
html += '<div><span style="color: #666;">Комиссия агента:</span> ' + (d.agent_commission || 0) + ' руб. | <span style="color: #666;">Сумма сделки:</span> ' + (d.contract_price || 0) + ' руб.</div>';
$('#deal_close_content').html(html);
}
console.log('[DEAL_CLOSE] requisitions response:', reqRes);
reqData = reqRes.reqs || [];
tryRender();
},
error: function(xhr, status, error) {
console.log('[DEAL_CLOSE] requisitions error:', status, error);
reqData = [];
tryRender();
}
});
} else {
html += '<div style="margin-top: 12px; padding-top: 10px; border-top: 1px solid #e0e0e0;"><b>Фактические данные</b></div>';
html += '<div><span style="color: #666;">Комиссия агента:</span> ' + (d.agent_commission || 0) + ' руб. | <span style="color: #666;">Сумма сделки:</span> ' + (d.contract_price || 0) + ' руб.</div>';
$('#deal_close_content').html(html);
}
if (objIds.length > 0) {
console.log('[DEAL_CLOSE] loading objects...');
$.ajax({
url: '/ajax/ajax_vue_requisitions.php',
type: 'POST',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify({ request: 'get_deals_linked_objects', object_ids: objIds }),
success: function(objRes) {
console.log('[DEAL_CLOSE] objects response:', objRes);
objData = objRes.objects || [];
tryRender();
},
error: function(xhr, status, error) {
console.log('[DEAL_CLOSE] objects error:', status, error);
objData = [];
tryRender();
}
});
}
}
function renderFactData(d) {
console.log('[DEAL_CLOSE] renderFactData called');
var html = '<div style="margin-top: 12px; padding-top: 10px; border-top: 1px solid #e0e0e0;"><b>Фактические данные</b></div>';
html += '<div><span style="color: #666;">Комиссия агента:</span> ' + (d.agent_commission || 0) + ' руб. | <span style="color: #666;">Сумма сделки:</span> ' + (d.contract_price || 0) + ' руб.</div>';
$('#deal_close_content').append(html);
}
</script>
<?php } ?>