diff --git a/deploy/app.js b/deploy/app.js index be12cc9..b8c224c 100644 --- a/deploy/app.js +++ b/deploy/app.js @@ -461,6 +461,8 @@ window.runCompareForGroup = async function(gi, btn) { btn.disabled = true; btn.innerHTML = ' Применяю...'; + // Заблокировать ВСЕ кнопки сравнения пока идёт процесс + document.querySelectorAll('.cmp-btn').forEach(function(b) { b.disabled = true; }); var ar = await fetch(VM_API + '/api/apply-groups', { method: 'POST', @@ -469,7 +471,9 @@ window.runCompareForGroup = async function(gi, btn) { }); var ad = await ar.json(); if (!ad.ok || !ad.contract_ids || !ad.contract_ids.length) { - btn.innerHTML = '✗ ошибка'; btn.disabled = false; return; + btn.innerHTML = '✗ ошибка'; btn.disabled = false; + document.querySelectorAll('.cmp-btn').forEach(function(b) { b.disabled = false; }); + return; } var cid = ad.contract_ids[0]; @@ -543,6 +547,8 @@ window.runCompareForGroup = async function(gi, btn) { span.textContent = '✓ Готово (' + d.total_time_s + 'с)'; span.style.cssText = 'display:inline-block;margin-top:6px;font-size:12px;height:28px;line-height:28px;padding:0 12px;background:var(--green);color:#fff;border-radius:6px;'; btn.parentNode.replaceChild(span, btn); + // Разблокировать остальные кнопки + document.querySelectorAll('.cmp-btn').forEach(function(b) { b.disabled = false; }); stepDone('stepCompare'); } else if (d.type === 'error') { @@ -550,12 +556,14 @@ window.runCompareForGroup = async function(gi, btn) { es.close(); _activeCompareES = null; cmpBody.innerHTML += '
✗ ' + d.message + '
'; btn.innerHTML = '✗'; btn.disabled = false; + document.querySelectorAll('.cmp-btn').forEach(function(b) { b.disabled = false; }); } }; es.onerror = function() { clearInterval(_activeCompareTimer); _activeCompareTimer = null; es.close(); _activeCompareES = null; btn.innerHTML = '✗ соединение'; btn.disabled = false; + document.querySelectorAll('.cmp-btn').forEach(function(b) { b.disabled = false; }); }; };