From: marina Date: Wed, 22 Jan 2025 06:44:50 +0000 (+0300) Subject: ERP-282 Нужно сделать интерфейс настройки магазина X-Git-Tag: 1.7~35^2~38 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=43c9ebb6bffb2c3ea58fd38c5053f2e301b72808;p=erp24_rep%2Fyii-erp24%2F.git ERP-282 Нужно сделать интерфейс настройки магазина --- 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(); + }); +});