From 160df6e5dc3cb1f0d2ba193601bad1dafe85f552 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Thu, 12 Dec 2024 10:16:27 +0300 Subject: [PATCH] [ERP-250] users message management ui --- ...age_management_add_columns_hold_active.php | 44 ++++ erp24/records/UsersMessageManagement.php | 31 ++- .../views/users-message-management/index.php | 207 +++++++++++++----- .../web/js/users-message-management/index.js | 28 +++ 4 files changed, 247 insertions(+), 63 deletions(-) create mode 100755 erp24/migrations/m241211_141619_alter_table_users_message_management_add_columns_hold_active.php create mode 100644 erp24/web/js/users-message-management/index.js diff --git a/erp24/migrations/m241211_141619_alter_table_users_message_management_add_columns_hold_active.php b/erp24/migrations/m241211_141619_alter_table_users_message_management_add_columns_hold_active.php new file mode 100755 index 00000000..eb05b670 --- /dev/null +++ b/erp24/migrations/m241211_141619_alter_table_users_message_management_add_columns_hold_active.php @@ -0,0 +1,44 @@ +addColumn(self::TABLE_NAME, 'hold', $this->integer()->notNull()->defaultValue(0)->comment('HOLD клиентов')); + $this->addColumn(self::TABLE_NAME, 'hold_active', $this->tinyInteger()->notNull()->defaultValue(0) + ->comment('0 - поле деактивировано, 1 - поле активировано')); + $this->addColumn(self::TABLE_NAME, 'day_before_step1_active', $this->tinyInteger()->notNull() + ->defaultValue(0)->comment('0 - поле деактивировано, 1 - поле активировано')); + $this->addColumn(self::TABLE_NAME, 'day_before_step2_active', $this->tinyInteger()->notNull() + ->defaultValue(0)->comment('0 - поле деактивировано, 1 - поле активировано')); + $this->addColumn(self::TABLE_NAME, 'day_before_step3_active', $this->tinyInteger()->notNull() + ->defaultValue(0)->comment('0 - поле деактивировано, 1 - поле активировано')); + $this->addColumn(self::TABLE_NAME, 'active', $this->tinyInteger()->notNull() + ->defaultValue(0)->comment('0 - поле деактивировано, 1 - поле активировано')); + $this->addColumn(self::TABLE_NAME, 'date_end', $this->dateTime()->null()->comment('Дата и время завершения события')); + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + $this->dropColumn(self::TABLE_NAME, 'date_end'); + $this->dropColumn(self::TABLE_NAME, 'active'); + $this->dropColumn(self::TABLE_NAME, 'day_before_step3_active'); + $this->dropColumn(self::TABLE_NAME, 'day_before_step2_active'); + $this->dropColumn(self::TABLE_NAME, 'day_before_step1_active'); + $this->dropColumn(self::TABLE_NAME, 'hold_active'); + $this->dropColumn(self::TABLE_NAME, 'hold'); + } +} diff --git a/erp24/records/UsersMessageManagement.php b/erp24/records/UsersMessageManagement.php index 88c99c0c..fa4ad87b 100644 --- a/erp24/records/UsersMessageManagement.php +++ b/erp24/records/UsersMessageManagement.php @@ -23,6 +23,12 @@ use Yii; * @property int $created_by ID создателя записи * @property string $updated_at Дата обновления * @property int $updated_by ID обновления записи + * @property int $hold_active 0 - поле деактивировано, 1 - поле активировано + * @property int $day_before_step1_active 0 - поле деактивировано, 1 - поле активировано + * @property int $day_before_step2_active 0 - поле деактивировано, 1 - поле активировано + * @property int $day_before_step3_active 0 - поле деактивировано, 1 - поле активировано + * @property int $active 0 - поле деактивировано, 1 - поле активировано + * @property string|null $date_end Дата и время завершения события */ class UsersMessageManagement extends \yii\db\ActiveRecord { @@ -42,10 +48,12 @@ class UsersMessageManagement extends \yii\db\ActiveRecord return [ [['bonus', 'day_before_step1', 'day_before_step2', 'day_before_step3', 'date_start', 'offer_1', 'offer_2', 'offer_whatsapp', 'offer_text', 'date_last_scenario', 'created_at', 'created_by', 'updated_at', 'updated_by'], 'required'], [['bonus'], 'number'], - [['day_before_step1', 'day_before_step2', 'day_before_step3', 'created_by', 'updated_by'], 'default', 'value' => null], - [['day_before_step1', 'day_before_step2', 'day_before_step3', 'created_by', 'updated_by'], 'integer'], - [['date_start', 'date_last_scenario', 'created_at', 'updated_at'], 'safe'], - [['offer_1', 'offer_2', 'offer_3', 'offer_whatsapp', 'offer_text'], 'string'], + [['day_before_step1', 'day_before_step2', 'day_before_step3', 'created_by', 'updated_by', + 'hold', 'hold_active', 'day_before_step1_active', 'day_before_step2_active', 'day_before_step3_active', 'active'], 'default', 'value' => null], + [['day_before_step1', 'day_before_step2', 'day_before_step3', 'created_by', 'updated_by', + 'hold', 'hold_active', 'day_before_step1_active', 'day_before_step2_active', 'day_before_step3_active', 'active'], 'integer'], + [['date_start', 'date_last_scenario', 'created_at', 'updated_at', 'date_end'], 'safe'], + [['offer_1', 'offer_2', 'offer_3', 'offer_whatsapp', 'offer_text', 'date_end'], 'string'], ]; } @@ -61,16 +69,23 @@ class UsersMessageManagement extends \yii\db\ActiveRecord 'day_before_step2' => 'Дней до второго этапа', 'day_before_step3' => 'Дней до третьего этапа', 'date_start' => 'Дата и время старта', - 'offer_1' => 'Оффер чатбот 1', - 'offer_2' => 'Оффер чатбот 2', + 'date_end' => 'Дата и время окончания', + 'offer_1' => 'Первое сообщение в чатбот', + 'offer_2' => 'Второе сообщение в чатбот', 'offer_3' => 'Оффер чатбот 3', - 'offer_whatsapp' => 'Оффер Whatsapp', - 'offer_text' => 'Текст таргета', + 'offer_whatsapp' => 'Whatsapp', + 'offer_text' => 'Таргет', 'date_last_scenario' => 'Дата последнего сценария', 'created_at' => 'Created At', 'created_by' => 'Created By', 'updated_at' => 'Updated At', 'updated_by' => 'Updated By', + 'hold' => 'Hold', + 'hold_active' => 'Hold Active', + 'day_before_step1_active' => 'Day Before Step1 Active', + 'day_before_step2_active' => 'Day Before Step2 Active', + 'day_before_step3_active' => 'Day Before Step3 Active', + 'active' => 'Active', ]; } } diff --git a/erp24/views/users-message-management/index.php b/erp24/views/users-message-management/index.php index 690d9f09..41471dca 100644 --- a/erp24/views/users-message-management/index.php +++ b/erp24/views/users-message-management/index.php @@ -9,6 +9,8 @@ use yii_app\records\UsersMessageManagement; /* @var $model UsersMessageManagement */ +$this->registerJsFile('/js/users-message-management/index.js', ['position' => \yii\web\View::POS_END]); + ?>
@@ -17,64 +19,159 @@ use yii_app\records\UsersMessageManagement; -
-
- field($model, 'bonus')->textInput(['type' => 'number', 'step' => 0.01]) ?> -
-
- field($model, 'date_start')->widget(DateTimePicker::class, [ - 'language' => 'ru', - 'template' => '{input}', - 'clientOptions' => [ - 'autoclose' => true, - 'format' => 'Y-m-d H:i:s', - 'todayBtn' => true - ], - ]) ?> -
-
-
-
- field($model, 'day_before_step1')->textInput(['type' => 'number', 'step' => 0.01]) ?> -
-
- field($model, 'day_before_step2')->textInput(['type' => 'number', 'step' => 0.01]) ?> -
-
- field($model, 'day_before_step3')->textInput(['type' => 'number', 'step' => 0.01]) ?> -
-
-
-
- field($model, 'offer_1')->textarea(['row' => 6]) ?> -
-
- field($model, 'offer_2')->textarea(['row' => 6]) ?> -
-
- field($model, 'offer_3')->textarea(['row' => 6]) ?> -
-
-
-
- field($model, 'offer_whatsapp')->textarea(['row' => 6]) ?> -
-
- field($model, 'offer_text')->textarea(['row' => 6]) ?> -
-
- field($model, 'date_last_scenario')->widget(DateTimePicker::class, [ - 'language' => 'ru', - 'template' => '{input}', - 'clientOptions' => [ - 'autoclose' => true, - 'format' => 'Y-m-d H:i:s', - 'todayBtn' => true - ], - ]) ?> + + +
+
+
+
+
+ Время начала +
+
+ field($model, 'date_start')->widget(DateTimePicker::class, [ + 'language' => 'ru', + 'template' => '{input}', + 'clientOptions' => [ + 'autoclose' => true, + 'format' => 'Y-m-d H:i:s', + 'todayBtn' => true + ], + ])->label(false) ?> +
+
+
+
+ Время конца +
+
+ field($model, 'date_end')->widget(DateTimePicker::class, [ + 'language' => 'ru', + 'template' => '{input}', + 'clientOptions' => [ + 'autoclose' => true, + 'format' => 'Y-m-d H:i:s', + 'todayBtn' => true + ], + ])->label(false) ?> +
+
+
+
+ Количество бонусов +
+
+ field($model, 'bonus')->textInput(['type' => 'number'])->label(false) ?> +
+
+
+
+ HOLD клиентов +
+
+
+ hold_active ? ['type' => 'number'] : ['type' => 'number', 'readonly' => true]; ?> + field($model, 'hold')->textInput($attr)->label(false) ?> +
+
+ field($model, 'hold_active')->checkbox(['unchecked' => false, 'onchange' + => 'setReadonly("#usersmessagemanagement-hold", this.checked);'], false)->label(false) ?> +
+
+
+
+
+ Первый этап +
+
+
+ day_before_step1_active ? ['type' => 'number'] : ['type' => 'number', 'readonly' => true]; ?> + field($model, 'day_before_step1')->textInput($attr)->label(false) ?> +
+
+ field($model, 'day_before_step1_active')->checkbox(['unchecked' => false, 'onchange' + => 'setReadonly("#usersmessagemanagement-day_before_step1", this.checked);'], false)->label(false) ?> +
+
+
+
+
+ Второй этап +
+
+
+ day_before_step2_active ? ['type' => 'number'] : ['type' => 'number', 'readonly' => true]; ?> + field($model, 'day_before_step2')->textInput($attr)->label(false) ?> +
+
+ field($model, 'day_before_step2_active')->checkbox(['unchecked' => false, 'onchange' + => 'setReadonly("#usersmessagemanagement-day_before_step2", this.checked);'], false)->label(false) ?> +
+
+
+
+
+ Третий этап +
+
+
+ day_before_step3_active ? ['type' => 'number'] : ['type' => 'number', 'readonly' => true]; ?> + field($model, 'day_before_step3')->textInput($attr)->label(false) ?> +
+
+ field($model, 'day_before_step3_active')->checkbox(['unchecked' => false, 'onchange' + => 'setReadonly("#usersmessagemanagement-day_before_step3", this.checked);'], false)->label(false) ?> +
+
+
+
+
+ Активность рассылки +
+
+
+ field($model, 'active')->checkbox(['unchecked' => false], false)->label(false) ?> +
+
+
+
+
+
+
+ field($model, 'offer_1')->textarea(['row' => 6]) ?> +
+
+ field($model, 'offer_2')->textarea(['row' => 6]) ?> +
+
+
+
+ field($model, 'offer_whatsapp')->textarea(['row' => 6]) ?> +
+
+ field($model, 'offer_text')->textarea(['row' => 6]) ?> +
+
+
+
+ вызгрузки +
+ + +
'btn btn-success']) ?>
diff --git a/erp24/web/js/users-message-management/index.js b/erp24/web/js/users-message-management/index.js new file mode 100644 index 00000000..1b3d1ce1 --- /dev/null +++ b/erp24/web/js/users-message-management/index.js @@ -0,0 +1,28 @@ +/* jshint esversion: 6 */ + +const tabs = ['mainTab', 'messageTab', 'unloadingTab']; + +function showTab(tabName) { + $.each(tabs, function() { + if (this == tabName) { + $('#' + this).show(); + $('#' + this + 'Anchor').addClass('active'); + } else { + $('#' + this).hide(); + $('#' + this + 'Anchor').removeClass('active'); + } + }); +} + +function setReadonly(id, checked) { + const inp = document.querySelector(id); + if (checked) { + inp.removeAttribute("readonly"); + } else { + inp.setAttribute("readonly", true); + } +} + +$(document).ready(() => { + showTab('mainTab'); +}) -- 2.39.5