Мелкие доработки

This commit is contained in:
root 2022-11-11 06:25:46 +00:00
parent b3f2ef72da
commit c41e5d4c1c
11 changed files with 81 additions and 28 deletions

View File

@ -18,10 +18,14 @@ class OfferController extends Controller
'access' => [
'class' => AccessControl::class,
'rules' => [
[
'allow' => true,
'actions' => ['index', 'suppliers'],
],
[
'allow' => true,
'roles' => ['@'],
'actions' => ['index', 'suppliers', 'accept', 'accept-suppliers']
'actions' => ['accept', 'accept-suppliers']
],
[
'allow' => false,

View File

@ -428,7 +428,6 @@ class Supply extends Product implements ProductInterface, OfferInterface
if (!file_exists($path))
if (!mkdir($path, 0775, true))
throw new Exception('Не удалось создать директорию', 500);
$this->file_excel->saveAs($path = "$path/" . $this->file_excel->baseName . '.' . $this->file_excel->extension);
// Инициализация инстанции файла
@ -585,8 +584,17 @@ class Supply extends Product implements ProductInterface, OfferInterface
// Запись артикула (каталожного номера) в буфер
$_row['catn'] = $_supply;
// Запись цены в буфер
$_row['cost'] = (float) preg_replace('/[^\d\.]+/', '', preg_replace('/\,+/', ' ', (string) ($row['Стоимость'] ?? $row['стоимость'] ?? $row['Цена'] ?? $row['цена'] ?? $row['Cost'] ?? $row['cost'] ?? $row['Price'] ?? $row['price']))) ?? 0;
$_row['prod'] = $prod;
// Запись производителя в буфер
$_row['prod'] = match($prod = ucwords(strtolower(preg_replace('/[^A-zА-я\s]/', ' ', $prod, 300)))) {
'Сatterpillar', 'Cat' => 'CAT',
default => $prod
};
// Запись аналогов в буфер
$_row['oemn'] = array_walk($analogs, 'trim');
// Инициализация буфера поставки

View File

@ -67,10 +67,10 @@ class Dellin extends Model
*
* @param int $from Идентификатор терминала Dellin
* @param int $to Идентификатор терминала Dellin
* @param int $weight Вес (г)
* @param int $x Ширина (cм)
* @param int $y Высота (cм)
* @param int $z Длинна (cм)
* @param int $weight Вес (кг)
* @param int $x Ширина (м)
* @param int $y Высота (м)
* @param int $z Длинна (м)
* @param int $amount Количество
* @param Account|int|null $account Аккаунт
*
@ -96,14 +96,6 @@ class Dellin extends Model
if (empty($z) || $z === 0) $z = 25;
if (empty($weight) || $weight === 0) $weight = 300;
// Конвертация из сантиметров в метры
$x /= 100;
$y /= 100;
$z /= 100;
// Конвертация из граммов в килограммы
$weight /= 1000;
// Вычисление самой крупной стороны, так как ДеловыеЛинии имеют ограничения на все три поля и у длинны оно больше всех
if ($x > $z && $x > $y) {
// "X" больше всех

View File

@ -70,7 +70,7 @@ use app\models\AccountForm;
<?= $form->field($model, 'mail', ['enableLabel' => false, 'options' => ['class' => 'mb-2'], 'inputOptions' => ['class' => 'form-control button_clean'], 'errorOptions' => ['class' => 'help-block help-block-error px-2 small']])->textInput(['autofocus' => true, 'placeholder' => $model->getAttributeLabel('mail')]) ?>
<?= $form->field($model, 'pswd', ['enableLabel' => false, 'inputOptions' => ['class' => 'form-control button_clean'], 'errorOptions' => ['class' => 'help-block help-block-error px-2 small']])->passwordInput(['placeholder' => $model->getAttributeLabel('pswd')]) ?>
<div class="d-flex mb-2 mt-4">
<div class="d-flex mb-2 mt-3">
<?= Html::submitButton('Войти', ['name' => 'submitAuthentication', 'onclick' => 'authentication(this.parentElement.parentElement, \'' . $target . '\');', 'class' => 'flex-grow-1 mr-2 btn btn-primary button_clean']) ?>
<?= $form->field($model, 'auto', ['checkboxTemplate' => '<div class="checkbox button_clean">{beginLabel}' .
Html::submitButton('{labelTitle}', ['name' => 'submit', 'data-toggle' => 'button', 'class' => 'w-100 btn btn-primary button_clean', 'aria-pressed' => 'false', 'onclick' => 'return authentication_auto_button_status_switch(this);']) .

View File

@ -1,3 +1,10 @@
<?php
declare(strict_types=1);
use yii;
?>
<link href="/css/pages/offer.css" rel="stylesheet">
<div id="page_offer" class="container mb-auto py-3">
@ -42,8 +49,10 @@
</div>
</div>
<?php if (!yii::$app->user->isGuest): ?>
<div class="row mb-0 justify-content-center">
<a class="col-auto text-center text-white btn button_blue button_clean" href="/offer/accept">Принять</a>
</div>
<?php endif ?>
</article>
</div>

View File

@ -1,3 +1,10 @@
<?php
declare(strict_types=1);
use yii;
?>
<link href="/css/pages/offer.css" rel="stylesheet">
<div id="page_offer" class="container mb-auto py-3">
@ -54,8 +61,10 @@
</div>
</div>
<?php if (!yii::$app->user->isGuest): ?>
<div class="row mb-0 justify-content-center">
<a class="col-auto text-center text-white btn button_blue button_clean" href="/offer/accept-suppliers">Принять</a>
</div>
<?php endif ?>
</article>
</div>

View File

@ -157,22 +157,22 @@ use app\models\Search;
<section id="prod_<?= $model['catn'] ?>_info" class="col">
<!-- Габариты -->
<p class="form-control-sm p-0 h-auto">
<b>Габариты:</b><span id="prod_<?= $model['catn'] ?>_dmns_x" class="ml-1 pointer-event" role="button" onclick="return product_panel_dimensions_edit('<?= $model['catn'] ?>', '<?= $model['prod'] ?>', this, 'x');"><?= empty($model['dmns']['x']) ? '0' : $model['dmns']['x'] ?></span><span class="mr-1">см</span><small>x</small><span id="prod_<?= $model['catn'] ?>_dmns_y" class="ml-1 pointer-event" role="button" onclick="return product_panel_dimensions_edit('<?= $model['catn'] ?>', '<?= $model['prod'] ?>', this, 'y');"><?= empty($model['dmns']['y']) ? '0' : $model['dmns']['y'] ?></span><span class="mr-1">см</span><small>x</small><span id="prod_<?= $model['catn'] ?>_dmns_z" class="ml-1 pointer-event" role="button" onclick="return product_panel_dimensions_edit('<?= $model['catn'] ?>', '<?= $model['prod'] ?>', this, 'z');"><?= empty($model['dmns']['z']) ? '0' : $model['dmns']['z'] ?></span><span class="mr-1">см</span>
<b>Габариты:</b><span id="prod_<?= $model['catn'] ?>_dmns_x" class="ml-1 pointer-event" role="button" onclick="return product_panel_dimensions_edit('<?= $model['catn'] ?>', '<?= $model['prod'] ?>', this, 'x');"><?= empty($model['dmns']['x']) ? '0' : $model['dmns']['x'] ?></span><span class="mr-1">м</span><small>x</small><span id="prod_<?= $model['catn'] ?>_dmns_y" class="ml-1 pointer-event" role="button" onclick="return product_panel_dimensions_edit('<?= $model['catn'] ?>', '<?= $model['prod'] ?>', this, 'y');"><?= empty($model['dmns']['y']) ? '0' : $model['dmns']['y'] ?></span><span class="mr-1">м</span><small>x</small><span id="prod_<?= $model['catn'] ?>_dmns_z" class="ml-1 pointer-event" role="button" onclick="return product_panel_dimensions_edit('<?= $model['catn'] ?>', '<?= $model['prod'] ?>', this, 'z');"><?= empty($model['dmns']['z']) ? '0' : $model['dmns']['z'] ?></span><span class="mr-1">м</span>
</p>
<!-- Вес -->
<p class="form-control-sm p-0 h-auto">
<b>Вес:</b><span id="prod_<?= $model['catn'] ?>_dmns_x" class="ml-1 pointer-event" role="button" onclick="return product_panel_weight_edit('<?= $model['catn'] ?>', '<?= $model['prod'] ?>', this);"><?= empty($model['wght']) ? '0' : $model['wght'] ?></span><span class="mr-1">г</span>
<b>Вес:</b><span id="prod_<?= $model['catn'] ?>_dmns_x" class="ml-1 pointer-event" role="button" onclick="return product_panel_weight_edit('<?= $model['catn'] ?>', '<?= $model['prod'] ?>', this);"><?= empty($model['wght']) ? '0' : $model['wght'] ?></span><span class="mr-1">кг</span>
</p>
</section>
<?php else : ?>
<section id="prod_<?= $model['catn'] ?>_info" class="col mb-1">
<!-- Габариты -->
<p class="form-control-sm p-0 h-auto">
<b>Габариты:</b><span id="prod_<?= $model['catn'] ?>_dmns_x" class="ml-1"><?= empty($model['dmns']['x']) ? '0' : $model['dmns']['x'] ?></span><span class="mr-1">см</span><small>x</small><span id="prod_<?= $model['catn'] ?>_dmns_y" class="ml-1"><?= empty($model['dmns']['y']) ? '0' : $model['dmns']['y'] ?></span><span class="mr-1">см</span><small>x</small><span id="prod_<?= $model['catn'] ?>_dmns_z" class="ml-1"><?= empty($model['dmns']['z']) ? '0' : $model['dmns']['z'] ?></span><span class="mr-1">см</span>
<b>Габариты:</b><span id="prod_<?= $model['catn'] ?>_dmns_x" class="ml-1"><?= empty($model['dmns']['x']) ? '0' : $model['dmns']['x'] ?></span><span class="mr-1">м</span><small>x</small><span id="prod_<?= $model['catn'] ?>_dmns_y" class="ml-1"><?= empty($model['dmns']['y']) ? '0' : $model['dmns']['y'] ?></span><span class="mr-1">м</span><small>x</small><span id="prod_<?= $model['catn'] ?>_dmns_z" class="ml-1"><?= empty($model['dmns']['z']) ? '0' : $model['dmns']['z'] ?></span><span class="mr-1">м</span>
</p>
<!-- Вес -->
<p class="form-control-sm p-0 h-auto">
<b>Вес:</b><span id="prod_<?= $model['catn'] ?>_dmns_x" class="ml-1"><?= empty($model['wght']) ? '0' : $model['wght'] ?></span>г
<b>Вес:</b><span id="prod_<?= $model['catn'] ?>_dmns_x" class="ml-1"><?= empty($model['wght']) ? '0' : $model['wght'] ?>кг</span>
</p>
</section>
<?php endif ?>

View File

@ -15,7 +15,7 @@ preg_match_all('/UTC([\+\-0-9:]*)/', $account->zone ?? Settings::searchActive()[
$timezone = $timezone[1][0];
?>
<?php if ($page > 1) : ?>
<?php if ($page > 1 && count($products) > 0) : ?>
<div class="dropdown-divider mb-3"></div>
<?php endif ?>

View File

@ -267,6 +267,10 @@ main {
border-top: 1px solid #CEDCFF !important;
}
.help-block-error {
color: #e60000;
}
/* @media (max-width: 400px) {} */
/* Малые девайсы («ландшафтные телефоны», >= 576px) */

View File

@ -70,7 +70,6 @@ function restore(form, target = 'main') {
dataType: 'json',
data: form,
success: function (data, status, xhr) {
if (data !== undefined) {
// Получены данные с сервера
@ -78,11 +77,36 @@ function restore(form, target = 'main') {
if (typeof data.status === 'boolean') {
// Успешное выполнение
// Инициализация панели
const panel = document.getElementById('form_account_panel');
// Инициализация оболочки для уведомлений, оболочки для уведомлений и оболочки формы
let id, body, alert;
// Инициализация оболочки для уведомлений
let alert = document.getElementById('form_account_panel_alert');
console.log(window.location.pathname);
console.log(window.location.pathname === '/authentication');
if (window.location.pathname === '/authentication') {
// Страница аутентификации
// Запись оболочки формы
body = document.getElementById('form_account');
// Запись оболочки для уведомлений
id = 'form_account_alert';
// Запись оболочки для уведомлений
alert = document.getElementById(id);
}
else {
// Панель аутентификации
// Запись оболочки формы
body = document.getElementById('form_account_panel');
// Запись идентификатора оболочки для уведомлений
id = 'form_account_panel_alert';
// Запись оболочки для уведомлений
alert = document.getElementById(id);
}
if (!(alert instanceof HTMLElement)) {
// Не найдена оболочка для уведомлений (подразумевается)
@ -91,12 +115,12 @@ function restore(form, target = 'main') {
const wrap = document.createElement('small');
wrap.classList.add('d-flex');
const element = document.createElement('small');
element.id = 'form_account_panel_alert';
element.id = id;
element.classList.add('mx-auto');
// Запись в панель
wrap.appendChild(element);
panel.appendChild(wrap);
body.appendChild(wrap);
// Реинициализация оболочки для уведомлений
alert = element;

View File

@ -784,6 +784,9 @@ function profile_panel_input_suppliers_accounts_create_product(button, catn, pro
function profile_panel_products_read(search = '@last', type = '@last', from = '@last', to = '@last', page = 1, purge = false) {
// '@last' - оставить без изменений и взять данные из cookie
// Реинициализация cookie с номером страницы
Cookies.set('profile_panel_products_read_page', page, { path: window.location.pathname });
if (search.length > 1) {
// Проверка на длину запроса пройдена