]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Блокировка таблицы
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 2 Jul 2025 07:10:38 +0000 (10:10 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 2 Jul 2025 07:10:38 +0000 (10:10 +0300)
erp24/views/category-plan/index.php
erp24/web/css/category-plan/style.css [new file with mode: 0644]
erp24/web/js/category-plan/index.js

index 214469ad8f5b6235d31ce8f696690a49f57fa1e6..f0c91af8edd745e11d79c8463260c5615a2ea195 100644 (file)
@@ -26,7 +26,7 @@ use yii_app\records\StoreType;
 /* @var $categoryPlan array */
 
 $this->registerJsFile('/js/category-plan/index.js', ['position' => \yii\web\View::POS_END]);
-
+$this->registerCssFile('/css/category-plan/style.css');
 $this->registerCss('
 input[readonly] {
   background: lightgray;
@@ -158,7 +158,7 @@ input[readonly] {
             <div class="row">
                 <div class="col-1"></div>
                 <div class="col-11">
-                    <?= Html::submitButton('Применить фильтр', ['class' => 'btn btn-secondary'])?>
+                    <?= Html::submitButton('Применить фильтр', ['class' => 'btn btn-secondary', 'id' => 'filter-btn'])?>
 
                 </div>
             </div>
@@ -188,6 +188,7 @@ input[readonly] {
                     <?= Html::button('Вернуть автоплан', [
                         'class' => 'btn btn-danger m-2',
                         'name'  => 'delete',
+                        'disabled' => true,
                         'id' => 'delete',
                         'value' => 1,
                         'data'  => [
diff --git a/erp24/web/css/category-plan/style.css b/erp24/web/css/category-plan/style.css
new file mode 100644 (file)
index 0000000..e660c78
--- /dev/null
@@ -0,0 +1,15 @@
+.block_table {
+    position:relative;
+
+}
+.block_table::before {
+    content: '';
+    position: absolute;
+    top: 0; left: 0;
+    width: 100%;
+    height: 100%;
+    background: rgba(255, 255, 255, 0.3);
+    z-index: 9999;
+    pointer-events: all;
+    filter: blur(1px);
+}
\ No newline at end of file
index 775c1b05d1e70903aaed1015044e71ca32e2cb27..d2047ad4f2d395e37e43304d9b1db5ca0a82f4d6 100644 (file)
@@ -161,6 +161,7 @@ $(document).ready(() => {
     if (store_id && changes[store_id]) {
         updateChangesLog(store_id);
         $('#rebuild').prop('disabled', false);
+        $('#delete').prop('disabled', false);
 
     }
 
@@ -176,8 +177,10 @@ $(document).ready(() => {
             'DynamicModel[store_id]': store_id,
             'delete': 1
         };
+        $('#categoryPlan').addClass('block_table');
         $('#rebuild').prop('disabled', true).text('Пересчёт запущен...');
         $('#delete').prop('disabled', true);
+        $('#filter-btn').prop('disabled', true);
         $.ajax({
             url: '/category-plan/index',
             method: 'GET',
@@ -191,15 +194,19 @@ $(document).ready(() => {
             },
             error: function () {
                 alert('Ошибка при удалении автоплана.');
+                $('#categoryPlan').removeClass('block_table');
+                $('#rebuild').prop('disabled', false).text('Пересчитать автопланнограмму');
+                $('#delete').prop('disabled', false);
             }
         });
     });
 
     $('#rebuild').on('click', function (event) {
         event.preventDefault();
-
+        $('#categoryPlan').addClass('block_table');
         $('#rebuild').prop('disabled', true).text('Пересчёт запущен...');
         $('#delete').prop('disabled', true);
+        $('#filter-btn').prop('disabled', true);
         $.ajax({
             url: '/category-plan/rebuild',
             type: 'GET',
@@ -212,18 +219,25 @@ $(document).ready(() => {
             success: function (data) {
                 if (data.status == 'running') {
                     alert('Другая задача запущена!');
+                    $('#categoryPlan').removeClass('block_table');
+                    $('#rebuild').prop('disabled', false).text('Пересчитать автопланнограмму');
+                    $('#delete').prop('disabled', false);
+                    $('#filter-btn').prop('disabled', false);
                     return;
                 }
                 if (data.status == 'started') {
                     startTaskPolling();
-                    $('#rebuild').prop('disabled', true);
+
                     console.log(data.data);
                 }
 
             },
             error: function () {
                 alert('Ошибка запуска пересчёта!');
-                $('#rebuild').prop('disabled', false).text('Пересчитать автопланограмму');
+                $('#categoryPlan').removeClass('block_table');
+                $('#rebuild').prop('disabled', false).text('Пересчитать автопланнограмму');
+                $('#delete').prop('disabled', false);
+                $('#filter-btn').prop('disabled', false);
             }
         });
     });
@@ -245,23 +259,30 @@ function startTaskPolling() {
                 if (data.status === 'running' || data.status === 'pending') {
                     $('#rebuild').prop('disabled', true).text('Пересчёт запущен...');
                     $('#delete').prop('disabled', true);
+                    $('#filter-btn').prop('disabled', true);
+                    $('#changes-hint').hide();
+                    $('#categoryPlan').addClass('block_table');
                 }
                 if (data.status === 'done') {
                     clearInterval(taskPollInterval);
                     taskPollInterval = null;
                     localStorage.removeItem('planChanges');
+                    $('#categoryPlan').removeClass('block_table');
                     $('#rebuild').prop('disabled', false).text('Пересчитать автопланограмму');
                     $('#delete').prop('disabled', false);
                     $('#changes-hint').remove();
                     $('#changes').hide();
+                    $('#filter-btn').prop('disabled', false);
                     alert('Персчет автопланнограммы успешно завершен');
 
                 }
                 if (data.status === 'error') {
                     clearInterval(taskPollInterval);
                     taskPollInterval = null;
+                    $('#categoryPlan').removeClass('block_table');
                     $('#rebuild').prop('disabled', false).text('Пересчитать автопланограмму');
                     $('#delete').prop('disabled', false);
+                    $('#filter-btn').prop('disabled', false);
                     alert('Персчет автопланнограммы завершилася с ошибкой: ' + (data.error || ''));
                 }
             }