Доработка панели модератора

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2021-09-14 08:06:29 +10:00
parent 3cb2aa1a15
commit a36f62e510
4 changed files with 261 additions and 42 deletions

View File

@ -58,8 +58,9 @@ class ProfileController extends Controller
'actions' => ['panel', 'panel-notification-write'],
'matchCallback' => function ($rule, $action): bool {
if (
yii::$app->user->identity->type === 'administrator'
|| yii::$app->user->identity->type === 'moderator'
!yii::$app->user->isGuest
&& (yii::$app->user->identity->type === 'administrator'
|| yii::$app->user->identity->type === 'moderator')
) {
return true;
}

View File

@ -149,6 +149,24 @@ main {
transition: 0s;
}
.button_red_softer {
color: #eee;
background-color: #ce2c2c;
transition: 0s;
}
.button_red_softer:hover {
color: #fff;
background-color: #da3636;
transition: 0s;
}
.button_red_softer:active {
color: #ddd;
background-color: #b82d2d;
transition: 0s;
}
.button_white {
background-color: #fff;
}

View File

@ -25,8 +25,11 @@
background-color: #f7f6f9;
}
#page_profile [id^=profile_panel_]>.profile_panel_content #profile_panel_input_suppliers_requests .panel_supplier_request {
height: 200px;
#page_profile [id^=profile_panel_]>.profile_panel_content #profile_panel_input_suppliers_requests .panel_supplier_request .profile_panel_input_suppliers_requests_block_textarea {
min-height: 100px;
display: inline-block;
height: 100%;
}
}
/* #page_profile [id^=profile_panel_]>.profile_panel_content>div>.header_blue~.row:nth-child(2n + 1) {

View File

@ -102,6 +102,9 @@ function page_profile_panel_input_suppliers_requests_init(wrap = 'profile_panel_
if (data.suppliers !== undefined && data.suppliers !== null) {
// Найдены данные поставщиков
// Удаление данных в оболочке
wrap.innerHTML = null;
for (let html of page_profile_panel_input_suppliers_requests_generate(data.suppliers)) {
// Перебор сгенерированных HTML-элементов
@ -136,12 +139,16 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
// Инициализация контейнера
let container = document.createElement('div');
container.setAttribute('id', 'profile_panel_input_suppliers_requests_block_' + account._key);
container.setAttribute('class', i < suppliers.length ? 'mb-3 px-3 py-1 row' : 'px-3 py-1 row');
container.setAttribute('class', i < suppliers.length ? 'mb-3 px-3 py-1 row panel_supplier_request' : 'px-3 py-1 row panel_supplier_request');
// Инициализация первой строки
let row_1 = document.createElement('div');
row_1.setAttribute('class', 'row px-0');
// Инициализация колонки с метаданными аккаунта
let block_metadata = document.createElement('div');
block_metadata.setAttribute('id', 'profile_panel_input_suppliers_requests_block_metadata_' + account._key);
block_metadata.setAttribute('class', 'col-4 pl-0 d-flex flex-column');
block_metadata.setAttribute('class', 'col-4 pr-0 d-flex flex-column');
// Инициализация оболочки идентификатора аккаунта
let wrap_id = document.createElement('p');
@ -157,9 +164,13 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
value_id.setAttribute('class', 'ml-auto');
value_id.innerText = account._key;
// Инициализация разделителя для даты
let metadata_date_divider = document.createElement('div');
metadata_date_divider.setAttribute('class', 'dropdown-divider mt-auto mx-2 mb-2');
// Инициализация оболочки времени регистрации
let wrap_regs = document.createElement('p');
wrap_regs.setAttribute('class', 'mt-auto mb-2 px-3 row');
wrap_regs.setAttribute('class', 'mt-1 mb-2 px-3 row');
// Инициализация ярлыка времени регистрации
let label_regs = document.createElement('b');
@ -173,7 +184,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
// Инициализация оболочки времени заявки
let wrap_supl = document.createElement('p');
wrap_supl.setAttribute('class', 'mt-0 mb-2 px-3 row');
wrap_supl.setAttribute('class', 'mt-0 mb-3 px-3 row');
// Инициализация ярлыка времени заявки
let label_supl = document.createElement('b');
@ -185,30 +196,52 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
value_supl.setAttribute('class', 'ml-auto');
value_supl.innerText = moment.unix(account.date.supl).locale('ru-ru').format('DD.MM.YYYY');
// Инициализация кнопки сохранения
let button_save = document.createElement('a');
button_save.setAttribute('class', 'btn form-control button_blue');
button_save.setAttribute('type', 'button');
button_save.setAttribute('role', 'button');
button_save.innerText = 'Сохранить';
// Инициализация кнопки подтверждения
let button_accept = document.createElement('a');
button_accept.setAttribute('class', 'mb-2 btn form-control button_blue');
button_accept.setAttribute('type', 'button');
button_accept.setAttribute('role', 'button');
button_accept.innerText = 'Подтвердить';
// Инициализация кнопки отклонения
let button_decline = document.createElement('a');
button_decline.setAttribute('class', 'btn form-control button_red_softer');
button_decline.setAttribute('type', 'button');
button_decline.setAttribute('role', 'button');
button_decline.innerText = 'Отклонить';
// Инициализация колонки с основными данными аккаунта
let block_info = document.createElement('div');
block_info.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_' + account._key);
block_info.setAttribute('class', 'col-4 d-flex flex-column');
block_info.setAttribute('class', 'col-4 pl-0 d-flex flex-column');
// Инициализация ярлыка "NAME"
let label_name = document.createElement('label');
label_name.setAttribute('class', 'control-label');
label_name.innerText = 'Имя';
label_name.innerText = 'Контактное лицо';
// Инициализация поля "NAME"
let input_name = document.createElement('input');
input_name.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_name_' + account._key);
input_name.setAttribute('class', 'form-control button_clean mb-3');
input_name.setAttribute('type', 'text');
input_name.setAttribute('placeholder', 'Иванов Иван Иванович');
input_name.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_name_edit(' + account._key + ', this);');
input_name.value = account.name;
input_name.value = account.name ?? '';
// Инициализация ярлыка "BOSS"
let label_boss = document.createElement('label');
label_boss.setAttribute('class', 'control-label');
label_boss.innerText = 'Директор';
// Инициализация поля "BOSS"
let input_boss = document.createElement('input');
input_boss.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_boss_' + account._key);
input_boss.setAttribute('class', 'form-control button_clean mb-3');
input_boss.setAttribute('type', 'text');
input_boss.setAttribute('placeholder', 'Иванов Иван Иванович');
input_boss.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_boss_edit(' + account._key + ', this);');
input_boss.value = account.boss ?? '';
// Инициализация ярлыка "SIMC" (телефон)
let label_simc = document.createElement('label');
@ -221,7 +254,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_simc.setAttribute('class', 'form-control button_clean mb-3');
input_simc.setAttribute('type', 'number');
input_simc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_simc_edit(' + account._key + ', this);');
input_simc.value = account.simc;
input_simc.value = account.simc ?? '';
// Инициализация ярлыка "MAIL"
let label_mail = document.createElement('label');
@ -231,15 +264,15 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
// Инициализация поля "MAIL"
let input_mail = document.createElement('input');
input_mail.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_mail_' + account._key);
input_mail.setAttribute('class', 'form-control button_clean');
input_mail.setAttribute('class', 'form-control button_clean mb-3');
input_mail.setAttribute('type', 'mail');
input_mail.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_mail_edit(' + account._key + ', this);');
input_mail.value = account.mail;
input_mail.value = account.mail ?? '';
// Инициализация колонки с вторичными данными аккаунта
let block_details = document.createElement('div');
block_details.setAttribute('id', 'profile_panel_input_suppliers_requests_block_details_' + account._key);
block_details.setAttribute('class', 'col-4 pr-0 d-flex flex-column');
block_details.setAttribute('class', 'col-4 d-flex flex-column');
// Инициализация ярлыка "INDX"
let label_indx = document.createElement('label');
@ -256,7 +289,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_indx.setAttribute('class', 'col form-control button_clean');
input_indx.setAttribute('type', 'text');
input_indx.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_indx_edit(' + account._key + ', this);');
input_indx.value = account.indx;
input_indx.value = account.indx ?? '';
// Инициализация кнопки "INDX"
let button_indx = document.createElement('a');
@ -280,7 +313,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_pswd.setAttribute('class', 'col form-control button_clean');
input_pswd.setAttribute('type', 'text');
input_pswd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_pswd_edit(' + account._key + ', this);');
input_pswd.value = account.pswd;
input_pswd.value = account.pswd ?? '';
// Инициализация кнопки "PSWD"
let button_pswd = document.createElement('a');
@ -300,42 +333,206 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
button_file.setAttribute('href', '/' + account._key + '/requests/supplier/' + account.date.supl + '/document');
button_file.innerHTML = 'Скачать';
// Компоновка элементов блока с основной информацией
wrap_id.appendChild(label_id);
wrap_id.appendChild(value_id);
block_metadata.appendChild(wrap_id);
wrap_regs.appendChild(label_regs);
wrap_regs.appendChild(value_regs);
block_metadata.appendChild(wrap_regs);
wrap_supl.appendChild(label_supl);
wrap_supl.appendChild(value_supl);
block_metadata.appendChild(wrap_supl);
block_metadata.appendChild(button_save);
// Инициализация ярлыка "TAXN"
let label_taxn = document.createElement('label');
label_taxn.setAttribute('class', 'control-label');
label_taxn.innerText = 'ИНН';
// Инициализация поля "TAXN"
let input_taxn = document.createElement('input');
input_taxn.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_taxn_' + account._key);
input_taxn.setAttribute('class', 'form-control button_clean mb-3');
input_taxn.setAttribute('type', 'text');
input_taxn.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_taxn_edit(' + account._key + ', this);');
input_taxn.value = account.taxn ?? '';
// Инициализация ярлыка "CNTG"
let label_cntg = document.createElement('label');
label_cntg.setAttribute('class', 'control-label');
label_cntg.innerText = 'КПП';
// Инициализация поля "CNTG"
let input_cntg = document.createElement('input');
input_cntg.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_cntg_' + account._key);
input_cntg.setAttribute('class', 'form-control button_clean mb-3');
input_cntg.setAttribute('type', 'text');
input_cntg.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_cntg_edit(' + account._key + ', this);');
input_cntg.value = account.cntg ?? '';
// Инициализация ярлыка "FADD"
let label_fadd = document.createElement('label');
label_fadd.setAttribute('class', 'control-label');
label_fadd.innerText = 'Фактический адрес';
// Инициализация поля "FADD"
let input_fadd = document.createElement('input');
input_fadd.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_fadd_' + account._key);
input_fadd.setAttribute('class', 'form-control button_clean mb-3');
input_fadd.setAttribute('type', 'text');
input_fadd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_fadd_edit(' + account._key + ', this);');
input_fadd.value = account.fadd ?? '';
// Инициализация ярлыка "LADD"
let label_ladd = document.createElement('label');
label_ladd.setAttribute('class', 'control-label');
label_ladd.innerText = 'Юридический адрес';
// Инициализация поля "LADD"
let input_ladd = document.createElement('input');
input_ladd.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_ladd_' + account._key);
input_ladd.setAttribute('class', 'form-control button_clean mb-3');
input_ladd.setAttribute('type', 'text');
input_ladd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_ladd_edit(' + account._key + ', this);');
input_ladd.value = account.ladd ?? '';
// Инициализация ярлыка "CHCK"
let label_chck = document.createElement('label');
label_chck.setAttribute('class', 'control-label');
label_chck.innerText = 'Расчетный адрес';
// Инициализация поля "CHCK"
let input_chck = document.createElement('input');
input_chck.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_chck_' + account._key);
input_chck.setAttribute('class', 'form-control button_clean mb-3');
input_chck.setAttribute('type', 'text');
input_chck.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_chck_edit(' + account._key + ', this);');
input_chck.value = account.chck ?? '';
// Инициализация ярлыка "CMPN"
let label_cmpn = document.createElement('label');
label_cmpn.setAttribute('class', 'control-label');
label_cmpn.innerText = 'Организация';
// Инициализация поля "CMPN"
let input_cmpn = document.createElement('input');
input_cmpn.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_cmpn_' + account._key);
input_cmpn.setAttribute('class', 'form-control button_clean mb-3');
input_cmpn.setAttribute('type', 'text');
input_cmpn.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_cmpn_edit(' + account._key + ', this);');
input_cmpn.value = account.cmpn ?? '';
// Инициализация ярлыка "CNTC"
let label_cntc = document.createElement('label');
label_cntc.setAttribute('class', 'control-label');
label_cntc.innerText = 'Контакты';
// Инициализация поля "CNTC"
let input_cntc = document.createElement('textarea');
input_cntc.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_cntc_' + account._key);
input_cntc.setAttribute('class', 'form-control button_clean profile_panel_input_suppliers_requests_block_textarea');
input_cntc.setAttribute('type', 'text');
input_cntc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_cntc_edit(' + account._key + ', this);');
input_cntc.value = account.cntc ?? '';
// Инициализация ярлыка "DESC"
let label_desc = document.createElement('label');
label_desc.setAttribute('class', 'control-label');
label_desc.innerText = 'Описание';
// Инициализация поля "DESC"
let textarea_desc = document.createElement('textarea');
textarea_desc.setAttribute('id', 'profile_panel_input_suppliers_requests_block_info_desc_' + account._key);
textarea_desc.setAttribute('class', 'form-control button_clean mb-3 profile_panel_input_suppliers_requests_block_textarea');
textarea_desc.setAttribute('type', 'text');
textarea_desc.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_desc_edit(' + account._key + ', this);');
textarea_desc.value = account.desc ?? '';
// Инициализация разделителя для геолокации
let metadata_geolocation_divider = document.createElement('div');
metadata_geolocation_divider.setAttribute('class', 'dropdown-divider mx-2 mb-2');
// Инициализация оболочки найденного по геолокации города
let wrap_city = document.createElement('p');
wrap_city.setAttribute('class', 'mt-1 mb-2 px-3 row');
// Инициализация ярлыка найденного по геолокации города
let label_city = document.createElement('b');
label_city.setAttribute('class', '');
label_city.innerText = 'Город:';
// Инициализация значения найденного по геолокации города
let value_city = document.createElement('span');
value_city.setAttribute('class', 'ml-auto');
value_city.innerText = account.city ?? 'Неизвестно';
// Компоновка элементов блока с основной информацией
block_info.appendChild(label_name);
block_info.appendChild(input_name);
block_info.appendChild(label_simc);
block_info.appendChild(input_simc);
block_info.appendChild(label_mail);
block_info.appendChild(input_mail);
// Компоновка элементов блока с вторичными данными
block_details.appendChild(label_indx);
block_info.appendChild(label_indx);
wrap_indx.appendChild(input_indx);
wrap_indx.appendChild(button_indx);
block_details.appendChild(wrap_indx);
block_details.appendChild(label_pswd);
block_info.appendChild(wrap_indx);
block_info.appendChild(label_pswd);
wrap_pswd.appendChild(input_pswd);
wrap_pswd.appendChild(button_pswd);
block_details.appendChild(wrap_pswd);
block_details.appendChild(label_file);
block_details.appendChild(button_file);
block_info.appendChild(wrap_pswd);
block_info.appendChild(label_desc);
block_info.appendChild(textarea_desc);
block_info.appendChild(label_file);
block_info.appendChild(button_file);
// Компоновка элементов блока с вторичными данными
block_details.appendChild(label_boss);
block_details.appendChild(input_boss);
block_details.appendChild(label_cmpn);
block_details.appendChild(input_cmpn);
block_details.appendChild(label_taxn);
block_details.appendChild(input_taxn);
block_details.appendChild(label_cntg);
block_details.appendChild(input_cntg);
block_details.appendChild(label_fadd);
block_details.appendChild(input_fadd);
block_details.appendChild(label_ladd);
block_details.appendChild(input_ladd);
block_details.appendChild(label_chck);
block_details.appendChild(input_chck);
block_details.appendChild(label_cntc);
block_details.appendChild(input_cntc);
// Компоновка элементов блока с технической информацией
wrap_id.appendChild(label_id);
wrap_id.appendChild(value_id);
block_metadata.appendChild(wrap_id);
block_metadata.appendChild(metadata_geolocation_divider);
wrap_city.appendChild(label_city);
wrap_city.appendChild(value_city);
block_metadata.appendChild(wrap_city);
block_metadata.appendChild(metadata_date_divider);
wrap_regs.appendChild(label_regs);
wrap_regs.appendChild(value_regs);
block_metadata.appendChild(wrap_regs);
wrap_supl.appendChild(label_supl);
wrap_supl.appendChild(value_supl);
block_metadata.appendChild(wrap_supl);
block_metadata.appendChild(button_accept);
block_metadata.appendChild(button_decline);
// Компоновка всех колонок
container.appendChild(block_metadata);
container.appendChild(block_info);
container.appendChild(block_details);
container.appendChild(block_metadata);
html.add(container);