]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-417
authormarina <m.zozirova@gmail.com>
Wed, 28 May 2025 06:57:14 +0000 (09:57 +0300)
committermarina <m.zozirova@gmail.com>
Wed, 28 May 2025 06:57:14 +0000 (09:57 +0300)
erp24/views/write_offs_erp/_form.php
erp24/web/js/validate/validateForm.js

index b7cf784b071da272133bf6aaeb2a6aed77134b28..58eb6a9b4b5603654380eeb51420404c602a6558 100644 (file)
@@ -34,35 +34,6 @@ use yii_app\records\WriteOffsProductsErp;
 $this->registerJsFile('/js/validate/validateForm.js', ['position' => \yii\web\View::POS_END]);
 $this->registerJsFile('/js/heic2any.min.js', ['position' => \yii\web\View::POS_END]);
 $this->registerJsFile('/js/heic_to_jpg_replace.js', ['position' => \yii\web\View::POS_END]);
-
-$js = <<<JS
-$(document).ready(function() {
-    $('.write-offs-erp-form').on('submit', function(e) {
-        let allRowsHaveImage = true;
-
-        $('.multiple-input-list__item').each(function() {
-            let row = $(this);
-            let hasImageInRow = row.find('.list-cell__images_row img').length > 0;
-
-            let fileInput = row.find('.list-cell__imageFiles input[type="file"]');
-            let hasFilesSelected = fileInput.length && fileInput[0].files.length > 0;
-
-            if (!hasImageInRow && !hasFilesSelected) {
-                allRowsHaveImage = false;
-                return false;
-            }
-        });
-
-        if (!allRowsHaveImage) {
-            e.preventDefault();
-            alert('Пожалуйста, добавьте хотя бы одно фото к каждому списанию перед сохранением.');
-            return false;
-        }
-    });
-});
-JS;
-
-$this->registerJs($js, \yii\web\View::POS_READY);
 ?>
 
 <style>
index 9abf97709dcbd558fd9d636d4f0a70a412e530d3..48780fbd2e3a9b98ff8f49d9f8b46769ac382b6d 100755 (executable)
@@ -1,39 +1,68 @@
+$(".form-validate button").click(function (e) {
+    var form = $(this).closest('form')[0];
+    e.preventDefault();
 
+    var yiiform = $("#" + form.id);
 
-    $(".form-validate button").click( function (e) {
-        var form = $(this).closest('form')[0];
+    if ($('.multiple-input-list__item').length === 0) {
+        alert('Добавьте хотя бы одно списание перед сохранением.');
+        return false;
+    }
 
-        e.preventDefault();
-        var yiiform = $("#"+form.id);    // отправляем данные на сервер
+    let allRowsHaveImage = true;
 
-        $.ajax({
-                type: "post",
-                url: "validate",
-                data: yiiform.serializeArray()
-            }
-        )
-            .done(function(data) {
-                if(data.success) {
-                    console.log(" данные проверены ");
-                    yiiform.submit();
-                } else {
-                    console.log(" сервер вернул ошибку ")
-                    if (data.errors) {
-                        // alert(data.errors[Object.keys(data.errors).shift()][0]);
-                        var values = [];
-                        $.each(data.errors, function(key,value) {
-                            values.push(value);
-                        });
-                        var strOut = values.join (', \n');
-                        var strOut2 = values.join (', <br>');
-                        alert(strOut);
-                        $('.messages').html(strOut2);
-
-                    }
-                }
-            })
-            .fail(function () {
-                console.log(" не удалось выполнить запрос к серверу ")
-            })
-        return false; // отменяем отправку данных формы
+    $('.multiple-input-list__item').each(function () {
+        let row = $(this);
+        let hasImageInRow = row.find('.list-cell__images_row img').length > 0;
+        let fileInput = row.find('.list-cell__imageFiles input[type="file"]');
+        let hasFilesSelected = fileInput.length && fileInput[0].files.length > 0;
+
+        if (!hasImageInRow && !hasFilesSelected) {
+            allRowsHaveImage = false;
+            return false;
+        }
+    });
+
+    if (!allRowsHaveImage) {
+        alert('Пожалуйста, добавьте хотя бы одно фото к каждому списанию перед сохранением.');
+        return false;
+    }
+
+    $.ajax({
+        type: "post",
+        url: "validate",
+        data: yiiform.serializeArray()
     })
+        .done(function (data) {
+            $('.messages').html('');
+            yiiform.find('.has-error').removeClass('has-error');
+            yiiform.find('.help-block').remove();
+
+            if (data.success) {
+                yiiform.submit();
+            } else {
+                if (data.errors) {
+                    var values = [];
+
+                    $.each(data.errors, function (key, value) {
+                        values.push(value);
+                        var field = yiiform.find('[name="' + key + '"]');
+                        if (field.length) {
+                            field.closest('.form-group').addClass('has-error');
+                            field.after('<div class="help-block">' + value[0] + '</div>');
+                        }
+                    });
+
+                    var strOut = values.join(', \n');
+                    var strOut2 = values.join(', <br>');
+                    alert(strOut);
+                    $('.messages').html(strOut2);
+                }
+            }
+        })
+        .fail(function () {
+            console.log("не удалось выполнить запрос к серверу");
+        });
+
+    return false;
+});