]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-302 Редактирование букета
authormarina <m.zozirova@gmail.com>
Fri, 21 Feb 2025 08:40:27 +0000 (11:40 +0300)
committermarina <m.zozirova@gmail.com>
Fri, 21 Feb 2025 08:40:27 +0000 (11:40 +0300)
erp24/records/BouquetComposition.php
erp24/views/bouquet/_product_edit.php
erp24/web/js/bouquet/bouquet.js

index 622d545fc2c7bbc4658614d14e7ac53f9b8ce8a8..a696f1354ac4882ab21962d87cf263aabdecb9fd 100644 (file)
@@ -216,8 +216,9 @@ class BouquetComposition extends ActiveRecord
 
     public static function disabledButtons($isCreate = false)
     {
-        if ($isCreate || date('d') < 10) {
+        if (!$isCreate || date('d') > 10) {
             return false;
         }
+        return true;
     }
 }
index e1f5b9c6b34acdc767b72e1b68fae41bb24738aa..49332ae039c9fae8f087fb5561ea591193aecf33 100644 (file)
@@ -15,15 +15,23 @@ use yii\helpers\Html;
     'filterFields' => ['size', 'color', 'species', 'category', 'type-num']
 ]) ?>
 <br>
+
 <div class="row">
-    <div class="col-md-6">
-        <div class="pt-2">
+    <div class="col-md-6 position-relative">
+        <!-- Обертка для перекрытия текста -->
+        <div class="pt-2 position-relative content-wrapper">
+            <!-- Прелоадер -->
+            <div class="loader-overlay d-none">
+                <div class="spinner-border text-primary" role="status"></div>
+            </div>
             <p class="mb-1"><strong>Себестоимость:</strong> <span class="selfcost-value"><?= $selfCost ?? 0 ?></span> ₽</p>
-            <p class="mb-1"><strong>Наценка:</strong> <span class="markup-value"><?= $markUp?? 0 ?></span></p>
+            <p class="mb-1"><strong>Наценка:</strong> <span class="markup-value"><?= $markUp ?? 0 ?></span></p>
             <p class="mb-0"><strong>Цена:</strong> <span class="cost-value"><?= $cost ?? 0 ?></span> ₽</p>
         </div>
     </div>
-<div class="col-md-2"></div>
+
+    <div class="col-md-2"></div>
+
     <?php if (!$isCreate) {?>
         <div class="col-md-2 d-flex justify-content-end align-items-end px-3 w-100">
             <?= Html::button('Рассчитать', ['class' => 'btn btn-warning calculate-btn w-100']) ?>
@@ -36,5 +44,27 @@ use yii\helpers\Html;
             <?= Html::button('Рассчитать', ['class' => 'btn btn-warning calculate-btn w-100']) ?>
         </div>
     <?php }  ?>
-
 </div>
+<style>
+    .content-wrapper {
+        position: relative;
+        min-height: 80px;
+    }
+
+    .loader-overlay {
+        position: absolute;
+        top: 0;
+        left: 0;
+        width: 100%;
+        height: 100%;
+        background: rgba(255, 255, 255, 0.8);
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        z-index: 10;
+    }
+
+    .d-none {
+        display: none;
+    }
+</style>
index be53e056dee7e004484721ca74269bf2ca8f8a7f..67765fb139ed52a21a5b163c1d902063f5c03961 100644 (file)
@@ -1,6 +1,6 @@
-document.addEventListener('DOMContentLoaded', function() {
+document.addEventListener('DOMContentLoaded', function () {
     document.querySelectorAll('.video-preview').forEach(video => {
-        video.addEventListener('click', function() {
+        video.addEventListener('click', function () {
             this.controls = true;
             this.muted = false;
             this.play();
@@ -22,19 +22,19 @@ $(document).ready(function () {
             $.ajax({
                 url: '/bouquet/get-sales-data',
                 type: 'POST',
-                data: { year: year, month: month, id: id },
+                data: {year: year, month: month, id: id},
                 dataType: 'json',
-                success: function(response) {
+                success: function (response) {
                     if (response) {
                         ['offline', 'online', 'marketplace'].forEach(type => {
-                            $.each(response[type], function(_, value) {
+                            $.each(response[type], function (_, value) {
                                 let inputSelector = `input[name='BouquetForecast[type_sales_value][${type}][${value.id}]']`;
                                 $(inputSelector).val(value.value);
                             });
                         });
                     }
                 },
-                error: function(xhr, status, error) {
+                error: function (xhr, status, error) {
                     console.error("Ошибка загрузки данных:", status, error);
                 }
             });
@@ -57,9 +57,9 @@ $('.calculate-btn').on('click', function () {
         }
     });
 
-    $('.cost-value').text(null);
-    $('.selfcost-value').text(null);
-    $('.markup-value').text(null);
+    // Показываем прелоадер
+    $(".loader-overlay").removeClass("d-none");
+    $(".content-wrapper").addClass("position-relative");
 
     $.ajax({
         url: '/bouquet/get-calculates',
@@ -67,7 +67,7 @@ $('.calculate-btn').on('click', function () {
         contentType: 'application/json',
         data: JSON.stringify(data),
         dataType: 'json',
-        success: function(response) {
+        success: function (response) {
             if (response) {
                 if (response.cost !== undefined) {
                     $('.cost-value').text(response.cost);
@@ -80,8 +80,11 @@ $('.calculate-btn').on('click', function () {
                 }
             }
         },
-        error: function(xhr, status, error) {
+        error: function (xhr, status, error) {
             console.error("Ошибка загрузки данных:", status, error);
+        },
+        complete: function () {
+            $(".loader-overlay").addClass("d-none");
         }
     });
 });