From: fomichev Date: Tue, 21 Apr 2026 12:20:54 +0000 (+0300) Subject: fix button X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=dcfc44c39ae538fe356e44cc1e4a64b4af8d5997;p=erp24_rep%2Fyii-erp24%2F.git fix button --- diff --git a/erp24/web/js/supplier/index.js b/erp24/web/js/supplier/index.js index 873ed71e..a7127f51 100644 --- a/erp24/web/js/supplier/index.js +++ b/erp24/web/js/supplier/index.js @@ -1,36 +1,84 @@ (function () { + var instanceId = 'supplier-' + Date.now(); + console.log('[supplier] IIFE запущен, instanceId=' + instanceId); + var cfg = window.supplierConfig || {}; var urls = cfg.urls || {}; + console.log('[supplier] urls:', urls); + + var modalEl = document.getElementById('supplier-modal'); + console.log('[supplier] #supplier-modal найден:', !!modalEl); + + if (!modalEl) { + console.error('[supplier] КРИТИЧНО: #supplier-modal не найден в DOM — modal не создан'); + return; + } + + // Проверяем, есть ли уже Bootstrap-инстанс на элементе + var existingInstance = bootstrap.Modal.getInstance(modalEl); + console.log('[supplier] существующий bootstrap.Modal.getInstance:', existingInstance); + + var supplierModal = new bootstrap.Modal(modalEl); + console.log('[supplier] новый bootstrap.Modal создан:', supplierModal); - var supplierModal = new bootstrap.Modal(document.getElementById('supplier-modal')); var editingId = null; var loaderHtml = '
'; + // Слушаем события самого модального окна + modalEl.addEventListener('show.bs.modal', function () { + console.log('[supplier] СОБЫТИЕ: show.bs.modal'); + }); + modalEl.addEventListener('shown.bs.modal', function () { + console.log('[supplier] СОБЫТИЕ: shown.bs.modal'); + }); + modalEl.addEventListener('hide.bs.modal', function () { + console.log('[supplier] СОБЫТИЕ: hide.bs.modal, стек:', new Error().stack); + }); + modalEl.addEventListener('hidden.bs.modal', function () { + console.log('[supplier] СОБЫТИЕ: hidden.bs.modal'); + }); + function reloadGrid() { + console.log('[supplier] reloadGrid: старт, instanceId=' + instanceId); $.ajax({ url: urls.index, type: 'GET', success: function (html) { var $grid = $('
').append($.parseHTML(html, document, false)).find('#supplier-pjax'); + console.log('[supplier] reloadGrid: #supplier-pjax найден в ответе:', $grid.length > 0); if ($grid.length) { $('#supplier-pjax').replaceWith($grid); + console.log('[supplier] reloadGrid: грид заменён'); } + }, + error: function (xhr, status) { + console.error('[supplier] reloadGrid: ошибка', status, xhr.status); } }); } // Создание + var createBtn = document.getElementById('btn-supplier-create'); + console.log('[supplier] #btn-supplier-create найден:', !!createBtn); + $('#btn-supplier-create').on('click', function () { + console.log('[supplier] клик на #btn-supplier-create, instanceId=' + instanceId); var $btn = $(this); + console.log('[supplier] кнопка disabled:', $btn.prop('disabled')); if ($btn.prop('disabled')) return; $btn.prop('disabled', true); editingId = null; $('#supplier-modal-title').text('Добавить поставщика'); $('#supplier-modal-body').html(loaderHtml); + console.log('[supplier] вызываем supplierModal.show()'); supplierModal.show(); + console.log('[supplier] supplierModal.show() вызван, загружаем форму:', urls.createForm); $.get(urls.createForm, function (html) { + console.log('[supplier] createForm ответ получен, длина HTML:', html.length); $('#supplier-modal-body').html(html); + }).fail(function (xhr, status) { + console.error('[supplier] createForm ошибка:', status, xhr.status, xhr.responseText); }).always(function () { $btn.prop('disabled', false); }); @@ -40,6 +88,7 @@ $(document).on('click', '.btn-supplier-edit', function (e) { e.preventDefault(); var $btn = $(this); + console.log('[supplier] клик .btn-supplier-edit id=' + $btn.data('id') + ', instanceId=' + instanceId); if ($btn.prop('disabled')) return; $btn.prop('disabled', true); editingId = $btn.data('id'); @@ -47,7 +96,10 @@ $('#supplier-modal-body').html(loaderHtml); supplierModal.show(); $.get(urls.updateForm, {id: editingId}, function (html) { + console.log('[supplier] updateForm ответ получен'); $('#supplier-modal-body').html(html); + }).fail(function (xhr, status) { + console.error('[supplier] updateForm ошибка:', status, xhr.status); }).always(function () { $btn.prop('disabled', false); }); @@ -56,11 +108,13 @@ // Сохранение $(document).on('click', '#btn-supplier-save', function () { var $saveBtn = $(this); + console.log('[supplier] клик #btn-supplier-save, disabled=' + $saveBtn.prop('disabled') + ', instanceId=' + instanceId); if ($saveBtn.prop('disabled')) return; $saveBtn.prop('disabled', true); var $form = $('#supplier-form'); var url = editingId ? urls.update + '?id=' + editingId : urls.create; + console.log('[supplier] сохранение: url=' + url + ', editingId=' + editingId); $form.find('.is-invalid').removeClass('is-invalid'); $form.find('.invalid-feedback').remove(); @@ -71,6 +125,7 @@ data: $form.serialize(), dataType: 'json', success: function (resp) { + console.log('[supplier] сохранение ответ:', resp); if (resp.success) { supplierModal.hide(); reloadGrid(); @@ -83,7 +138,8 @@ }); } }, - error: function () { + error: function (xhr, status) { + console.error('[supplier] сохранение ошибка:', status, xhr.status, xhr.responseText); $saveBtn.prop('disabled', false); alert('Ошибка сервера'); } @@ -100,19 +156,22 @@ return; } + console.log('[supplier] деактивация id=' + id); $.ajax({ url: urls.delete + '?id=' + id, type: 'POST', data: {_csrf: yii.getCsrfToken()}, dataType: 'json', success: function (resp) { + console.log('[supplier] деактивация ответ:', resp); if (resp.success) { reloadGrid(); } else { alert(resp.message || 'Ошибка деактивации'); } }, - error: function () { + error: function (xhr, status) { + console.error('[supplier] деактивация ошибка:', status, xhr.status); alert('Ошибка сервера'); } });