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:
@@ -56,28 +56,37 @@ func (h *setupHandlers) detectQuikAccount(w http.ResponseWriter, r *http.Request
|
|||||||
http.Error(w, "method", http.StatusMethodNotAllowed)
|
http.Error(w, "method", http.StatusMethodNotAllowed)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// ответ: для fetch (кнопка в форме режима) — текстом; иначе — флеш.
|
||||||
|
reply := func(msg string) {
|
||||||
|
if r.Header.Get("X-BJ-Ajax") != "" {
|
||||||
|
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
|
||||||
|
_, _ = w.Write([]byte(msg))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
setupFlash(w, r, "QUIK: "+msg)
|
||||||
|
}
|
||||||
s := h.rc.Snapshot().Quik
|
s := h.rc.Snapshot().Quik
|
||||||
if s.Server == "" || !s.Verified {
|
if s.Server == "" || !s.Verified {
|
||||||
setupFlash(w, r, "QUIK: сначала подключитесь к БД МНП (Настройка → QUIK, «Проверить подключение»)")
|
reply("сначала подключитесь к БД МНП (Настройка → QUIK, «Проверить подключение»)")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
firm := quikFirmID()
|
firm := quikFirmID()
|
||||||
accs, err := quikDetectAccounts(r.Context(), s, firm)
|
accs, err := quikDetectAccounts(r.Context(), s, firm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
setupFlash(w, r, "QUIK: определить счёт не удалось — "+quikErrorDetail(err))
|
reply("определить счёт не удалось — " + quikErrorDetail(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch len(accs) {
|
switch len(accs) {
|
||||||
case 0:
|
case 0:
|
||||||
setupFlash(w, r, "QUIK: торговых счетов фирмы "+firm+" в истории поручений (Actions/Export) не найдено — введите счёт вручную")
|
reply("торговых счетов фирмы " + firm + " в истории поручений (Actions/Export) не найдено — введите счёт вручную")
|
||||||
case 1:
|
case 1:
|
||||||
s.Account = accs[0]
|
s.Account = accs[0]
|
||||||
if err := h.rc.UpdateQuik(s); err != nil {
|
if err := h.rc.UpdateQuik(s); err != nil {
|
||||||
setupFlash(w, r, "QUIK: не сохранилось — "+err.Error())
|
reply("не сохранилось — " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
setupFlash(w, r, "QUIK: торговый счёт подставлен из QUIK — "+accs[0])
|
reply("торговый счёт подставлен из QUIK — " + accs[0])
|
||||||
default:
|
default:
|
||||||
setupFlash(w, r, "QUIK: у фирмы "+firm+" несколько торговых счетов ("+strings.Join(accs, ", ")+") — впишите нужный вручную")
|
reply("у фирмы " + firm + " несколько торговых счетов (" + strings.Join(accs, ", ") + ") — впишите нужный вручную")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,7 +138,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="dq-jobname" id="quik-acc">
|
<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>
|
<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>
|
<p class="dq-note" style="margin:4px 0 0">bj возьмёт торговый счёт фирмы из истории поручений в БД QUIK (таблицы Actions/Export). Если счёт один — подставит сам.</p>
|
||||||
</div>
|
</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>
|
<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='✗ Не сохранилось — обновите страницу и выберите ещё раз.'; });
|
.catch(function(){ st.textContent='✗ Не сохранилось — обновите страницу и выберите ещё раз.'; });
|
||||||
});
|
});
|
||||||
f.addEventListener('submit', function(e){ if(window.fetch) e.preventDefault(); });
|
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();
|
sync();
|
||||||
})();</script>
|
})();</script>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|||||||
Reference in New Issue
Block a user