Работа над сайтом 17

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2021-07-27 19:59:56 +10:00
parent b2b5b0737c
commit a6d8ee5e59
8 changed files with 124 additions and 54 deletions

View File

@ -21,4 +21,7 @@ return [
'password' => '',
'key' => ''
],
'dadata' => [
'key' => ''
]
];

View File

@ -175,9 +175,20 @@ class SearchController extends Controller
$row['overload'] = true;
}
foreach ($connections as &$connection) {
foreach ($connections as $key => &$connection) {
// Перебор поставок
if (($cost = $cost['ЦенаЗаЕдиницу'] ?? $connection['supply_edge_product'][0]['onec']['Цены']['Цена']['ЦенаЗаЕдиницу']) < 1
|| ($amount = $connection['supply']['amnt'] ?? $connection['supply_edge_product'][0]['onec']['Количество']) < 1
) {
// Цена меньше единицы (подразумевается как ошибка) или количество меньше единицы
// Скрыть из выдачи
unset($connections[$key]);
continue;
}
// Инициализация аккаунта
$connection['account'] = Account::searchBySupplyId($connection['supply_edge_product'][0]['_from']);
@ -244,7 +255,7 @@ class SearchController extends Controller
}
// Инициализация цены (цена поставки + цена доставки + наша наценка)
$connection['cost'] = ($cost['ЦенаЗаЕдиницу'] ?? $connection['supply_edge_product'][0]['onec']['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($connection['delivery']['price']['all'] ?? $connection['delivery']['price']['one'] ?? 0) + ($settings['increase'] ?? 0);
$connection['cost'] = $cost + ($connection['delivery']['price']['all'] ?? $connection['delivery']['price']['one'] ?? 0) + ($settings['increase'] ?? 0);
// Инициализация версии для рассчета доставки по воздуху
$buffer_delivery_avia = $connection;
@ -252,6 +263,19 @@ class SearchController extends Controller
try {
// Инициализация данных геолокации
if (($cost = $cost['ЦенаЗаЕдиницу'] ?? $buffer_delivery_avia['supply_edge_product'][0]['onec']['Цены']['Цена']['ЦенаЗаЕдиницу']) < 1
|| ($amount = $connection['supply']['amnt'] ?? $connection['supply_edge_product'][0]['onec']['Количество']) < 1
) {
// Цена меньше единицы (подразумевается как ошибка) или количество меньше единицы
// Этот код не будет выполняться, так как цена одна на обе позиции и аналогичная проверка выше уже есть
// Однако я это оставлю для возможных доработок в будущем
// Скрыть из выдачи
unset($connections[$key]);
continue;
}
try {
$from = (int) $buffer_delivery_avia['account']['opts']['delivery_from_terminal'] ?? Settings::search()->delivery_from_default ?? 36;
} catch (Exception $e) {
@ -313,7 +337,7 @@ class SearchController extends Controller
// Если рассчиталась доставка самолётом
// Инициализация цены (цена поставки + цена доставки + наша наценка)
$buffer_delivery_avia['cost'] = ($cost['ЦенаЗаЕдиницу'] ?? $buffer_delivery_avia['supply_edge_product'][0]['onec']['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($buffer_delivery_avia['delivery']['price']['all'] ?? $buffer_delivery_avia['delivery']['price']['one'] ?? 0) + ($settings['increase'] ?? 0);
$buffer_delivery_avia['cost'] = $cost + ($buffer_delivery_avia['delivery']['price']['all'] ?? $buffer_delivery_avia['delivery']['price']['one'] ?? 0) + ($settings['increase'] ?? 0);
// Запись в буфер
$buffer_connections[] = $buffer_delivery_avia;

View File

@ -12,7 +12,7 @@ use yii;
<a class="text-dark my-auto mr-2" title="Заказы" href="/orders" role="button" onclick="return page_orders();"><i class="fas fa-list mx-2"></i></a>
<div class="btn-group my-auto">
<a class="btn m-0 px-0 text-dark button_clean" title="Личный кабинет" href="/profile" role="button" onclick="return page_profile();"><b><?= yii::$app->user->identity->mail ?></b></a>
<button id="profile_button" class="btn pr-0 dropdown-toggle dropdown-toggle-split button_clean" type="button" data-toggle="dropdown" onmouseover="$('#profile_button').dropdown('show')"></button>
<button id="profile_button" class="btn button_clean_full pr-0 dropdown-toggle dropdown-toggle-split button_clean" type="button" data-toggle="dropdown" onmouseover="$('#profile_button').dropdown('show')"></button>
<div id="profile_button_panel" class="dropdown-menu dropdown-menu-right py-1" aria-labelledby="profile_button" onmouseout="$('#profile_button').dropdown('show')">
<a class="dropdown-item button_white text-dark" onclick="deauthentication()">Выход (<?= yii::$app->user->identity->mail ?>)</a>
</div>

View File

@ -70,7 +70,7 @@ AppAsset::register($this);
<aside class="container mb-4">
<div class="row">
<div class="col-lg-3 d-flex flex-column align-center justify-content-end dropdownMenuButton_column">
<button id="catalog" class="btn form-control d-flex align-items-center button_clean catalog_button" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<button id="catalog" class="btn button_clean form-control d-flex align-items-center button_clean catalog_button" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-bars col-auto text-left p-0 mr-auto h-100 d-flex flex-column justify-content-center"></i>
<p class="col-10 m-0 p-0">Каталог товаров</p>
</button>
@ -82,7 +82,7 @@ AppAsset::register($this);
<div id="searchPanel" class="col">
<form class="d-flex catalog_search" onsubmit="return false;">
<div class="position-relative col-sm-8 col-lg-10 px-0">
<input id="search_line" type="text" class="form-control col-12 catalog_search_line button_clean" placeholder="Введите номер запчасти, например: 45223503481" oninput="$('#search_line').dropdown('hide'); product_search(this.value);" data-toggle="dropdown" aria-expanded="false" autocomplete="off">
<input id="search_line" type="text" class="form-control button_clean col-12 catalog_search_line button_clean" placeholder="Введите номер запчасти, например: 45223503481" oninput="$('#search_line').dropdown('hide'); product_search(this.value);" data-toggle="dropdown" aria-expanded="false" autocomplete="off">
<?php
// Сделать системные настройки и по ним работать
$search_panel = yii::$app->controller->renderPartial('/search/panel', ['history' => true]);

View File

@ -188,9 +188,16 @@ if (
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('last',' '<?= time() - 31536000 ?>', '<?= time() ?>');">Год</a>
</small>
<div class="ml-2 mr-3 d-flex">
<input id="orders_period_calendar_from" class="form-control form-control-sm form_control_clean" type="date" value="<?= $from ?? date('Y-m-d', time() - 604800) ?>" onchange="return orders_read('last', moment(this.value, 'YYYY-MM-DD').unix(), moment(document.getElementById('orders_period_calendar_to').value, 'YYYY-MM-DD').unix());" pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}" />
<div class="form-control form-control-sm form_control_clean px-1 py-0 d-flex">
<input id="orders_period_calendar_from" class="" type="date" value="<?= $from ?? date('Y-m-d', time() - 604800) ?>" onchange="return orders_read('last', moment(this.value, 'YYYY-MM-DD').unix(), moment(document.getElementById('orders_period_calendar_to').value, 'YYYY-MM-DD').unix());" pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}" />
<i class="far fa-calendar-alt my-auto"></i>
</div>
<p class="mx-2 p-0">-</p>
<input id="orders_period_calendar_to" class="form-control form-control-sm form_control_clean" type="date" value="<?= $to ?? date('Y-m-d', time()) ?>" onchange="return orders_read('last', moment(document.getElementById('orders_period_calendar_from').value, 'YYYY-MM-DD').unix(), moment(this.value, 'YYYY-MM-DD').unix());" pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}" />
<div class="form-control form-control-sm form_control_clean px-1 py-0 d-flex">
<input id="orders_period_calendar_to" class="f" type="date" value="<?= $to ?? date('Y-m-d', time()) ?>" onchange="return orders_read('last', moment(document.getElementById('orders_period_calendar_from').value, 'YYYY-MM-DD').unix(), moment(this.value, 'YYYY-MM-DD').unix());" pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}" />
<i class="far fa-calendar-alt my-auto"></i>
</div>
</div>
</div>
<div class="col mb-4 list rounded">

View File

@ -1,7 +1,11 @@
<link href="/css/pages/search.css" rel="stylesheet">
<div id="page_search" class="container flex-grow-1 d-flex">
<?php if (isset($timer) && $timer > 0) : ?>
<?php
use phpDocumentor\Reflection\DocBlock\Tags\Var_;
if (isset($timer) && $timer > 0) : ?>
<div class="row py-3 w-100">
<section class="col">
@ -74,15 +78,35 @@
// Инициализация указателя номера цикла
$supply_iterator = 1;
?>
<?php foreach ($row['supplies'] as $supply) : ?>
<?php foreach (empty($row['supplies']) || count($row['supplies']) === 0 ? [null] : $row['supplies'] as $supply) : ?>
<?php
// Инициализация переменных
extract($supply);
// Инициализация модификатора класса
if ($supplies_amount > $supply_iterator) {
// Это не последняя строка с товаром и его поставками
$supply_class_modifier = 'mb-1';
} else {
// Это последняя строка с товаром и его поставками
$supply_class_modifier = '';
}
if (is_null($supply)) {
// Поставки отсутствуют
// Генерация данных об отсутствии заказов
goto no_supplies;
} else {
// Обычная обработка поставки
// Инициализация переменных
extract($supply);
}
// Инициализация цены
$price_raw = $cost;
$price = $price_raw . ' ' . $supply_edge_product[0]['onec']['Цены']['Цена']['Валюта'];
$price = $price_raw . ' ' . $supply_edge_product[0]['onec']['Цены']['Цена']['Валюта'] ?? 'руб';
// Инициализация количества
$amount_raw = $amount = $supply['amnt'] ?? $supply_edge_product[0]['onec']['Количество'];
@ -93,6 +117,34 @@
$amount .= ' шт';
}
if ($amount_raw < 1 || $price_raw < 1) {
// Нет в наличии или цена 0 рублей
// Поставки отстутвуют
no_supplies:
// Проверка на блокировку
if ($empty_block) continue;
$supplies_html .= <<<HTML
<div class="row $supply_class_modifier m-0 h-100 text-right">
<a class="col-auto ml-auto my-auto text-dark" href="/order/new/custom" role="button" onclick="return false;">
<small>
Заказать поиск у оператора
</small>
</a>
</div>
HTML;
// Запись блокировщика
$empty_block = true;
// Обновление счётчика
++$supply_iterator;
continue;
}
// Инициализация доставки
if (isset($delivery['error']) || $delivery === '?') {
// Не удалось рассчитать доставку
@ -144,46 +196,19 @@
// Инициализация индекса аккаунта
$index = $account['indx'] ?? 'Неизвестен';
// Инициализация модификатора класса
if ($supplies_amount > $supply_iterator) {
$supply_class_modifier = 'mb-1';
} else {
$supply_class_modifier = '';
}
if ($amount_raw < 1 || $price_raw < 1) {
// Нет в наличии или цена 0 рублей
if ($empty_block) continue;
$supplies_html .= <<<HTML
<div class="row $supply_class_modifier m-0 h-100 text-right">
<a class="col-auto ml-auto my-auto text-dark" href="/order/new/custom" role="button" onclick="return false;">
<small>
Заказать поиск у оператора
</small>
</a>
</div>
HTML;
// Запись блокировщика
$empty_block = true;
} else {
// Есть в наличии
$supplies_html .= <<<HTML
<div class="row $supply_class_modifier m-0 text-right">
<div class="col-5 mr-4"></div>
<small class="col-1 ml-2 my-auto pl-2 pr-0">$index</small>
<small class="col-1 my-auto pl-2 pr-0 text-center">$amount</small>
<small class="col-auto mr-2 my-auto pl-2 pr-0 text-left" title="Ориентировочно">$delivery_icon $delivery дн</small>
<b class="col-2 ml-auto my-auto">$price</b>
<a class="col-1 ml-0 py-2 text-dark d-flex button_white rounded" title="Добавить $catn в корзину" role="button" onclick="return cart_write('{$supply['_id']}', '$delivery_type');">
<i class="fas fa-cart-arrow-down pr-1 m-auto"></i>
</a>
</div>
HTML;
}
// Генерация
$supplies_html .= <<<HTML
<div class="row $supply_class_modifier m-0 text-right">
<div class="col-5 mr-4"></div>
<small class="col-1 ml-2 my-auto pl-2 pr-0">$index</small>
<small class="col-1 my-auto pl-2 pr-0 text-center">$amount</small>
<small class="col-auto mr-2 my-auto pl-2 pr-0 text-left" title="Ориентировочно">$delivery_icon $delivery дн</small>
<b class="col-2 ml-auto my-auto">$price</b>
<a class="col-1 ml-0 py-2 text-dark d-flex button_white rounded" title="Добавить $catn в корзину" role="button" onclick="return cart_write('{$supply['_id']}', '$delivery_type');">
<i class="fas fa-cart-arrow-down pr-1 m-auto"></i>
</a>
</div>
HTML;
// Обновление счётчика
++$supply_iterator;

View File

@ -70,6 +70,7 @@ main {
.button_clean_full:focus,
.button_clean_full:active {
outline : none !important;
box-shadow: none !important;
}
.button_clean_full,

View File

@ -40,3 +40,13 @@
#page_orders article .row_supply:active, #page_orders article .row_supply_active {
background-color: #e4e2ea;
}
#page_orders article input[type="date"] {
left: 5%;
margin-right: -5%;
clip-path: inset(0 16% 0 2%);
position: relative;
font-size: 1rem;
outline: none;
border: none;
}