]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Фикс по фильтры
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 17 Apr 2026 09:40:36 +0000 (12:40 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 17 Apr 2026 09:40:36 +0000 (12:40 +0300)
erp24/views/product-mapping/_filters.php
erp24/web/js/product-mapping/index.js

index 818691fbbd0c9809c41240bb84b32d2f546b13d5..d9b2bcb148055e7634cf0bbd9f61aeab455bf4d9 100644 (file)
@@ -15,7 +15,7 @@ use yii\helpers\Html;
     <div class="card-body p-2" style="font-size:11px;">
         <div class="row g-2">
             <div class="col-md-2">
-                <label class="form-label fw-semibold mb-1" style="font-size:10px;">Категория</label>
+                <label class="form-label fw-semibold mb-1" for="pm-filter-category" style="font-size:10px;">Категория</label>
                 <select class="form-select form-select-sm pm-filter" name="category" id="pm-filter-category">
                     <option value="">Все</option>
                     <?php foreach ($categories as $cat): ?>
@@ -27,7 +27,7 @@ use yii\helpers\Html;
             </div>
 
             <div class="col-md-2">
-                <label class="form-label fw-semibold mb-1" style="font-size:10px;">Подкатегория</label>
+                <label class="form-label fw-semibold mb-1" for="pm-filter-subcategory" style="font-size:10px;">Подкатегория</label>
                 <select class="form-select form-select-sm pm-filter" name="subcategory" id="pm-filter-subcategory"
                     <?= empty($subcategories) ? 'disabled' : '' ?>>
                     <option value="">Все</option>
@@ -40,7 +40,7 @@ use yii\helpers\Html;
             </div>
 
             <div class="col-md-2">
-                <label class="form-label fw-semibold mb-1" style="font-size:10px;">Вид</label>
+                <label class="form-label fw-semibold mb-1" for="pm-filter-species" style="font-size:10px;">Вид</label>
                 <select class="form-select form-select-sm pm-filter" name="species" id="pm-filter-species"
                     <?= empty($speciesList) ? 'disabled' : '' ?>>
                     <option value="">Все</option>
@@ -53,11 +53,11 @@ use yii\helpers\Html;
             </div>
 
             <div class="col-md-2">
-                <label class="form-label fw-semibold mb-1" style="font-size:10px;">Папка 1С</label>
-                <select class="form-select form-select-sm pm-filter" name="folder_1c">
+                <label class="form-label fw-semibold mb-1" for="pm-filter-folder-1c" style="font-size:10px;">Папка 1С</label>
+                <select class="form-select form-select-sm pm-filter" name="folder_1c" id="pm-filter-folder-1c">
                     <option value="">Все</option>
                     <?php foreach ($folders1c as $fid => $fname): ?>
-                        <option value="<?= Html::encode($fid) ?>" <?= $filters->folder_1c === $fid ? 'selected' : '' ?>>
+                        <option value="<?= Html::encode($fid) ?>" <?= (string)$filters->folder_1c === (string)$fid ? 'selected' : '' ?>>
                             <?= Html::encode($fname) ?>
                         </option>
                     <?php endforeach; ?>
@@ -65,8 +65,8 @@ use yii\helpers\Html;
             </div>
 
             <div class="col-md-2">
-                <label class="form-label fw-semibold mb-1" style="font-size:10px;">Поставщик</label>
-                <select class="form-select form-select-sm pm-filter" name="supplier_id">
+                <label class="form-label fw-semibold mb-1" for="pm-filter-supplier" style="font-size:10px;">Поставщик</label>
+                <select class="form-select form-select-sm pm-filter" name="supplier_id" id="pm-filter-supplier">
                     <option value="">Все</option>
                     <?php foreach ($suppliers as $sid => $sname): ?>
                         <option value="<?= (int)$sid ?>" <?= (int)$filters->supplier_id === (int)$sid ? 'selected' : '' ?>>
@@ -77,8 +77,8 @@ use yii\helpers\Html;
             </div>
 
             <div class="col-md-2">
-                <label class="form-label fw-semibold mb-1" style="font-size:10px;">Маркировка</label>
-                <select class="form-select form-select-sm pm-filter" name="marking_id">
+                <label class="form-label fw-semibold mb-1" for="pm-filter-marking" style="font-size:10px;">Маркировка</label>
+                <select class="form-select form-select-sm pm-filter" name="marking_id" id="pm-filter-marking">
                     <option value="">Все</option>
                     <?php foreach ($markings as $mid => $mlabel): ?>
                         <option value="<?= (int)$mid ?>" <?= (int)$filters->marking_id === (int)$mid ? 'selected' : '' ?>>
@@ -91,15 +91,15 @@ use yii\helpers\Html;
 
         <div class="row g-2 mt-1">
             <div class="col-md-4">
-                <label class="form-label fw-semibold mb-1" style="font-size:10px;">Поиск по названию</label>
-                <input type="search" class="form-control form-control-sm pm-filter" name="search"
+                <label class="form-label fw-semibold mb-1" for="pm-filter-search" style="font-size:10px;">Поиск по названию</label>
+                <input type="search" class="form-control form-control-sm pm-filter" name="search" id="pm-filter-search"
                        value="<?= Html::encode($filters->search ?? '') ?>"
                        placeholder="Введите часть названия...">
             </div>
 
             <div class="col-md-3">
-                <label class="form-label fw-semibold mb-1" style="font-size:10px;">Актуальность</label>
-                <select class="form-select form-select-sm pm-filter" name="is_actual">
+                <label class="form-label fw-semibold mb-1" for="pm-filter-is-actual" style="font-size:10px;">Актуальность</label>
+                <select class="form-select form-select-sm pm-filter" name="is_actual" id="pm-filter-is-actual">
                     <option value="">Все</option>
                     <option value="1" <?= $filters->is_actual === true ? 'selected' : '' ?>>Только актуальные</option>
                     <option value="0" <?= $filters->is_actual === false ? 'selected' : '' ?>>Только неактуальные</option>
index 4feb775356bc5615784a97167a540331a334b74a..304c87fea8bfe17e42626314706ffcbdbe9de416 100644 (file)
@@ -10,6 +10,7 @@ window.pmInit = function (cfg) {
     var pmModal = new bootstrap.Modal(document.getElementById('pm-modal'));
     var editingId = null;
     var searchTimer = null;
+    var cascadeXhr = null;
     var loaderHtml = '<div class="text-center p-4"><i class="fa fa-spinner fa-spin fa-2x text-secondary"></i></div>';
 
     function collectFilters() {
@@ -34,6 +35,11 @@ window.pmInit = function (cfg) {
     }
 
     function reloadList(extraParams) {
+        // Отменяем незавершённый cascade AJAX — сервер вернёт актуальные данные
+        if (cascadeXhr) {
+            cascadeXhr.abort();
+            cascadeXhr = null;
+        }
         var params = collectFilters();
         if (extraParams) {
             $.extend(params, extraParams);
@@ -65,7 +71,9 @@ window.pmInit = function (cfg) {
             $('#pm-filter-subcategory').html('<option value="">Все</option>').prop('disabled', !category);
             $('#pm-filter-species').html('<option value="">Все</option>').prop('disabled', true);
             if (category) {
-                $.get(cfg.urls.cascade, {category: category}, function (data) {
+                // Показываем подкатегории быстро, до полного reload списка
+                cascadeXhr = $.get(cfg.urls.cascade, {category: category}, function (data) {
+                    cascadeXhr = null;
                     var html = '<option value="">Все</option>';
                     $.each(data.subcategories, function (_, sub) {
                         html += '<option value="' + sub + '">' + sub + '</option>';
@@ -82,7 +90,8 @@ window.pmInit = function (cfg) {
             var sub = $(this).val();
             $('#pm-filter-species').html('<option value="">Все</option>').prop('disabled', !sub);
             if (cat && sub) {
-                $.get(cfg.urls.cascade, {category: cat, subcategory: sub}, function (data) {
+                cascadeXhr = $.get(cfg.urls.cascade, {category: cat, subcategory: sub}, function (data) {
+                    cascadeXhr = null;
                     var html = '<option value="">Все</option>';
                     $.each(data.species, function (_, sp) {
                         html += '<option value="' + sp + '">' + sp + '</option>';