From 43c9ebb6bffb2c3ea58fd38c5053f2e301b72808 Mon Sep 17 00:00:00 2001 From: marina Date: Wed, 22 Jan 2025 09:44:50 +0300 Subject: [PATCH] =?utf8?q?ERP-282=20=D0=9D=D1=83=D0=B6=D0=BD=D0=BE=20?= =?utf8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D1=82=D1=8C=20=D0=B8=D0=BD=D1=82?= =?utf8?q?=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81=20=D0=BD=D0=B0=D1=81=D1=82?= =?utf8?q?=D1=80=D0=BE=D0=B9=D0=BA=D0=B8=20=D0=BC=D0=B0=D0=B3=D0=B0=D0=B7?= =?utf8?q?=D0=B8=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../controllers/CityStoreParamsController.php | 50 +++++++++++ erp24/records/CityStore.php | 2 + erp24/views/city-store-params/index.php | 76 ++++++++++------ .../js/city-store-params/city-store-params.js | 89 +++++++++++++++++++ 4 files changed, 189 insertions(+), 28 deletions(-) create mode 100644 erp24/web/js/city-store-params/city-store-params.js diff --git a/erp24/controllers/CityStoreParamsController.php b/erp24/controllers/CityStoreParamsController.php index b8987a8e..cd2dcfc5 100644 --- a/erp24/controllers/CityStoreParamsController.php +++ b/erp24/controllers/CityStoreParamsController.php @@ -3,10 +3,14 @@ namespace app\controllers; use Yii; +use yii\base\Action; use yii\data\ActiveDataProvider; +use yii\helpers\ArrayHelper; use yii\web\Controller; use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; +use yii\web\Response; +use yii_app\records\CityStore; use yii_app\records\CityStoreParams; /** @@ -107,4 +111,50 @@ class CityStoreParamsController extends Controller throw new NotFoundHttpException('The requested page does not exist.'); } + + public function actionEdit() + { + + Yii::$app->response->format = Response::FORMAT_JSON; + + $data = Yii::$app->request->get(); + $addressCity = $data['address_city'] ?? ''; + $addressRegion = $data['address_region'] ?? ''; + $addressDistrict = $data['address_district'] ?? ''; + $territorialManager = $data['territorial_manager'] ?? ''; + $storeType = $data['store_type'] ?? ''; + $bushChefFlorist = $data['bush_chef_florist'] ?? ''; + + $stores = CityStore::find() + ->andWhere(['=', 'visible', CityStore::IS_VISIBLE]) + ->all(); + + return ArrayHelper::map($stores, 'id', function ($store) { + return $store->id . ' ' . $store->name; + }); + } + + public function getData() + { + Yii::$app->response->format = Response::FORMAT_JSON; + + $storeId = Yii::$app->request->get('selected_store'); + + $store = CityStore::findOne($storeId); + + if (empty($stores)) { + return ['error' => 'Не найдено магазинов']; + } + + $storeTypes = ArrayHelper::map($stores, 'id', 'store_type'); + $cities = ArrayHelper::map($stores, 'id', 'city'); + $territorialManagers = ArrayHelper::map($stores, 'id', 'territorial_manager'); + + return [ + 'store_types' => $storeTypes, + 'cities' => $cities, + 'territorial_managers' => $territorialManagers, + ]; + + } } diff --git a/erp24/records/CityStore.php b/erp24/records/CityStore.php index 2f7648dc..0e4b322b 100755 --- a/erp24/records/CityStore.php +++ b/erp24/records/CityStore.php @@ -64,6 +64,8 @@ use Yii; class CityStore extends ActiveRecord { + public const IS_VISIBLE = 1; + /** * {@inheritdoc} */ diff --git a/erp24/views/city-store-params/index.php b/erp24/views/city-store-params/index.php index 0e24789d..435a8659 100644 --- a/erp24/views/city-store-params/index.php +++ b/erp24/views/city-store-params/index.php @@ -2,47 +2,70 @@ use kartik\select2\Select2; use softark\duallistbox\DualListbox; +use yii\helpers\ArrayHelper; use yii\helpers\Html; -use yii\grid\GridView; +use yii\helpers\Url; +use yii_app\records\Admin; +use yii_app\records\AdminGroup; use yii_app\records\City; +use yii_app\records\StoreCityList; /* @var $this yii\web\View */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = 'City Store Params'; $this->params['breadcrumbs'][] = $this->title; + +$this->registerJsFile('/js/city-store-params/city-store-params.js', ['position' => \yii\web\View::POS_END]); ?>
- all(), 'id_city', 'city_name_ru'), ['prompt' => 'Выберите город', 'class' => 'form-select']); ?> + StoreCityList::TYPE_CITY]), 'id', 'name'), + ['prompt' => 'Выберите город', 'class' => 'form-select', 'id' => 'address_city']); + ?>
- where(['!=', 'region_name', ''])->all(), 'id_region', 'region_name'), ['prompt' => 'Выберите регион', 'class' => 'form-select']); ?> - 'd-block mt-2 text-decoration-none']); ?> + StoreCityList::TYPE_REGION]), 'id', 'name'), + ['prompt' => 'Выберите регион', 'class' => 'form-select', 'id' => 'address_region']); + ?> + 'd-block mt-2 text-decoration-none']); + ?>
- where(['!=', 'region_name', ''])->all(), 'id_region', 'region_name'), ['prompt' => 'Выберите район', 'class' => 'form-select']); ?> + StoreCityList::TYPE_DISTRICT]), 'id', 'name'), + ['prompt' => 'Выберите район', 'class' => 'form-select', 'id' => 'address_district']); + ?>
- where(['!=', 'region_name', ''])->all(), 'id_region', 'region_name'), ['prompt' => 'Выберите тип магазина', 'class' => 'form-select']); ?> + where(['!=', 'region_name', ''])->all(), 'id_region', 'region_name'), + ['prompt' => 'Выберите тип магазина', 'class' => 'form-select', 'id' => 'store_type']); + ?> 'd-block mt-2 text-decoration-none']); ?>
- \yii_app\records\AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), ['prompt' => 'Выберите территориального управляющего', 'class' => 'form-select']); ?> + AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), + ['prompt' => 'Выберите территориального управляющего', 'class' => 'form-select', 'id' => 'territorial_manager']); + ?>
@@ -56,7 +79,10 @@ $this->params['breadcrumbs'][] = $this->title;
- \yii_app\records\AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name_full'), ['prompt' => 'Выберите кустового шеф флориста', 'class' => 'form-select']); ?> + \yii_app\records\AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name_full'), + ['prompt' => 'Выберите кустового шеф флориста', 'class' => 'form-select', 'id' => 'bush_chef_florist']); + ?>
@@ -64,7 +90,7 @@ $this->params['breadcrumbs'][] = $this->title;
- 'btn btn-primary w-100']); ?> + 'btn btn-primary w-100', 'id' => 'apply-button']); ?>
@@ -75,16 +101,11 @@ $this->params['breadcrumbs'][] = $this->title;
- 'Option 1', - '2' => 'Option 2', - '3' => 'Option 3', - '4' => 'Option 4', - ], [ + true, - 'size' => 10, // Количество отображаемых строк - 'class' => 'form-control', // Стиль для кнопки - 'id' => 'selectedValues', // ID для элемента + 'size' => 16, + 'class' => 'form-control', + 'id' => 'selected_store', ]) ?>
@@ -106,15 +127,15 @@ $this->params['breadcrumbs'][] = $this->title;
- \yii_app\records\AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), ['prompt' => 'Город', 'class' => 'form-select']); ?> + 'Город', 'class' => 'form-select']); ?>
- \yii_app\records\AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), ['prompt' => 'Город', 'class' => 'form-select']); ?> + 'Город', 'class' => 'form-select']); ?>
- \yii_app\records\AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), ['prompt' => 'Город', 'class' => 'form-select']); ?> + 'Город', 'class' => 'form-select']); ?>
@@ -124,7 +145,7 @@ $this->params['breadcrumbs'][] = $this->title;
- \yii_app\records\AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), ['prompt' => 'Город', 'class' => 'form-select']); ?> + 'Город', 'class' => 'form-select']); ?>
@@ -134,7 +155,7 @@ $this->params['breadcrumbs'][] = $this->title;
- \yii_app\records\AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), ['prompt' => 'Город', 'class' => 'form-select']); ?> + 'Город', 'class' => 'form-select']); ?>
@@ -142,22 +163,21 @@ $this->params['breadcrumbs'][] = $this->title;
'form-label']); ?> - \yii_app\records\AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), ['prompt' => 'Город', 'class' => 'form-select']); ?> + 'Город', 'class' => 'form-select']); ?> 'form-label']); ?> - \yii_app\records\AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), ['prompt' => 'Город', 'class' => 'form-select']); ?> + 'Город', 'class' => 'form-select']); ?> 'form-label']); ?> - \yii_app\records\AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), ['prompt' => 'Город', 'class' => 'form-select']); ?> + 'Город', 'class' => 'form-select']); ?> 'form-label']); ?> - \yii_app\records\AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), ['prompt' => 'Город', 'class' => 'form-select']); ?> + 'Город', 'class' => 'form-select']); ?>
-
' + value + ''; + }); + $('#selectedValues').html(options); + } + }, + error: function (xhr, status, error) { + console.error("Ошибка AJAX: " + error); + } + }); + } + + $('#address_city, #address_region, #address_district, #store_type, #territorial_manager, #bush_chef_florist').on('change', function () { + sendData(); + }); + + $('#apply-button').on('click', function () { + sendData(); + }); + + function sendData() { + var selectedValues = $('#selectedValues').val(); + + if (!selectedValues || selectedValues.length === 0) { + return; + } + + $.ajax({ + url: 'city-store-params/get-data', + type: 'GET', + data: { selectedValues: selectedValues }, + success: function (response) { + if (response.error) { + alert(response.error); + return; + } + + if (response.store_types) { + var storeTypeOptions = ''; + $.each(response.store_types, function (key, value) { + storeTypeOptions += ''; + }); + $('#store_type').html(storeTypeOptions); + } + + if (response.cities) { + var cityOptions = ''; + $.each(response.cities, function (key, value) { + cityOptions += ''; + }); + $('#city').html(cityOptions); + } + + if (response.territorial_managers) { + var territorialManagerOptions = ''; + $.each(response.territorial_managers, function (key, value) { + territorialManagerOptions += ''; + }); + $('#territorial_manager').html(territorialManagerOptions); + } + }, + error: function (xhr, status, error) { + console.error("Ошибка AJAX: " + error); + } + }); + } + + $('#selected-store').on('change', function () { + sendData(); + }); +}); -- 2.39.5