diff --git a/deploy/app.js b/deploy/app.js index 03cac6f..32dc48b 100644 --- a/deploy/app.js +++ b/deploy/app.js @@ -405,7 +405,7 @@ async function loadGroups() { '
' + docsHtml + '
' + '
Загрузите недостающие базовые договоры для этих номеров.
'; } else { - card.innerHTML = '
📄 Договор №' + escHtml(g.contract_number || '?') + ' — ' + escHtml(g.counterparty || 'контрагент не определён') + '
' + + card.innerHTML = '
📄 Договор №' + escHtml(g.contract_number || '?') + ' — ' + escHtml(g.counterparty || 'контрагент не определён') + '
' + '
' + g.documents.map(function(d) { var typeLabel = {contract: 'договор', supplement: 'допсоглашение', specification: 'спецификация'}[d.doc_type] || d.doc_type; @@ -417,6 +417,20 @@ async function loadGroups() { }).join('') + '
' + '' + ''; + // Клик на заголовок → свернуть/развернуть результаты + card.querySelector('.cmp-header').addEventListener('click', function() { + var body = document.getElementById('cmpBody_' + gi); + var arrow = document.getElementById('cmpArrow_' + gi); + if (body) { + if (body.style.display === 'none') { + body.style.display = 'block'; + if (arrow) arrow.textContent = '▾'; + } else { + body.style.display = 'none'; + if (arrow) arrow.textContent = '▸'; + } + } + }); } diffBody.appendChild(card); }); @@ -442,8 +456,11 @@ window.runCompareForGroup = async function(gi, btn) { if (_activeCompareES) { _activeCompareES.close(); _activeCompareES = null; } if (_activeCompareTimer) { clearInterval(_activeCompareTimer); _activeCompareTimer = null; } - // Свернуть все раскрытые сравнения, кроме текущей группы - document.querySelectorAll('.cmp-body').forEach(function(el) { el.style.display = 'none'; }); + // Свернуть ТОЛЬКО тело текущей группы + var curBody = document.getElementById('cmpBody_' + gi); + if (curBody) curBody.style.display = 'none'; + var curArrow = document.getElementById('cmpArrow_' + gi); + if (curArrow) curArrow.textContent = '▸'; // Заменить span «✓ Готово» обратно на кнопку ТОЛЬКО для текущей группы var doneSpan = document.querySelector('.cmp-done[data-gi="' + gi + '"]'); if (doneSpan) { @@ -549,6 +566,9 @@ window.runCompareForGroup = async function(gi, btn) { btn.parentNode.replaceChild(span, btn); // Разблокировать остальные кнопки document.querySelectorAll('.cmp-btn').forEach(function(b) { b.disabled = false; }); + // Показать стрелку раскрытия + var arrow = document.getElementById('cmpArrow_' + gi); + if (arrow) arrow.textContent = '▾'; stepDone('stepCompare'); } else if (d.type === 'error') {