]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
исправлена запись изменений в БД
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 10 Sep 2024 05:56:09 +0000 (08:56 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 10 Sep 2024 05:56:09 +0000 (08:56 +0300)
erp24/controllers/ClusterLinkEditController.php
erp24/views/cluster_link_store_edit/update.php

index d52af99f3a14b24ef6eb5e90ae87de2141cbee90..4c4a029b5e52643132f443a098bc6a83d44a69aa 100644 (file)
@@ -192,7 +192,7 @@ class ClusterLinkEditController extends Controller
                 }
             }
 
-
+            //var_dump($valuesArray);
             $inputData = [];
             foreach ($valuesArray as $key => $rowArray) {
                 $arrayRow = [];
@@ -204,7 +204,7 @@ class ClusterLinkEditController extends Controller
 
                 }
                 $arrayRow['year'] = $yearPost;
-                $arrayRow['cluster'] = $postValues[$key];
+                $arrayRow['cluster'] = (int) $postValues[$key];
                 $inputData[$key] = $arrayRow;
 
             }
@@ -290,7 +290,7 @@ class ClusterLinkEditController extends Controller
             if (!empty($clusterSetList)) {
                 ClusterCalendar::deleteAll(['year' => $yearPost]);
                 foreach ($clusterSetList as $item) {
-
+                   // var_dump($item);
                     $ClusterCalendar = new ClusterCalendar();
                     $ClusterCalendar->setClusterId($item['cluster'])
                         ->setDateFrom($item['dateFrom'])
index 72332b28e564df5f326c2a6b6fe68febc4f576f5..03a1edb907de7d75889fc239fbe23f2fd993c666 100644 (file)
@@ -12,126 +12,255 @@ use yii\widgets\ActiveForm;
 /** @var array $clusters */
 /** @var array $years */
 /** @var array $year */
+/** @var array $quarters */
 /** @var array $inputDate */
 
 $this->title = 'Изменение кустов ';
 
-?>
-<style>
-
-
-    tr>th:first-child,tr>td:first-child {
-        position: sticky;
-        left: 0;
-    }
-
-    tr:nth-child(odd) td {
-        background: #fff2f2;
-    }
-    tr:nth-child(odd) td {
-        background:  #ffffff;
-    }
-
-    tr:nth-child(even) td {
-        background: #edf2f7;
-    }
-</style>
-<div class="cluster-update m-5">
-
-    <h1><?= Html::encode($this->title) ?></h1>
-    <p>
-        <?= Html::a('К списку', ['index'], ['class' => 'btn btn-primary']) ?>
-    </p>
-
-    <div class="cluster-form">
+// Определяем текущий квартал
+$currentMonth = date('n'); // Текущий месяц (1-12)
+$currentQuarter = ceil($currentMonth / 3); // Определяем квартал (1-4)
 
+?>
+    <style>
+        tr>th:first-child, tr>td:first-child {
+            position: sticky;
+            left: 0;
+        }
+        tr:nth-child(odd) td {
+            background: #fff2f2;
+        }
+        tr:nth-child(even) td {
+            background: #ffffff;
+        }
+        tr:nth-child(even) td {
+            background: #edf2f7;
+        }
+
+
+        .legend {
+            display: flex;
+            flex-wrap: wrap;
+            margin: 29px 0;
+            width: 100%;
+        }
+        .legend-item {
+            display: flex;
+            align-items: center;
+            margin-right: 15px;
+        }
+        .legend-box {
+            width: 20px;
+            height: 20px;
+            margin-right: 5px;
+            border: 1px solid #000;
+        }
+
+
+        .cluster-1 { background-color: #ff9999 !important; } /* Красный */
+        .cluster-2 { background-color: #99ccff !important; } /* Голубой */
+        .cluster-3 { background-color: #99ff99 !important; } /* Зеленый */
+        .cluster-4 { background-color: #ffcc99 !important; } /* Оранжевый */
+        .cluster-5 { background-color: #cc99ff !important; } /* Фиолетовый */
+        .cluster-none { background-color: #e0e0e0 !important; }
+
+    </style>
+
+    <div class="cluster-update m-5">
+        <h1><?= Html::encode($this->title) ?></h1>
+        <p>
+            <?= Html::a('К списку', ['index'], ['class' => 'btn btn-primary']) ?>
+        </p>
+
+        <div class="cluster-form">
+            <?php $form = ActiveForm::begin(); ?>
+
+            <!-- Кнопка для сохранения -->
+            <div class="form-group">
+                <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
+            </div>
+<div class="row">
+    <div class="col-6">
+        <!-- Выпадающий список для выбора года -->
+        <?= Html::dropDownList('year', $year, $years, [
+            'class' => 'form-select form-select-sm mb-1',
+            'aria-label' => 'Год',
+        ]) ?>
+    </div>
+    <div class="col-6">
+        <!-- Выпадающий список для выбора квартала -->
+        <?= Html::dropDownList('', $currentQuarter, [
+            1 => '1 квартал (январь - март)',
+            2 => '2 квартал (апрель - июнь)',
+            3 => '3 квартал (июль - сентябрь)',
+            4 => '4 квартал (октябрь - декабрь)',
+        ], [
+            'id' => 'quarter-select',
+            'class' => 'form-select form-select-sm mb-1',
+            'aria-label' => 'Квартал',
+    'name' => '',
+        ]) ?>
+    </div>
+</div>
 
 
-        <?php $form = ActiveForm::begin(); ?>
+<div class="row">
 
-        <div class="form-group">
-            <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
+    <!-- Легенда для кластеров -->
+    <div class="legend">
+        <div class="legend-item">
+            <div class="legend-box cluster-1"></div>
+            <span>Кластер 1</span>
         </div>
+        <div class="legend-item">
+            <div class="legend-box cluster-2"></div>
+            <span>Кластер 2</span>
+        </div>
+        <div class="legend-item">
+            <div class="legend-box cluster-3"></div>
+            <span>Кластер 3</span>
+        </div>
+        <div class="legend-item">
+            <div class="legend-box cluster-4"></div>
+            <span>Кластер 4</span>
+        </div>
+        <div class="legend-item">
+            <div class="legend-box cluster-5"></div>
+            <span>Кластер 5</span>
+        </div>
+        <div class="legend-item">
+            <div class="legend-box cluster-none"></div>
+            <span>Не выбран</span>
+        </div>
+    </div>
+</div>
 
-        <?= Html::dropDownList('year', $year, $years,
-            [
-                    'class'=>"form-select form-select-sm mb-1",
-                'label' =>'Год',
-                'aria-label'=>"form-select-sm"
-                ])?>
-
-        <table class="table table-bordered border-primary table-responsive">
-            <tr>
-                <td>Месяца</td>
-                <?php
-                foreach ($monthNames as $month) {
-                    ?><td colspan="4"><?=$month?></td><?php
-
-                }
-                ?>
-
-            </tr>
-            <tr>
-                <td>Магазины</td>
-                <?php
-                foreach ($monthNames as $month) {
-
-                    foreach (range(1,4) as $numWeekMonth) {
-                        ?><td>№ нед. <?=$numWeekMonth?>
-
-
-                        </td><?php
-                    }
-                }
-                ?>
-
-            </tr>
-            <?php
-            foreach ($stores as $keyStore => $store) {
-                ?>
+            <table class="table table-bordered border-primary table-responsive">
+                <thead>
                 <tr>
-                <td><?=$store?></td><?php
-
-                foreach ($monthNames as $keyMonth => $month) {
-
-                    foreach (range(1,4) as $numWeekMonth) {
-
-                            ?><td>
-                            <?php
-                            $nameClusterField = 'store_' . $keyStore .'__month_' . $keyMonth. '__weekMonth_' . $numWeekMonth;
+                    <td>Магазины / Месяцы</td>
+
+                        <td colspan="4" class="month-column" data-quarter="1">Январь</td>
+                        <td colspan="4" class="month-column" data-quarter="1">Февраль</td>
+                        <td colspan="4" class="month-column" data-quarter="1">Март</td>
+                        <td colspan="4" class="month-column" data-quarter="2">Апрель</td>
+                        <td colspan="4" class="month-column" data-quarter="2">Май</td>
+                        <td colspan="4" class="month-column" data-quarter="2">Июнь</td>
+                        <td colspan="4" class="month-column" data-quarter="3">Июль</td>
+                        <td colspan="4" class="month-column" data-quarter="3">Август</td>
+                        <td colspan="4" class="month-column" data-quarter="3">Сентябрь</td>
+                        <td colspan="4" class="month-column" data-quarter="4">Октябрь</td>
+                        <td colspan="4" class="month-column" data-quarter="4">Ноябрь</td>
+                        <td colspan="4" class="month-column" data-quarter="4">Декабрь</td>
 
-                            $inputDateRow = null;
-                            $keyRow = $keyStore . '.' . $keyMonth. '.' . $numWeekMonth;
-                            $setValueRow = ArrayHelper::getValue($inputDate, $keyRow);
-
-                            if (!empty($setValueRow)) {
-                                $inputDateRow = $setValueRow;
-                            }
-                            ?>
-                            <?= Html::radioList($nameClusterField, $inputDateRow, $clusters); ?>
-
-                            </td><?php
+                </tr>
+                <tr>
+                    <td></td>
+                    <?php foreach ($monthNames as $keyMonth => $month): ?>
+                        <?php foreach (range(1, 4) as $numWeekMonth): ?>
+                            <td class="month-column" data-quarter="<?= ceil(($keyMonth + 1) / 3) ?>">Нед. №<?= $numWeekMonth ?></td>
+                        <?php endforeach; ?>
+                    <?php endforeach; ?>
+                </tr>
+                </thead>
+                <tbody>
+                <?php foreach ($stores as $keyStore => $store): ?>
+                    <tr>
+                        <td><?= $store ?></td>
+                        <?php foreach ($monthNames as $keyMonth => $month): ?>
+                            <?php foreach (range(1, 4) as $numWeekMonth): ?>
+                                <td class="month-column cluster-select" data-quarter="<?= ceil(($keyMonth + 1) / 3) ?>" data-cluster="none">
+                                    <?php
+                                    // Генерация имени поля для выпадающего списка
+                                    $nameClusterField = 'store_' . $keyStore .'__month_' . $keyMonth. '__weekMonth_' . $numWeekMonth;
+
+                                    // Получение текущего значения из данных
+                                    $inputDateRow = null;
+                                    $keyRow = $keyStore . '.' . $keyMonth. '.' . $numWeekMonth;
+                                    $setValueRow = ArrayHelper::getValue($inputDate, $keyRow);
+
+                                    if (!empty($setValueRow)) {
+                                        $inputDateRow = $setValueRow;
+                                    }
+
+                                    // Вывод выпадающего списка для выбора кластера
+                                    echo Html::dropDownList($nameClusterField, $inputDateRow, $clusters, [
+                                        'class' => 'form-select form-select-sm cluster-dropdown',
+                                        'prompt' => 'Выберите кластер...',
+                                        'data-cluster-field' => $nameClusterField, // Добавляем атрибут для идентификации
+                                    ]);
+                                    ?>
+                                </td>
+                            <?php endforeach; ?>
+                        <?php endforeach; ?>
+
+
+                    </tr>
+                <?php endforeach; ?>
+                </tbody>
+            </table>
+
+            <!-- Кнопка для сохранения -->
+            <div class="form-group">
+                <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
+            </div>
+
+            <?php ActiveForm::end(); ?>
+        </div>
+    </div>
 
-                    }
+    <!-- Скрипт для управления отображением месяцев по кварталам -->
+    <script>
+        document.addEventListener('DOMContentLoaded', function () {
+            const quarterSelect = document.getElementById('quarter-select');
+            const monthColumns = document.querySelectorAll('.month-column');
+            // Функция для обновления цвета ячейки в зависимости от выбранного кластера
+            function updateCellColor(selectElement) {
+                const selectedValue = selectElement.value;
+                const cell = selectElement.closest('td'); // Найти родительскую ячейку
+
+                // Сбрасываем все классы кластеров
+                cell.classList.remove('cluster-1', 'cluster-2', 'cluster-3', 'cluster-4', 'cluster-5', 'cluster-none');
+
+                // Присваиваем новый цвет в зависимости от выбранного значения
+                if (selectedValue === '') {
+                    cell.classList.add('cluster-none'); // Серый цвет для невыбранного кластера
+                } else {
+                    cell.classList.add('cluster-' + selectedValue); // Присвоение цвета по кластеру
                 }
             }
-            ?>
-                </tr>
-
-
-        </table>
-
 
-        <div class="form-group">
-            <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
-        </div>
-
-        <?php ActiveForm::end(); ?>
+            // Обработчик для всех выпадающих списков кластеров
+            document.querySelectorAll('.cluster-dropdown').forEach(function (selectElement) {
+                // Инициализация цвета при загрузке страницы
+                updateCellColor(selectElement);
+
+                // Обработка события изменения значения
+                selectElement.addEventListener('change', function () {
+                    updateCellColor(selectElement);
+                });
+            });
+
+            function updateMonthColumns() {
+                const selectedQuarter = quarterSelect.value;
+
+                monthColumns.forEach(function (column) {
+                    if (column.dataset.quarter === selectedQuarter) {
+                        column.style.display = '';
+                    } else {
+                        column.style.display = 'none';
+                    }
+                });
+            }
 
-    </div>
+            // Событие при изменении квартала
+            quarterSelect.addEventListener('change', updateMonthColumns);
 
+            // Инициализация: отображаем текущий квартал при загрузке
+            updateMonthColumns();
+        });
+    </script>
 
-</div>
 <?php
 
 /*