From f8f2eaa7aad9fe458f390bae07ff190d94f5cc19 Mon Sep 17 00:00:00 2001 From: Vladimir Fomichev Date: Thu, 11 Sep 2025 10:04:43 +0300 Subject: [PATCH] =?utf8?q?=D0=97=D0=B0=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD?= =?utf8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=B0=D1=80=D1=85?= =?utf8?q?=D0=B8=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../MatrixBouquetActualityController.php | 16 ++++++ .../views/matrix-bouquet-actuality/index.php | 45 ++++++++++----- .../web/js/matrix-bouquet-actuality/index.js | 57 ++++++++++++++++++- 3 files changed, 101 insertions(+), 17 deletions(-) diff --git a/erp24/controllers/MatrixBouquetActualityController.php b/erp24/controllers/MatrixBouquetActualityController.php index ebc5696d..413cb40c 100644 --- a/erp24/controllers/MatrixBouquetActualityController.php +++ b/erp24/controllers/MatrixBouquetActualityController.php @@ -7,6 +7,7 @@ use yii\data\ActiveDataProvider; use yii\helpers\ArrayHelper; use yii\web\BadRequestHttpException; use yii\web\Response; +use yii_app\records\AdminGroup; use yii_app\records\BouquetComposition; use yii_app\records\BouquetCompositionMatrixTypeHistory; use yii_app\records\MatrixBouquetActuality; @@ -477,4 +478,19 @@ class MatrixBouquetActualityController extends Controller throw new NotFoundHttpException('The requested page does not exist.'); } + + private function checkAccess() { + $groupId = Yii::$app->user->identity->group_id; + + if (!in_array($groupId, [ + AdminGroup::GROUP_IT, + AdminGroup::GROUP_BUSH_CHEF_FLORIST, + AdminGroup::GROUP_BUSH_DIRECTOR, + AdminGroup::GROUP_RS_DIRECTOR, + ], true)) { + return $this->render('/site/index'); + } + + return null; + } } diff --git a/erp24/views/matrix-bouquet-actuality/index.php b/erp24/views/matrix-bouquet-actuality/index.php index 9f95d87f..32eab955 100644 --- a/erp24/views/matrix-bouquet-actuality/index.php +++ b/erp24/views/matrix-bouquet-actuality/index.php @@ -162,12 +162,12 @@ foreach ($subgroups as $sg) { ])->label(false) ?>
- field($filter, 'is_archive')->checkbox([ - 'label' => 'Архивные', - 'uncheck' => 0, - 'checked' => (bool)$filter->is_archive, - 'id' => 'isArchiveCheckbox' - ])->label(false) ?> +field($filter, 'is_archive')->checkbox([ +// 'label' => 'Архивные', +// 'uncheck' => 0, +// 'checked' => (bool)$filter->is_archive, +// 'id' => 'isArchiveCheckbox' +// ])->label(false) ?>
@@ -266,21 +266,36 @@ foreach ($subgroups as $sg) { 'contentOptions' => ['style'=>'width:160px; text-align:center;'], 'value' => function ($row, $key, $index) { $product = $row['product']; - $btnArchOn = Html::button('В архив', [ - 'class' => 'btn btn-xs btn-danger ms-2 add-actuality-row', + $actuality = $row['actuality']; + $btnArchOnOptions = [ + 'class' => 'btn btn-xs btn-danger ms-2 add-actuality-row archiv-in-btn', 'type' => 'button', 'title' => 'В архив', - 'data-guid' => $product->id, + 'data-archiv-in' => $actuality ? $actuality->id : $product->id, + 'data-id' => $product->id, 'data-name' => $product->name, - ]); - $btnArchOff = Html::button('Из архива', [ - 'class' => 'btn btn-xs btn-secondary ms-2 add-actuality-row', + ]; + if ($actuality && $actuality->is_archive == 1) { + $btnArchOnOptions['disabled'] = true; + } + + $btnArchOffOptions = [ + 'class' => 'btn btn-xs btn-secondary ms-2 add-actuality-row archiv-out-btn', 'type' => 'button', 'title' => 'Из архива', - 'data-guid' => $product->id, + 'data-archiv-out' => $actuality ? $actuality->id : $product->id, + 'data-id' => $product->id, 'data-name' => $product->name, - ]); - return '
' . $btnArchOn . $btnArchOff . '
'; + ]; + + if ($actuality && $actuality->is_archive == 0 || !$actuality) { + $btnArchOffOptions['disabled'] = true; + } + + $btnArchOn = Html::button('В архив', $btnArchOnOptions); + $btnArchOff = Html::button('Из архива', $btnArchOffOptions); + //return '
' . $btnArchOn . $btnArchOff . '
'; + return '
' . '
'; } ], diff --git a/erp24/web/js/matrix-bouquet-actuality/index.js b/erp24/web/js/matrix-bouquet-actuality/index.js index eb1b3ef2..6f259f87 100644 --- a/erp24/web/js/matrix-bouquet-actuality/index.js +++ b/erp24/web/js/matrix-bouquet-actuality/index.js @@ -106,8 +106,61 @@ }); - const onlyActive = document.getElementById('onlyActiveCheckbox'); - const onlyInactive = document.getElementById('onlyInactiveCheckbox'); + + document.querySelectorAll('.archiv-in-btn[data-archiv-in]').forEach(btn => { + btn.addEventListener('click', () => { + const targetId = btn.getAttribute('data-archiv-in'); + if (!confirm('Отправить в архив?')) { + return; + } + + $.ajax({ + url: '/matrix-bouquet-actuality/ajax-delete', + type: 'POST', + data: {id: targetId, _csrf: yii.getCsrfToken()}, + success: function (response) { + if (response.success) { + + alert(response.message); + } else { + alert('Ошибка: ' + response.message); + } + }, + error: function () { + alert('Произошла ошибка при удалении'); + } + }); + }); + }); + + document.querySelectorAll('.archiv-out-btn[data-archiv-out]').forEach(btn => { + btn.addEventListener('click', () => { + const targetId = btn.getAttribute('data-archiv-out'); + if (!confirm('Убрать из архива?')) { + return; + } + + $.ajax({ + url: '/matrix-bouquet-actuality/ajax-delete', + type: 'POST', + data: {id: targetId, _csrf: yii.getCsrfToken()}, + success: function (response) { + if (response.success) { + + alert(response.message); + } else { + alert('Ошибка: ' + response.message); + } + }, + error: function () { + alert('Произошла ошибка при удалении'); + } + }); + }); + }); + + const inArchiveBtns = document.getElementById('inArchiveBtn'); + const outArchiveBtns = document.getElementById('outArchiveBtn'); if (onlyActive && onlyInactive) { onlyActive.addEventListener('change', () => { if (onlyActive.checked) { onlyInactive.checked = false; } }); onlyInactive.addEventListener('change', () => { if (onlyInactive.checked) { onlyActive.checked = false; } }); -- 2.39.5