]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Форма для фильтрации JS
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 12 Dec 2024 15:18:39 +0000 (18:18 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 12 Dec 2024 15:18:39 +0000 (18:18 +0300)
erp24/controllers/UsersMessageManagementController.php
erp24/views/users-message-management/_data_table.php [new file with mode: 0644]
erp24/views/users-message-management/_export.php
erp24/views/users-message-management/export-kogort.php
erp24/views/users-message-management/index.php
erp24/web/js/users-message-management/index.js

index 654e1b40c9d0133d804e47c7dbef73d30f8bd055..d4c3268528ce3d1ba78c0f3cb4a8ec576f5f6e4f 100644 (file)
@@ -17,12 +17,11 @@ class UsersMessageManagementController extends Controller
     {
         $request = Yii::$app->request;
         $model = UsersMessageManagement::find()->one();
-
-        $month = $request->get('month', date('m'));
-        $year = $request->get('year', date('Y'));
+        $month = date('m');
+        $year =  date('Y');
 
         $startDate = date('Y-m-d', strtotime("$year-$month-01"));
-        $endDate = date('Y-m-t', strtotime($startDate)); // Последний день месяца
+        $endDate = date('Y-m-t', strtotime($startDate));
 
         $dates = [];
         $currentDate = strtotime($startDate);
@@ -30,16 +29,23 @@ class UsersMessageManagementController extends Controller
         while ($currentDate <= strtotime($endDate)) {
             $formattedDate = date('Y-m-d', $currentDate);
             $dates[$formattedDate] = [
-                'target' => [$this->generateLink($formattedDate, 'target', 'generate-excel'),
-                    $this->generateLink($formattedDate, 'target', 'view-kogort-users')],
-                'whatsapp' => [$this->generateLink($formattedDate, 'whatsapp', 'generate-excel'),
-                    $this->generateLink($formattedDate, 'whatsapp', 'view-kogort-users')],
-                'call' => [$this->generateLink($formattedDate, 'call', 'generate-excel'),
-                    $this->generateLink($formattedDate, 'call', 'view-kogort-users')],
+                'target' => [
+                    $this->generateLink($formattedDate, 'target', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'target', 'view-kogort-users')
+                ],
+                'whatsapp' => [
+                    $this->generateLink($formattedDate, 'whatsapp', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'whatsapp', 'view-kogort-users')
+                ],
+                'call' => [
+                    $this->generateLink($formattedDate, 'call', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'call', 'view-kogort-users')
+                ],
             ];
             $currentDate = strtotime('+1 day', $currentDate);
         }
 
+
         if (!$model) {
             $model = new UsersMessageManagement;
         }
@@ -61,6 +67,7 @@ class UsersMessageManagementController extends Controller
             'links' => $dates,
             'month' => $month,
             'year' => $year,
+
         ]);
     }
 
@@ -81,16 +88,27 @@ class UsersMessageManagementController extends Controller
         while ($currentDate <= strtotime($endDate)) {
             $formattedDate = date('Y-m-d', $currentDate);
             $dates[$formattedDate] = [
-                'target' => [$this->generateLink($formattedDate, 'target', 'generate-excel'),
-                    $this->generateLink($formattedDate, 'target', 'view-kogort-users')],
-                'whatsapp' => [$this->generateLink($formattedDate, 'whatsapp', 'generate-excel'),
-                    $this->generateLink($formattedDate, 'whatsapp', 'view-kogort-users')],
-                'call' => [$this->generateLink($formattedDate, 'call', 'generate-excel'),
-                    $this->generateLink($formattedDate, 'call', 'view-kogort-users')],
+                'target' => [
+                    $this->generateLink($formattedDate, 'target', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'target', 'view-kogort-users')
+                ],
+                'whatsapp' => [
+                    $this->generateLink($formattedDate, 'whatsapp', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'whatsapp', 'view-kogort-users')
+                ],
+                'call' => [
+                    $this->generateLink($formattedDate, 'call', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'call', 'view-kogort-users')
+                ],
             ];
             $currentDate = strtotime('+1 day', $currentDate);
         }
-        //var_dump($dates); die();
+
+        if ($request->isAjax) {
+            return $this->renderPartial('_data_table', [
+                'links' => $dates,
+            ]);
+        }
 
         return $this->render('export-kogort', [
             'links' => $dates,
diff --git a/erp24/views/users-message-management/_data_table.php b/erp24/views/users-message-management/_data_table.php
new file mode 100644 (file)
index 0000000..c3a0d11
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+use yii\helpers\Html;
+use yii\helpers\Url;
+
+
+/** @var array $links */
+/** @var string $month */
+/** @var string $year */
+
+
+
+?>
+
+<table class="table table-bordered table-striped">
+    <thead class="table-light">
+    <tr>
+        <th>День выгрузки</th>
+        <th>Target</th>
+        <th>Whatsapp</th>
+        <th>Звонок</th>
+    </tr>
+    </thead>
+    <tbody>
+    <?php foreach ($links as $date => $columns): ?>
+        <tr>
+            <td><?= Html::encode($date) ?></td>
+            <td>
+                <a href="<?= Url::to($columns['target'][0]) ?>" class="btn btn-link" target="_blank" download="users-target-<?= $date ?>.xlsx">
+                    Таргет-<?= $date ?>.xlsx
+                </a>
+                <a href="<?= Url::to($columns['target'][1]) ?>" target="_blank" class="btn btn-link">
+                    Посмотреть
+                </a>
+            </td>
+            <td>
+                <a href="<?= Url::to($columns['whatsapp'][0]) ?>" class="btn btn-link" target="_blank" download="users-whatsapp-<?= $date ?>.xlsx">
+                    Whatsapp-<?= $date ?>.xlsx
+                </a>
+                <a href="<?= Url::to($columns['whatsapp'][1]) ?>" target="_blank" class="btn btn-link">
+                    Посмотреть
+                </a>
+            </td>
+            <td>
+                <a href="<?= Url::to($columns['call'][0]) ?>" class="btn btn-link" target="_blank" download="users-call-<?= $date ?>.xlsx">
+                    Звонок-<?= $date ?>.xlsx
+                </a>
+                <a href="<?= Url::to($columns['call'][1]) ?>" target="_blank" class="btn btn-link">
+                    Посмотреть
+                </a>
+            </td>
+        </tr>
+    <?php endforeach; ?>
+    </tbody>
+</table>
\ No newline at end of file
index 34293dc672671ade9d618fac6c151fe0870af446..74f50d57e6c417d17b17898737d82cff53e1253a 100644 (file)
@@ -1,50 +1,41 @@
 <?php
 use yii\helpers\Html;
 use yii\helpers\Url;
-use yii\widgets\ActiveForm;
+
 
 /** @var array $links */
 /** @var string $month */
 /** @var string $year */
-/* @var $model UsersMessageManagement */
+
+
 
 ?>
 <div class="row mb-3">
     <div class="col-4 col-lg-offset-8">
-        <?php $form2 = ActiveForm::begin([
-            'id' => 'month-year-form',
-            'options' => ['class' => 'row align-items-center g-3'],
-        ]);
-
-        ?>
-
-        <div class="col">
-            <?= $form2->field($model, 'month', [
-                'options' => ['class' => 'form-group'],
-            ])->dropDownList(\yii_app\helpers\DateHelper::MONTH_NUMBER_NAMES, [
-                'class' => 'form-control',
-                'prompt' => 'Выберите месяц',
-            ])->label(false) ?>
-        </div>
-
-        <div class="col">
-            <?= $form2->field($model, 'year', [
-                'options' => ['class' => 'form-group'],
-            ])->dropDownList(range(((int)$year - 3), ((int)$year + 3)), [
-                'class' => 'form-control',
-                'prompt' => 'Выберите год',
-            ])->label(false) ?>
-        </div>
+        <div id="month-year-form" class="row align-items-center g-3">
+            <div class="col">
+                <select id="month-select" name="month" class="form-control">
+                    <option value="" selected>Выберите месяц</option>
+                    <?php foreach (\yii_app\helpers\DateHelper::MONTH_NUMBER_NAMES as $key => $value): ?>
+                        <option value="<?= $key ?>" <?= $key == $month ? 'selected' : '' ?>><?= $value ?></option>
+                    <?php endforeach; ?>
+                </select>
+            </div>
 
-        <div class="col-auto">
-            <?= Html::submitButton('Показать', ['class' => 'btn btn-primary']) ?>
+            <div class="col">
+                <select id="year-select" name="year" class="form-control">
+                    <option value="" selected>Выберите год</option>
+                    <?php for ($i = $year - 3; $i <= $year + 3; $i++): ?>
+                        <option value="<?= $i ?>" <?= $i == $year ? 'selected' : '' ?>><?= $i ?></option>
+                    <?php endfor; ?>
+                </select>
+            </div>
         </div>
 
-        <?php ActiveForm::end(); ?>
     </div>
 </div>
 
-
+<div id="data-table">
     <table class="table table-bordered table-striped">
         <thead class="table-light">
         <tr>
@@ -87,3 +78,4 @@ use yii\widgets\ActiveForm;
         <?php endforeach; ?>
         </tbody>
     </table>
+</div>
index 39e53554afa626ecf15f108bc127338385ab1d66..258014b3b6b5713e105e52e091c4d526c65cbac8 100644 (file)
@@ -3,8 +3,8 @@ use yii\helpers\Html;
 use yii\helpers\Url;
 
 /** @var array $links */
-/** @var string $startDate */
-/** @var string $endDate */
+/** @var string $month */
+/** @var string $year */
 
 $this->title = 'Рассылка по когортам';
 ?>
@@ -16,22 +16,31 @@ $this->title = 'Рассылка по когортам';
 
     <span class="display-6">Когорты</span>
     <hr>
-    <form method="get" class="mb-4">
-        <div class="row g-3">
+    <div class="col-4 col-lg-offset-8">
+        <form id="month-year-form" class="row align-items-center g-3" method="get" action="<?= \yii\helpers\Url::to(['controller/action']) ?>">
             <div class="col">
-                <label for="start_date" class="form-label">Начальная дата</label>
-                <input type="date" name="start_date" id="start_date" class="form-control" value="<?= Html::encode($startDate) ?>">
+                <select name="month" class="form-control">
+                    <option value="" selected>Выберите месяц</option>
+                    <?php foreach (\yii_app\helpers\DateHelper::MONTH_NUMBER_NAMES as $key => $value): ?>
+                        <option value="<?= $key ?>" <?= $key == $month ? 'selected' : '' ?>><?= $value ?></option>
+                    <?php endforeach; ?>
+                </select>
             </div>
+
             <div class="col">
-                <label for="end_date" class="form-label">Конечная дата</label>
-                <input type="date" name="end_date" id="end_date" class="form-control" value="<?= Html::encode($endDate) ?>">
+                <select name="year" class="form-control">
+                    <option value="" selected>Выберите год</option>
+                    <?php for ($i = $year - 3; $i <= $year + 3; $i++): ?>
+                        <option value="<?= $i ?>" <?= $i == $year ? 'selected' : '' ?>><?= $i ?></option>
+                    <?php endfor; ?>
+                </select>
             </div>
+
             <div class="col-auto">
-                <label class="form-label d-block">&nbsp;</label>
                 <button type="submit" class="btn btn-primary">Показать</button>
             </div>
-        </div>
-    </form>
+        </form>
+    </div>
 
     <table class="table table-bordered table-striped">
         <thead class="table-light">
index ae59699ca8b77a30fda2c70ffcca4e6ada60f6e0..6d9825cc32ca355ed8c56672733c609593e03cef 100644 (file)
@@ -8,6 +8,7 @@ use dosamigos\datetimepicker\DateTimePicker;
 use yii_app\records\UsersMessageManagement;
 
 /* @var $model UsersMessageManagement */
+
 /** @var array $links */
 /** @var string $month */
 /** @var string $year */
@@ -171,7 +172,7 @@ $this->registerJsFile('/js/users-message-management/index.js', ['position' => \y
                     'links' => $links,
                     'month' => $month,
                     'year' => $year,
-                    'model' => $model,
+
                 ]) ?>
             </div>
         </div>
index 1b3d1ce163ef3f1a7ab5dc09e4e9aebe6121420a..9551156cc31f7cac99eaf57fdea2aefd59df0a63 100644 (file)
@@ -26,3 +26,38 @@ function setReadonly(id, checked) {
 $(document).ready(() => {
     showTab('mainTab');
 })
+
+document.addEventListener('DOMContentLoaded', function () {
+    const monthSelect = document.getElementById('month-select');
+    const yearSelect = document.getElementById('year-select');
+
+    function handleFormChange() {
+        const month = monthSelect.value;
+        const year = yearSelect.value;
+
+        if (!month || !year) {
+            return;
+        }
+
+        const params = new URLSearchParams({ month, year });
+        const url = '/users-message-management/export-kogort?' + params.toString();
+
+        fetch(url, {
+            method: 'GET',
+            headers: {
+                'X-Requested-With': 'XMLHttpRequest' // Указываем, что это AJAX-запрос
+            },
+        })
+            .then(response => response.text())
+            .then(html => {
+                // Обновляем таблицу с данными
+                document.querySelector('#data-table').innerHTML = html;
+            })
+            .catch(error => {
+                console.error('Ошибка:', error);
+            });
+    }
+
+    monthSelect.addEventListener('change', handleFormChange);
+    yearSelect.addEventListener('change', handleFormChange);
+});