QUIK: кнопка «Определить из QUIK» — обычная кнопка + fetch (submit форма перехватывала)

Кнопка была submit внутри формы режима, у которой обработчик submit делает
preventDefault — клик ничего не отправлял. Теперь type=button + fetch на
/admin/setup/quik/detect-account (X-BJ-Ajax), результат в строке статуса,
найденный счёт подставляется в поле.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-20 15:54:56 +03:00
parent 40e2c33860
commit 571a7d0e67
2 changed files with 24 additions and 7 deletions
@@ -138,7 +138,7 @@
</div>
<div class="dq-jobname" id="quik-acc">
<label>Торговый счёт для поручений<input type="text" name="account" value="{{.D.Settings.Quik.Account}}" placeholder="торговый счёт фирмы в QUIK" spellcheck="false" class="dq-mono"></label>
<button type="submit" class="btn" formaction="/admin/setup/quik/detect-account" formnovalidate>Определить из QUIK</button>
<button type="button" id="quik-acc-detect" class="btn">Определить из QUIK</button>
<p class="dq-note" style="margin:4px 0 0">bj возьмёт торговый счёт фирмы из истории поручений в БД QUIK (таблицы Actions/Export). Если счёт один — подставит сам.</p>
</div>
<label class="dq-alt quik-term"><input type="checkbox" name="terminal" value="1" {{if .D.Settings.Quik.PollTerminal}}checked{{end}}><span><b>Клиенты подают поручения на перевод из QUIK</b> — из терминала или мобильного приложения («Вывод ЦБ (M2M)»). bj сам замечает такие поручения (раз в 30 секунд) и сообщает оператору; бумаги QUIK блокирует сразу при подаче. Если клиенты подают поручения только через депозитарий — оставьте выключенным.</span></label>
@@ -158,6 +158,14 @@
.catch(function(){ st.textContent='✗ Не сохранилось — обновите страницу и выберите ещё раз.'; });
});
f.addEventListener('submit', function(e){ if(window.fetch) e.preventDefault(); });
var db=document.getElementById('quik-acc-detect');
if(db) db.addEventListener('click', function(){
st.textContent='Определяю торговый счёт из QUIK…';
fetch('/admin/setup/quik/detect-account',{method:'POST',headers:{'X-BJ-Ajax':'1'},cache:'no-store'})
.then(function(r){ return r.text(); })
.then(function(t){ st.textContent=t; var m=t.match(/—\s*(\S+)\s*$/); if(m){ f.account.value=m[1]; } })
.catch(function(){ st.textContent='Не удалось определить — обновите страницу.'; });
});
sync();
})();</script>
{{end}}