Мелкие доработки
This commit is contained in:
parent
b3f2ef72da
commit
c41e5d4c1c
|
@ -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,
|
||||
|
|
|
@ -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');
|
||||
|
||||
// Инициализация буфера поставки
|
||||
|
|
|
@ -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" больше всех
|
||||
|
|
|
@ -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);']) .
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 ?>
|
||||
|
|
|
@ -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 ?>
|
||||
|
||||
|
|
|
@ -267,6 +267,10 @@ main {
|
|||
border-top: 1px solid #CEDCFF !important;
|
||||
}
|
||||
|
||||
.help-block-error {
|
||||
color: #e60000;
|
||||
}
|
||||
|
||||
/* @media (max-width: 400px) {} */
|
||||
|
||||
/* Малые девайсы («ландшафтные телефоны», >= 576px) */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
// Проверка на длину запроса пройдена
|
||||
|
||||
|
|
Reference in New Issue