From: vladfo Date: Tue, 8 Oct 2024 09:25:26 +0000 (+0300) Subject: Изменения в форме созданипя магазина X-Git-Tag: 1.6~30^2~17 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=d30cf974049f2b44e0b3368710e3e78ee1dce1ae;p=erp24_rep%2Fyii-erp24%2F.git Изменения в форме созданипя магазина --- diff --git a/erp24/controllers/CityStoreController.php b/erp24/controllers/CityStoreController.php index a9edbe16..5ac4bdc8 100644 --- a/erp24/controllers/CityStoreController.php +++ b/erp24/controllers/CityStoreController.php @@ -3,11 +3,17 @@ namespace app\controllers; use Yii; +use yii\db\Query; +use yii\helpers\ArrayHelper; +use yii_app\records\Admin; +use yii_app\records\City; use yii_app\records\CityStore; use yii_app\records\CityStoreSearch; use yii\web\Controller; use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; +use yii_app\records\Cluster; +use yii_app\records\Firms; /** * CityStoreController implements the CRUD actions for CityStore model. @@ -83,6 +89,13 @@ class CityStoreController extends Controller { $model = new CityStore(); + // Получаем данные для формы + $cities = ArrayHelper::map(City::find()->select(['city_name_ru', 'id_city'])->asArray()->all(), 'id_city', 'city_name_ru'); + $firms = ArrayHelper::map(Firms::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name'); + $clusters = ArrayHelper::map(Cluster::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name'); + $administrators = ArrayHelper::map(Admin::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name'); + $firmsGroups = ArrayHelper::map((new Query())->select(['id', 'name'])->from('firms_group')->all(), 'id', 'name'); + if ($this->request->isPost) { if ($model->load($this->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); @@ -93,6 +106,11 @@ class CityStoreController extends Controller return $this->render('/city_store/create', [ 'model' => $model, + 'cities' => $cities, + 'firms' => $firms, + 'clusters' => $clusters, + 'administrators' => $administrators, + 'firmsGroups' => $firmsGroups, ]); } @@ -107,12 +125,24 @@ class CityStoreController extends Controller { $model = $this->findModel($id); + // Получаем данные для формы + $cities = ArrayHelper::map(City::find()->select(['city_name_ru', 'id_city'])->asArray()->all(), 'id_city', 'city_name_ru'); + $firms = ArrayHelper::map(Firms::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name'); + $clusters = ArrayHelper::map(Cluster::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name'); + $administrators = ArrayHelper::map(Admin::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name'); + $firmsGroups = ArrayHelper::map((new Query())->select(['id', 'name'])->from('firms_group')->all(), 'id', 'name'); + if ($this->request->isPost && $model->load($this->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } return $this->render('/city_store/update', [ 'model' => $model, + 'cities' => $cities, + 'firms' => $firms, + 'clusters' => $clusters, + 'administrators' => $administrators, + 'firmsGroups' => $firmsGroups, ]); } diff --git a/erp24/records/CityStore.php b/erp24/records/CityStore.php index 8bfbc4eb..3e32d5b0 100755 --- a/erp24/records/CityStore.php +++ b/erp24/records/CityStore.php @@ -174,6 +174,18 @@ class CityStore extends ActiveRecord [['open_date', 'gps'], 'string', 'max' => 100], ]; } + public function beforeValidate() + { + // Обрабатываем все текстовые поля и заменяем пустые значения на пробел + foreach ($this->attributes as $attribute => $value) { + if (is_string($value) && trim($value) === '') { + $this->$attribute = ' '; + } + } + + return parent::beforeValidate(); + } + /** * {@inheritdoc} diff --git a/erp24/views/city_store/_form.php b/erp24/views/city_store/_form.php index dd991e58..a7889f52 100644 --- a/erp24/views/city_store/_form.php +++ b/erp24/views/city_store/_form.php @@ -1,96 +1,186 @@ registerJsFile('/js/city-store/index.js', ['position' => \yii\web\View::POS_END]); + + ?> -
+ +
- field($model, 'f_id')->textInput() ?> + field($model, 'f_id') + ->label('FloraPointID магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'FloraPointID магазина'])) + ->widget(Select2::classname(), [ + 'data' => $firms, + 'options' => ['placeholder' => 'Выберите ID'], + 'pluginOptions' => ['allowClear' => true], + ]) ?> + + field($model, 'firma_id') + ->label('ID привязанного к магазину юрлица ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'ID привязанного к магазину юрлица'])) + ->widget(Select2::class, [ + 'data' => $firms, + 'options' => ['placeholder' => 'Выберите юрлицо'], + 'pluginOptions' => ['allowClear' => true], + ]) ?> - field($model, 'firma_id')->textInput() ?> + field($model, 'firm_group_id') + ->label('Firm group ID' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Группа привязанного к магазину юрлица???'])) + ->widget(Select2::class, [ + 'data' => $firmsGroups, + 'options' => ['placeholder' => 'Выберите группу'], + 'pluginOptions' => ['allowClear' => true], + ]) ?> - field($model, 'firm_group_id')->textInput() ?> + field($model, 'firma_group_id') + ->label('Firma group ID ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Группа привязанного к магазину юрлица???'])) + ->widget(Select2::class, [ + 'data' => $firmsGroups, + 'options' => ['placeholder' => 'Выберите группу'], + 'pluginOptions' => ['allowClear' => true], + ]) ?> - field($model, 'firma_group_id')->textInput() ?> + field($model, 'name')->textInput(['maxlength' => true, 'value' => '', 'id' => 'name-field']) + ->label('Наименование магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Наименование магазина. Обязательно'])) ?> - field($model, 'name')->textInput(['maxlength' => true]) ?> + field($model, 'name_full')->textInput(['maxlength' => true, 'value' => '', 'id' => 'name-full-field']) + ->label('Полное наименование ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Наименование магазина. Обязательно'])) ?> - field($model, 'name_full')->textInput(['maxlength' => true]) ?> + field($model, 'city_id')->label('City ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Выберите город из списка']))->widget(Select2::class, [ + 'data' => $cities, + 'options' => ['placeholder' => 'Выберите город'], + 'pluginOptions' => [ + 'allowClear' => true, + ], + ]) ?> - field($model, 'city_id')->textInput() ?> + field($model, 'setka_id')->textInput(['value' => 1]) + ->label('ID Сетки ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'ID Сетки'])) ?> - field($model, 'setka_id')->textInput() ?> + field($model, 'posit')->textInput(['value' => 0]) + ->label('Позиция магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Позиция магазина'])) ?> - field($model, 'posit')->textInput() ?> + field($model, 'square_store')->textInput(['value' => null]) + ->label('Площадь магазина (кв.м) ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Площадь магазина (кв.м)'])) ?> - field($model, 'order_1c')->textInput() ?> + field($model, 'order_1c')->textInput(['value' => 21]) + ->label('Порядок в 1С ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Порядок в 1С???'])) ?> - field($model, 'url')->textInput(['maxlength' => true]) ?> + field($model, 'url')->textInput(['maxlength' => true, 'value' => '-']) + ->label('URL магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'URL магазина'])) ?> - field($model, 'adress')->textarea(['rows' => 6]) ?> + field($model, 'adress')->textarea(['rows' => 2, 'value' => '-', 'id' => 'adress-field']) + ->label('Адрес магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Адрес магазина - ул. Улица д.1'])) ?> - field($model, 'adress_amo')->textInput(['maxlength' => true]) ?> + field($model, 'adress_amo')->textInput(['maxlength' => true, 'value' => '-', 'id' => 'adress-amo-field']) + ->label('Адрес для AmoCRM ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Адрес магазина для амо - самовывоз'])) ?> - field($model, 'adress_sm')->textInput(['maxlength' => true]) ?> + field($model, 'adress_sm')->textInput(['maxlength' => true, 'value' => '-', 'id' => 'adress-sm-field']) + ->label('Короткий адрес магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Короткий адрес магазина'])) ?> + field($model, '2gis')->textInput(['maxlength' => true, 'value' => '-']) + ->label('Ссылка на 2ГИС ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Ссылка на 2ГИС'])) ?> + field($model, 'yamap')->textInput(['maxlength' => true, 'value' => '-']) + ->label('Ссылка на Яндекс.Карты ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Ссылка на Яндекс.Карты'])) ?> - field($model, '2gis')->textInput(['maxlength' => true]) ?> + field($model, 'googlemap')->textarea(['rows' => 2, 'value' => '-']) + ->label('Ссылка на Google Maps ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Ссылка на Google Maps'])) ?> - field($model, 'yamap')->textInput(['maxlength' => true]) ?> + field($model, 'mapiframe')->textarea(['rows' => 4, 'value' => '-']) + ->label('Карта магазина в iframe ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Карта магазина в iframe'])) ?> - field($model, 'googlemap')->textarea(['rows' => 6]) ?> - field($model, 'mapiframe')->textarea(['rows' => 6]) ?> + field($model, 'seo_title')->textInput(['maxlength' => true, 'value' => '-']) + ->label('SEO заголовок ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'SEO заголовок'])) ?> - field($model, 'seo_title')->textInput(['maxlength' => true]) ?> + field($model, 'seo_description')->textarea(['rows' => 2, 'value' => '-']) + ->label('SEO описание ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'SEO описание'])) ?> - field($model, 'seo_description')->textarea(['rows' => 6]) ?> + field($model, 'content')->textarea(['rows' => 6, 'value' => '-']) + ->label('Содержимое - текст ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Содержимое - текст'])) ?> - field($model, 'content')->textarea(['rows' => 6]) ?> + field($model, 'email')->textInput(['maxlength' => true, 'value' => '-']) + ->label('Email магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Email магазина'])) ?> - field($model, 'email')->textInput(['maxlength' => true]) ?> + field($model, 'tg_chat_id')->textInput(['maxlength' => true, 'value' => '-']) + ->label('ID чата в Telegram ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'ID чата в Telegram'])) ?> - field($model, 'tg_chat_id')->textInput(['maxlength' => true]) ?> + field($model, 'h1')->textInput(['maxlength' => true, 'value' => '-']) + ->label('H1 шаблон для SEO ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'H1 шаблон для SEO'])) ?> - field($model, 'h1')->textInput(['maxlength' => true]) ?> + field($model, 'sprav_id')->textInput(['maxlength' => true, 'value' => '0']) + ->label('ID в справочнике ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'ID в справочнике'])) ?> - field($model, 'sprav_id')->textInput(['maxlength' => true]) ?> + field($model, 'images')->textarea(['rows' => 2, 'value' => '-']) + ->label('Изображения магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Изображения магазина'])) ?> - field($model, 'images')->textarea(['rows' => 6]) ?> + field($model, 'visible')->textInput(['value' => 1]) + ->label('Видимость магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Видимость магазина'])) ?> - field($model, 'visible')->textInput() ?> + field($model, 'image_sm')->textInput(['maxlength' => true, 'value' => '-']) + ->label('Путь к маленькой картинке ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Путь к маленькой картинке'])) ?> - field($model, 'image_sm')->textInput(['maxlength' => true]) ?> + field($model, 'image_big')->textInput(['maxlength' => true, 'value' => '-']) + ->label('Путь к большой картинке ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Путь к большой картинке'])) ?> - field($model, 'image_big')->textInput(['maxlength' => true]) ?> + field($model, 'image2_sm')->textInput(['maxlength' => true, 'value' => '-']) + ->label('Путь к маленькой картинке 2 ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Путь к маленькой картинке 2'])) ?> - field($model, 'image2_sm')->textInput(['maxlength' => true]) ?> + field($model, 'image2_big')->textInput(['maxlength' => true, 'value' => '-']) + ->label('Путь к большой картинке 2 ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Путь к большой картинке 2'])) ?> - field($model, 'image2_big')->textInput(['maxlength' => true]) ?> + field($model, 'type_id')->textInput(['value' => 1]) + ->label('Тип магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Тип магазина'])) ?> - field($model, 'type_id')->textInput() ?> + field($model, 'sale_plan_avg')->textInput(['value' => 0]) + ->label('Средний план продаж ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Средний план продаж'])) ?> - field($model, 'sale_plan_avg')->textInput() ?> + field($model, 'visitor_day_avg')->textInput(['value' => 0]) + ->label('Среднее количество посетителей в день ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Среднее количество посетителей в день'])) ?> - field($model, 'visitor_day_avg')->textInput() ?> + field($model, 'visitor_avg')->textInput(['value' => 0]) + ->label('Среднее количество посетителей ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Среднее количество посетителей'])) ?> - field($model, 'visitor_avg')->textInput() ?> + field($model, 'administrator_id') + ->label('ID администратора ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'ID администратора'])) + ->widget(Select2::class, [ + 'data' => $administrators, + 'options' => ['placeholder' => 'Выберите администратора'], + 'pluginOptions' => ['allowClear' => true], + ]) ?> - field($model, 'administrator_id')->textInput() ?> + field($model, 'cluster_id') + ->label('ID куста ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'ID куста'])) + ->widget(Select2::class, [ + 'data' => $clusters, + 'options' => ['placeholder' => 'Выберите куст'], + 'pluginOptions' => ['allowClear' => true], + ]) ?> - field($model, 'cluster_id')->dropDownList(range(1,5)) ?> + field($model, 'open_date')->textInput(['maxlength' => true, 'value' => '-']) + ->label('Дата открытия ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'Дата открытия'])) ?> - field($model, 'open_date')->textInput(['maxlength' => true]) ?> + field($model, 'gps')->textInput(['maxlength' => true, 'value' => '-']) + ->label('GPS координаты магазина ' . Html::tag('i', '', ['class' => 'fas fa-info-circle', 'data-toggle' => 'tooltip', 'title' => 'GPS координаты магазина в виде 56.275879,44.045422'])) ?> - field($model, 'gps')->textInput(['maxlength' => true]) ?>
'btn btn-success']) ?> @@ -98,4 +188,6 @@ use yii\widgets\ActiveForm; -
+ + +
\ No newline at end of file diff --git a/erp24/views/city_store/create.php b/erp24/views/city_store/create.php index bd7a8e8d..8fcb8cea 100644 --- a/erp24/views/city_store/create.php +++ b/erp24/views/city_store/create.php @@ -4,8 +4,13 @@ use yii\helpers\Html; /** @var yii\web\View $this */ /** @var yii_app\records\CityStore $model */ +/** @var array $cities */ +/** @var array $firms */ +/** @var array $clusters */ +/** @var array $administrators */ +/** @var array $firmsGroups */ -$this->title = 'Create City Store'; +$this->title = 'Создание магазина'; $this->params['breadcrumbs'][] = ['label' => 'City Stores', 'url' => ['index']]; $this->params['breadcrumbs'][] = $this->title; ?> @@ -15,6 +20,11 @@ $this->params['breadcrumbs'][] = $this->title; render('_form', [ 'model' => $model, + 'cities' => $cities, + 'firms' => $firms, + 'clusters' => $clusters, + 'administrators' => $administrators, + 'firmsGroups' => $firmsGroups, ]) ?>
diff --git a/erp24/views/city_store/index.php b/erp24/views/city_store/index.php index 2ae85d7e..96800236 100644 --- a/erp24/views/city_store/index.php +++ b/erp24/views/city_store/index.php @@ -16,7 +16,7 @@ $this->params['breadcrumbs'][] = $this->title; $this->registerJsFile('/js/city-store/index.js', ['position' => \yii\web\View::POS_END]); ?> -
+

title) ?>

diff --git a/erp24/views/city_store/update.php b/erp24/views/city_store/update.php index 8fac7735..a75aab3e 100644 --- a/erp24/views/city_store/update.php +++ b/erp24/views/city_store/update.php @@ -4,6 +4,11 @@ use yii\helpers\Html; /** @var yii\web\View $this */ /** @var yii_app\records\CityStore $model */ +/** @var array $cities */ +/** @var array $firms */ +/** @var array $clusters */ +/** @var array $administrators */ +/** @var array $firmsGroups */ $this->title = 'Редактирование магазина: ' . $model->name; $this->params['breadcrumbs'][] = ['label' => 'City Stores', 'url' => ['index']]; @@ -16,6 +21,11 @@ $this->params['breadcrumbs'][] = 'Update'; render('_form', [ 'model' => $model, + 'cities' => $cities, + 'firms' => $firms, + 'clusters' => $clusters, + 'administrators' => $administrators, + 'firmsGroups' => $firmsGroups, ]) ?>
diff --git a/erp24/web/js/city-store/index.js b/erp24/web/js/city-store/index.js index 7fe1616b..2ececc0b 100644 --- a/erp24/web/js/city-store/index.js +++ b/erp24/web/js/city-store/index.js @@ -2,6 +2,13 @@ const param30 = $('meta[name=csrf-param]').attr("content"); const token30 = $('meta[name=csrf-token]').attr("content"); +$('#name-field').on('input', function() { + var value = $(this).val(); + $('#name-full-field').val(value); + $('#adress-field').val(value); + $('#adress-amo-field').val(value); + $('#adress-sm-field').val(value); +}); function setTgDialog(storeId, tg_chat_id) { const $mainModal = $('#mainModal');