]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-282 Нужно сделать интерфейс настройки магазина
authormarina <m.zozirova@gmail.com>
Tue, 28 Jan 2025 12:48:57 +0000 (15:48 +0300)
committermarina <m.zozirova@gmail.com>
Tue, 28 Jan 2025 12:48:57 +0000 (15:48 +0300)
erp24/controllers/CityStoreParamsController.php
erp24/records/CityStoreParams.php
erp24/views/city-store-params/index.php
erp24/web/css/select2-container-and-other-styles-fix.css
erp24/web/js/city-store-params/city-store-params.js

index 70a9c23e83357d553f68e9f4c2b5449337bbb45c..b06275ed6785ceb9ec85b27b4c0e3ff4b4d0676e 100644 (file)
@@ -41,20 +41,6 @@ class CityStoreParamsController extends Controller
         ];
     }
 
-    /**
-     * Просмотр конкретной записи
-     * @param int $id
-     * @return mixed
-     * @throws NotFoundHttpException
-     */
-    public function actionView($id)
-    {
-        return $this->render('view', [
-            'model' => $this->findModel($id),
-        ]);
-    }
-
-
     public function actionIndex()
     {
         $flash = 'info';
@@ -71,7 +57,13 @@ class CityStoreParamsController extends Controller
                     $this->updateStoreDynamic($postData['store_id'], 'territorial_manager', $postData['territorial_manager']);
                 }
 
-                $model = !empty($postData['id']) ? $this->findModel($postData['id']) : new CityStoreParams();
+
+                if (!empty($postData['id'])) {
+                    $model = $this->findModel($postData['id']);
+                } else {
+                    $model = new CityStoreParams();
+                }
+
 
                 if ($model->load(Yii::$app->request->post())) {
                     $model->matrix_type = is_array($model->matrix_type) ? implode(',', $model->matrix_type) : $model->matrix_type;
@@ -86,6 +78,7 @@ class CityStoreParamsController extends Controller
                     $value = 'Ошибка при сохранении: ' . implode('. ', array_map(fn($error) => is_array($error) ? implode(', ', $error) : $error, $model->getErrors()));
                 }
             }
+            return $this->redirect(Yii::$app->request->referrer);
         }
 
         Yii::$app->session->setFlash($flash, $value);
@@ -152,11 +145,36 @@ class CityStoreParamsController extends Controller
         $territorialManager = $data['territorial_manager'] ?? null;
         $bushChefFlorist = $data['bush_chef_florist'] ?? null;
 
-        $query = CityStore::find()->andWhere(['visible' => CityStore::IS_VISIBLE])
-            ->andFilterWhere(['city' => $data['address_city']])
-            ->andFilterWhere(['region' => $data['address_region']])
-            ->andFilterWhere(['district' => $data['address_district']])
-            ->andFilterWhere(['type' => $data['store_type']]);
+        $query = CityStore::find()
+            ->andWhere(['visible' => CityStore::IS_VISIBLE]);
+
+        if (!empty($data['address_city'])) {
+            $query->andWhere(['id' => CityStoreParams::find()
+                ->andWhere(['address_city' => $data['address_city']])
+                ->select('store_id')
+                ->column()]);
+        }
+
+        if (!empty($data['address_region'])) {
+            $query->andWhere(['id' => CityStoreParams::find()
+                ->andWhere(['address_region' => $data['address_region']])
+                ->select('store_id')
+                ->column()]);
+        }
+
+        if (!empty($data['address_district'])) {
+            $query->andWhere(['id' => CityStoreParams::find()
+                ->andWhere(['address_district' => $data['address_district']])
+                ->select('store_id')
+                ->column()]);
+        }
+
+        if (!empty($data['store_type'])) {
+            $query->andWhere(['id' => CityStoreParams::find()
+                ->andWhere(['store_type' => $data['store_type']])
+                ->select('store_id')
+                ->column()]);
+        }
 
         if (!empty($territorialManager)) {
             $territorialManagerStoreIds = StoreDynamic::find()
@@ -176,11 +194,13 @@ class CityStoreParamsController extends Controller
             $query->andWhere(['in', 'id', $bushChefFloristStoreIds ?: [-1]]);
         }
 
-        $stores = $query->orderBy('id')->all();
+        $stores = $query->all();
 
         return [
             'success' => true,
-            'data' => ArrayHelper::map($stores, 'id', fn($store) => $store->id . ' ' . $store->name),
+            'data' => ArrayHelper::map($stores, 'id', function($store) {
+                return $store->id . ' ' . $store->name;
+            }),
         ];
     }
 
index 231c26d4570be0a665e20d62434901473105a6e9..d43d8a0a175271fd53cc559eb6a166fb8a980b2e 100644 (file)
@@ -97,24 +97,6 @@ class CityStoreParams extends ActiveRecord
         ];
     }
 
-    public function afterSave($insert, $changedAttributes)
-    {
-        $fields = [
-            'address_region' => 'region',
-            'address_city' => 'city',
-            'address_district' => 'district',
-            'store_type' => 'type'
-        ];
-
-        foreach ($fields as $attribute => $field) {
-            $value = $insert ? $this->$attribute : ($changedAttributes[$attribute] ?? null);
-
-            if (!empty($value)) {
-                CityStore::updateAll([$field => $value], ['id' => $this->store_id]);
-            }
-        }
-    }
-
     public function getStore()
     {
         return $this->hasOne(CityStore::class, ['id' => 'store_id']);
index 9aaff3820dacf93cfeaae1ace861bc39824ea089..38a8d59e4409ea81f5a4214815d72ced00fdbe8b 100644 (file)
@@ -22,7 +22,7 @@ $this->params['breadcrumbs'][] = $this->title;
 $this->registerJsFile('/js/city-store-params/city-store-params.js', ['position' => \yii\web\View::POS_END]);
 ?>
 
-<div class="container mt-4 border-bottom">
+<div class="mx-4 mt-4 border-bottom">
     <h1><?= Html::encode($this->title) ?></h1>
 
     <div class="row">
@@ -144,7 +144,7 @@ $this->registerJsFile('/js/city-store-params/city-store-params.js', ['position'
         </div>
     </div>
     <div class="row mt-3">
-        <div class="col-md-8">
+        <div class="col-md-8 flash-column">
             <?php if (Yii::$app->session->hasFlash($flash)): ?>
                 <?= Html::tag('div', Yii::$app->session->getFlash($flash), [
                     'class' => 'alert text-center flash-message mb-1 py-1 alert-' . Html::encode($flash),
@@ -164,7 +164,7 @@ $this->registerJsFile('/js/city-store-params/city-store-params.js', ['position'
     </div>
 </div>
 <?php $form = \yii\widgets\ActiveForm::begin(); ?>
-<div class="container mt-4">
+<div class="mx-4 mt-4">
     <div class="row">
         <div class="col-md-3">
             <?= Html::dropDownList('selected_store', $select_store,
index 75a0945f69a0c2b405cd3da262ed4fa97e3472b4..596af7ef0f25073491d08a63fac06f0c5c5cb9f2 100755 (executable)
     word-wrap: break-word;
 }
 
+.select2-container .select2-selection--single .select2-selection__clear {
+    position: absolute;
+    left: 5px;
+    top: 50%;
+    transform: translateY(-50%);
+}
+
 .notifit_confirm_bg {
     z-index: 10000000;
 }
index ed9a0f1b2fa449e0495fc9474efa340e7382a5d3..ee09facb4d6d4d5e7a3b6f2b60f8721c188c4911 100644 (file)
@@ -150,5 +150,10 @@ $('#reset-button').on('click', function() {
     $('#store_type').val(null).trigger('change');
     $('#territorial_manager').val(null).trigger('change');
     $('#bush_chef_florist').val(null).trigger('change');
-    $('#apply-button').click()
-});
\ No newline at end of file
+    $('#apply-button').click();
+
+    let flashMessage = '<div class="alert text-center flash-message mb-1 py-1 alert-info">Для редактирования необходимо выбрать магазин!</div>';
+    $('.flash-column').html(flashMessage);
+    setTimeout(() => $('.flash-message').fadeOut(2000), 5000);
+
+});