diff --git a/web/templates/admin_pricing.html b/web/templates/admin_pricing.html
index 97f8190..57b91a3 100644
--- a/web/templates/admin_pricing.html
+++ b/web/templates/admin_pricing.html
@@ -220,6 +220,7 @@ let sortField = 'popularity_score';
let sortDir = 'desc';
let pricelistsPage = 1;
let pricelistsCanWrite = false;
+let isCreatingPricelist = false;
async function loadTab(tab) {
currentTab = tab;
@@ -1055,6 +1056,13 @@ async function deletePricelist(id) {
document.getElementById('pricelists-create-form').addEventListener('submit', async function(e) {
e.preventDefault();
+ if (isCreatingPricelist) return; // protection from double-submit
+ isCreatingPricelist = true;
+
+ const submitBtn = this.querySelector('button[type="submit"]');
+ submitBtn.disabled = true;
+ submitBtn.textContent = 'Создание...';
+
try {
const pl = await createPricelist();
closePricelistsCreateModal();
@@ -1062,6 +1070,10 @@ document.getElementById('pricelists-create-form').addEventListener('submit', asy
loadPricelists(1);
} catch (e) {
showToast('Ошибка: ' + e.message, 'error');
+ } finally {
+ isCreatingPricelist = false;
+ submitBtn.disabled = false;
+ submitBtn.textContent = 'Создать';
}
});