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

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2021-06-29 09:08:01 +10:00
parent c4035d8ad3
commit 83295650c9
12 changed files with 105 additions and 92 deletions

View File

@ -137,7 +137,7 @@ class OrderController extends Controller
Order::searchById($account_edge_order->_to)->journal('accepted'); Order::searchById($account_edge_order->_to)->journal('accepted');
// Инициализация // Инициализация
$orders = Order::search(type: 'all', limit: 10, page: 1, select: '{account_edge_order, order}'); $orders = Order::search(type: 'all', limit: 10, page: 1, select: '{account_edge_order, order}', supplies: true);
$moderator_orders = self::genOrdersForModeration(); $moderator_orders = self::genOrdersForModeration();
// Запись в буфер вывода // Запись в буфер вывода
@ -320,6 +320,7 @@ class OrderController extends Controller
if ($connection['supply']['catn'] === $catn) { if ($connection['supply']['catn'] === $catn) {
// Цель найдена // Цель найдена
if ($connection['amount'] > $amount) { if ($connection['amount'] > $amount) {
// Запрошено уменьшение количества // Запрошено уменьшение количества
@ -329,7 +330,7 @@ class OrderController extends Controller
// Запрошено увеличение количества // Запрошено увеличение количества
// Запись // Запись
$order->writeSupply([$connection['supply']['catn'] => $amount - $connection['amount']]); $order->writeSupply('supply/' . $connection['supply']['_key'], $connection['order_edge_supply']['dlvr'] ?? 'auto', $amount - $connection['amount']);
} }
} }
} }
@ -384,7 +385,7 @@ class OrderController extends Controller
// Инициализация буфера поставок // Инициализация буфера поставок
$supplies = []; $supplies = [];
foreach($model['supplies'] as $supply) { foreach ($model['supplies'] as $supply) {
$supplies[] = [ $supplies[] = [
'title' => $supply['supply']['catn'], 'title' => $supply['supply']['catn'],
'amount' => [ 'amount' => [
@ -419,8 +420,8 @@ class OrderController extends Controller
} }
// Инициализация // Инициализация
$orders = Order::search(type: 'all', limit: 30, page: 1, select: '{account_edge_order, order}'); $orders = Order::search(type: 'all', limit: 10, page: 1, select: '{account_edge_order, order}', supplies: true);
$moderator_orders = Order::search(account: '@all', type: 'requested', limit: 10, page: 1, select: '{account_edge_order, order}'); $moderator_orders = self::genOrdersForModeration();
if (yii::$app->request->isPost) { if (yii::$app->request->isPost) {
// POST-запрос // POST-запрос

View File

@ -184,18 +184,23 @@ class SearchController extends Controller
try { try {
// Инициализация доставки (автоматическая) // Инициализация доставки (автоматическая)
$connection['delivery'] = Dellin::calcDeliveryAdvanced( $connection['delivery'] = Dellin::calcDeliveryAdvanced(
$buffer['account']['opts']['delivery_from_terminal'], $connection['account']['opts']['delivery_from_terminal'],
yii::$app->user->identity->opts['delivery_to_terminal'], yii::$app->user->identity->opts['delivery_to_terminal'],
(int) ($connection['product']['wght'] ?? 0), (int) ($connection['product']['wght'] ?? 0),
(int) ($connection['product']['dmns']['x'] ?? 0), (int) ($connection['product']['dmns']['x'] ?? 0),
(int) ($connection['product']['dmns']['y'] ?? 0), (int) ($connection['product']['dmns']['y'] ?? 0),
(int) ($connection['product']['dmns']['z'] ?? 0) (int) ($connection['product']['dmns']['z'] ?? 0)
); );
$buffer['delivery']['type'] = 'auto'; $connection['delivery']['type'] = 'auto';
} catch (Exception $e) { } catch (Exception $e) {
$connection['delivery']['error'] = true; $connection['delivery']['error'] = true;
// var_dump(json_decode($e->getMessage(), true)['errors']); die; // var_dump($e->getMessage());
// var_dump($e->getTrace());
// var_dump($e->getFile());
// var_dump(json_decode($e->getMessage(), true)['errors']);
// die;
} }
// Инициализация цены (цена поставки + цена доставки + наша наценка) // Инициализация цены (цена поставки + цена доставки + наша наценка)
@ -222,7 +227,6 @@ class SearchController extends Controller
// var_dump($e->getMessage()); // var_dump($e->getMessage());
// var_dump($e->getTrace()); // var_dump($e->getTrace());
// var_dump($e->getFile()); // var_dump($e->getFile());
// die;
// var_dump(json_decode($e->getMessage(), true)['errors']); // var_dump(json_decode($e->getMessage(), true)['errors']);
// die; // die;

View File

@ -354,47 +354,47 @@ class Order extends Document implements DocumentInterface
$buffer_global = []; $buffer_global = [];
// Разделение поставок по типам доставки // Разделение поставок по типам доставки
foreach ($connections as &$connection) { // foreach ($connections as &$connection) {
// Перебор поставок // // Перебор поставок
if (count($connection['order_edge_supply'] ?? []) > 1) { // if (count($connection['order_edge_supply'] ?? []) > 1) {
// Поставок более чем одна // // Поставок более чем одна
// Инициализация (выбор значения для фильтрации) // // Инициализация (выбор значения для фильтрации)
$target_dlvr_type = reset($connection['order_edge_supply'])['dlvr']['type'] ?? 'auto'; // $target_dlvr_type = reset($connection['order_edge_supply'])['dlvr']['type'] ?? 'auto';
// Инициализация буфера поставок // // Инициализация буфера поставок
$buffer = $connection; // $buffer = $connection;
unset($buffer['order_edge_supply']); // unset($buffer['order_edge_supply']);
foreach ($connection['order_edge_supply'] as $key => &$order_edge_supply) { // foreach ($connection['order_edge_supply'] as $key => &$order_edge_supply) {
// Перебор рёбер: ЗАКАЗ -> ПОСТАВКА // // Перебор рёбер: ЗАКАЗ -> ПОСТАВКА
// if ((empty($order_edge_supply['dlvr']['type']) && $target_dlvr_type === 'auto') // // if ((empty($order_edge_supply['dlvr']['type']) && $target_dlvr_type === 'auto')
// || (isset($order_edge_supply['dlvr']['type']) && $order_edge_supply['dlvr']['type'] !== $target_dlvr_type) // // || (isset($order_edge_supply['dlvr']['type']) && $order_edge_supply['dlvr']['type'] !== $target_dlvr_type)
// // ) {
// if ((isset($order_edge_supply['dlvr']['type']) && $order_edge_supply['dlvr']['type'] === $target_dlvr_type)
// || (empty($order_edge_supply['dlvr']['type']) && $target_dlvr_type === 'auto')
// ) { // ) {
if ((isset($order_edge_supply['dlvr']['type']) && $order_edge_supply['dlvr']['type'] === $target_dlvr_type) // // Тип доставки для одной поставки отличается
|| (empty($order_edge_supply['dlvr']['type']) && $target_dlvr_type === 'auto')
) {
// Тип доставки для одной поставки отличается
// Запись в буфер // // Запись в буфер
$buffer['order_edge_supply'][$key] = $order_edge_supply; // $buffer['order_edge_supply'][$key] = $order_edge_supply;
// Удаление из списка // // Удаление из списка
unset($connection['order_edge_supply'][$key]); // unset($connection['order_edge_supply'][$key]);
// Перезапись статуса // // Перезапись статуса
$changed = true; // $changed = true;
} // }
} // }
// Запись из буфера в глобальный буфер // // Запись из буфера в глобальный буфер
$buffer_global[] = $buffer; // $buffer_global[] = $buffer;
} // }
} // }
$connections = array_merge($connections, $buffer_global); // $connections = array_merge($connections, $buffer_global);
// if ($changed) goto recursive_connections_filtration; // if ($changed) goto recursive_connections_filtration;
@ -478,9 +478,9 @@ class Order extends Document implements DocumentInterface
} catch (Exception $e) { } catch (Exception $e) {
$connection['delivery']['error'] = true; $connection['delivery']['error'] = true;
// var_dump($e->getMessage()); var_dump($e->getMessage());
// var_dump($e->getTrace()); var_dump($e->getTrace());
// var_dump($e->getFile()); die; var_dump($e->getFile()); die;
// var_dump(json_decode($e->getMessage(), true)['errors']); die; // var_dump(json_decode($e->getMessage(), true)['errors']); die;
} }
@ -505,9 +505,9 @@ class Order extends Document implements DocumentInterface
} catch (Exception $e) { } catch (Exception $e) {
$connection['delivery']['error'] = true; $connection['delivery']['error'] = true;
// var_dump($e->getMessage()); var_dump($e->getMessage());
// var_dump($e->getTrace()); var_dump($e->getTrace());
// var_dump($e->getFile()); die; var_dump($e->getFile()); die;
// var_dump(json_decode($e->getMessage(), true)['errors']); die; // var_dump(json_decode($e->getMessage(), true)['errors']); die;
} }

View File

@ -441,7 +441,7 @@ class Product extends Document
$query = self::find() $query = self::find()
->for('product') ->for('product')
->in('product_search') ->in('product_search')
->search(['catn' => $catn]) ->filter(['catn' => $catn], 'START_SENSETIVE')
->limit($limit) ->limit($limit)
->select($select) ->select($select)
->createCommand() ->createCommand()

View File

@ -113,7 +113,7 @@ use DateTime;
} }
} else { } else {
echo <<<HTML echo <<<HTML
<div class="row py-2 cart_list_target"> <div class="row py-2">
<div class="mx-auto py-2"> <div class="mx-auto py-2">
Корзина пуста Корзина пуста
</div> </div>

View File

@ -10,7 +10,7 @@ $this->title = 'SkillParts';
<link href="/css/ticker.css" rel="stylesheet"> <link href="/css/ticker.css" rel="stylesheet">
<div id="page_index" class="mb-auto"> <div id="page_index" class="mb-auto">
<section class="info_panel mb-4"> <section class="info_panel mb-4 unselectable">
<div class="container h-100 d-flex flex-column justify-content-center"> <div class="container h-100 d-flex flex-column justify-content-center">
<h1 class="mb-4 ml-0 gilroy">Проблема с подбором запчастей?</h1> <h1 class="mb-4 ml-0 gilroy">Проблема с подбором запчастей?</h1>
<p class="ml-0 d-flex"> <p class="ml-0 d-flex">
@ -23,7 +23,7 @@ $this->title = 'SkillParts';
</div> </div>
</section> </section>
<section class="h-100 d-flex ticker"> <section class="h-100 d-flex ticker unselectable">
<img class="w-auto h-100 mr-3 my-auto" src="/img/logos/h32px/compressed/cummins.png" alt="Cummins"> <img class="w-auto h-100 mr-3 my-auto" src="/img/logos/h32px/compressed/cummins.png" alt="Cummins">
<img class="w-auto h-100 mr-3 my-auto" src="/img/logos/h32px/compressed/iveco.png" alt="Iveco"> <img class="w-auto h-100 mr-3 my-auto" src="/img/logos/h32px/compressed/iveco.png" alt="Iveco">
<img class="w-auto h-100 mr-3 my-auto" src="/img/logos/h32px/compressed/komatsu.png" alt="Komatsu"> <img class="w-auto h-100 mr-3 my-auto" src="/img/logos/h32px/compressed/komatsu.png" alt="Komatsu">
@ -42,20 +42,17 @@ $this->title = 'SkillParts';
</section> </section>
<section class="container mb-4"> <section class="container mb-4">
<!-- <div class="row mb-3"> <div class="row mb-5 mb-md-0 px-3 px-md-0 unselectable">
<h4 class="col gilroy categories_blocks_panel_title">Сопутствующие товары</h4>
</div> -->
<div class="row mb-5 mb-md-0 px-3 px-md-0">
<div class="col-12 col-md-6 col-lg-4 mb-4 mb-lg-0 py-0 d-flex flex-column"> <div class="col-12 col-md-6 col-lg-4 mb-4 mb-lg-0 py-0 d-flex flex-column">
<div class="px-3 px-xl-4 pt-3 d-inline-block category_block_title"> <div class="px-3 px-xl-4 pt-3 d-inline-block category_block_title">
<h4 class="m-0">Масла, смазки</h4> <h4 class="m-0">Масла, смазки</h4>
</div> </div>
<div class="p-3 px-md-4 category_block"> <div class="p-3 px-md-4 category_block">
<dl class="mb-0"> <dl class="mb-0">
<dd>Масла моторные</dd> <dd><a onclick="return writeinDevelopment(this);" type="button">Масла моторные</a></dd>
<dd>Масла трансмиссионные</dd> <dd><a onclick="return writeinDevelopment(this);" type="button">Масла трансмиссионные</a></dd>
<dd>Масла гидравлические</dd> <dd><a onclick="return writeinDevelopment(this);" type="button">Масла гидравлические</a></dd>
<dd>Смазки</dd> <dd><a onclick="return writeinDevelopment(this);" type="button">Смазки</a></dd>
</dl> </dl>
</div> </div>
</div> </div>
@ -65,7 +62,7 @@ $this->title = 'SkillParts';
</div> </div>
<div class="p-3 px-md-4 category_block"> <div class="p-3 px-md-4 category_block">
<dl class="mb-0"> <dl class="mb-0">
<dd>Фары и свет</dd> <dd><a onclick="return writeinDevelopment(this);" type="button">Фары и свет</a></dd>
</dl> </dl>
</div> </div>
</div> </div>
@ -75,9 +72,9 @@ $this->title = 'SkillParts';
</div> </div>
<div class="p-3 px-md-4 category_block"> <div class="p-3 px-md-4 category_block">
<dl class="mb-0"> <dl class="mb-0">
<dd>Шприцы для смазки </dd> <dd><a onclick="return writeinDevelopment(this);" type="button">Шприцы для смазки</a></dd>
<dd>Ключи, съёмники</dd> <dd><a onclick="return writeinDevelopment(this);" type="button">Ключи, съёмники</a></dd>
<dd>Наборы инструментов</dd> <dd><a onclick="return writeinDevelopment(this);" type="button">Наборы инструментов</a></dd>
</dl> </dl>
</div> </div>
</div> </div>
@ -86,3 +83,4 @@ $this->title = 'SkillParts';
</div> </div>
<script src="/js/ticker.js" defer></script> <script src="/js/ticker.js" defer></script>
<script src="/js/main.js" defer></script>

View File

@ -48,7 +48,7 @@ AppAsset::register($this);
<div id="notifications_popup_wrap" class="col-3 m-4"></div> <div id="notifications_popup_wrap" class="col-3 m-4"></div>
<header class="container pt-2 mt-1 mb-2 mb-sm-4"> <header class="container pt-2 mt-1 mb-2 mb-sm-4 unselectable">
<div class="row h-100"> <div class="row h-100">
<div id="logo" class="col-3 col-md-4 h-100"> <div id="logo" class="col-3 col-md-4 h-100">
<a class="py-2 h-100 d-inline-flex" title="SkillParts" href="/" role="button" onclick="return page_main();"> <a class="py-2 h-100 d-inline-flex" title="SkillParts" href="/" role="button" onclick="return page_main();">
@ -75,19 +75,11 @@ AppAsset::register($this);
<p class="col-10 m-0 p-0">Каталог товаров</p> <p class="col-10 m-0 p-0">Каталог товаров</p>
</button> </button>
<div class="dropdown-menu" aria-labelledby="catalog"> <div class="dropdown-menu" aria-labelledby="catalog">
<a class="dropdown-item" href="#">Action</a> <a class="dropdown-item" type="button">В разработке</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div> </div>
</div> </div>
<div id="searchPanel" class="col"> <div id="searchPanel" class="col">
<!-- <input id="catalog_search_panel_button_1" class="btn btn-sm button_clean" type="radio" name="catalog_search_panel_buttons" value="catalog_search_panel_button_1" checked>
<label class="mb-0 px-3 px-md-4 py-1" for="catalog_search_panel_button_1">Номер детали</label>
<input id="catalog_search_panel_button_2" class="btn btn-sm text-white button_clean" type="radio" name="catalog_search_panel_buttons" value="catalog_search_panel_button_2">
<label class="mb-0 px-3 px-md-4 py-1" for="catalog_search_panel_button_2">Вторая кнопка</label>
<input id="catalog_search_panel_button_3" class="btn btn-sm5 text-white button_clean" type="radio" name="catalog_search_panel_buttons" value="catalog_search_panel_button_3">
<label class="mb-0 px-3 px-md-4 py-1" for="catalog_search_panel_button_3">Третья кнопка</label> -->
<form class="d-flex catalog_search" onsubmit="return false;"> <form class="d-flex catalog_search" onsubmit="return false;">
<div class="position-relative col-sm-8 col-lg-10 px-0"> <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-haspopup="true" aria-expanded="false" autocomplete="off"> <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-haspopup="true" aria-expanded="false" autocomplete="off">
@ -95,17 +87,11 @@ AppAsset::register($this);
// Сделать системные настройки и по ним работать // Сделать системные настройки и по ним работать
$search_panel = yii::$app->controller->renderPartial('/search/panel', ['history' => true]); $search_panel = yii::$app->controller->renderPartial('/search/panel', ['history' => true]);
// if (!yii::$app->user->isGuest && $search_panel = $search_panel ?? yii::$app->controller->renderPartial('/search/panel', ['history' => true])) {
echo <<<HTML echo <<<HTML
<div id="search_line_window" class="dropdown-menu w-100" aria-labelledby="search_line"> <div id="search_line_window" class="dropdown-menu w-100" aria-labelledby="search_line">
$search_panel $search_panel
</div> </div>
HTML; HTML;
// } else {
// echo <<<HTML
// <div id="search_line_window" class="dropdown-menu w-100" style="display: none" aria-labelledby="search_line"></div>
// HTML;
// }
?> ?>
</div> </div>
<button type="submit" class="col btn button_clean catalog_search_button" onclick="product_search(this.parentElement.getElementsByTagName('input')[0].value, 1)">ПОИСК</button> <button type="submit" class="col btn button_clean catalog_search_button" onclick="product_search(this.parentElement.getElementsByTagName('input')[0].value, 1)">ПОИСК</button>
@ -121,13 +107,13 @@ AppAsset::register($this);
<footer class="container py-4"> <footer class="container py-4">
<div class="row px-3"> <div class="row px-3">
<div class="col-12 col-md-auto mr-md-5"> <div class="col-12 col-md-auto mr-md-5">
<h5 class="row mb-2"><b>Контакты</b></h5> <h5 class="row mb-2 unselectable"><b>Контакты</b></h5>
<small class="row mb-1"><b>Адрес:&nbsp;</b>Хабаровск, Промышленная 3, 105</small> <small class="row mb-1"><b>Адрес:&nbsp;</b>Хабаровск, Промышленная 3, 105</small>
<small class="row mb-1"><b>Время работы:&nbsp;</b>пн-пт 09:00-18:00</small> <small class="row mb-1"><b>Время работы:&nbsp;</b>пн-пт 09:00-18:00</small>
<small class="row mb-1"><b>Телефон:&nbsp;</b>+7 (4212) 35-85-34</small> <small class="row mb-1"><b>Телефон:&nbsp;</b>+7 (4212) 35-85-34</small>
<small class="row mb-1"><b>Почта:&nbsp;</b>info@skillparts.ru</small> <small class="row mb-1"><b>Почта:&nbsp;</b>info@skillparts.ru</small>
</div> </div>
<div class="col-md-auto mr-md-5 partnership"> <div class="col-md-auto mr-md-5 partnership unselectable">
<h5 class="row mb-2"><b>Партнёрство</b></h5> <h5 class="row mb-2"><b>Партнёрство</b></h5>
<small class="row mb-1"><a href="/buyers">Покупателям</a></small> <small class="row mb-1"><a href="/buyers">Покупателям</a></small>
<small class="row mb-1"><a href="/suppliers">Поставщикам</a></small> <small class="row mb-1"><a href="/suppliers">Поставщикам</a></small>

View File

@ -23,11 +23,9 @@ if (
<link href="/css/pages/orders.css" rel="stylesheet"> <link href="/css/pages/orders.css" rel="stylesheet">
<div id="page_orders" class="container mb-auto py-3"> <div id="page_orders" class="container mb-auto py-3">
<?php if ( <?php if ($account_type = (!yii::$app->user->isGuest
!yii::$app->user->isGuest
&& yii::$app->user->identity->type === 'administrator' && yii::$app->user->identity->type === 'administrator'
|| yii::$app->user->identity->type === 'moderator' || yii::$app->user->identity->type === 'moderator')) : ?>
) : ?>
<div class="orders_panel_menu mb-2"> <div class="orders_panel_menu mb-2">
<label class="btn button_white mb-0 mr-2" for="orders_panel_moderation">Модерация</label> <label class="btn button_white mb-0 mr-2" for="orders_panel_moderation">Модерация</label>
<label class="btn button_white mb-0" for="orders_panel_orders">Мои заказы</label> <label class="btn button_white mb-0" for="orders_panel_orders">Мои заказы</label>
@ -171,7 +169,8 @@ if (
<input type="radio" id="orders_panel_orders" name="main_panel" <?= $panel === 'orders_panel_orders' ? 'checked' : null ?> /> <input type="radio" id="orders_panel_orders" name="main_panel" <?= $panel === 'orders_panel_orders' ? 'checked' : null ?> />
<?php endif ?> <?php endif ?>
<article class="page_order_panel mt-3 py-3 px-4 rounded">
<article class="page_order_panel mt-3 py-3 px-4 rounded <?= $account_type ?? false ? '' : 'd-block'; ?>">
<h4 class="ml-4 mt-2 mb-4"><i class="fas fa-list mr-2"></i>Заказы</h4> <h4 class="ml-4 mt-2 mb-4"><i class="fas fa-list mr-2"></i>Заказы</h4>
<div class="col mb-4 list rounded"> <div class="col mb-4 list rounded">
<div class="row py-3 text-center"> <div class="row py-3 text-center">

View File

@ -13,9 +13,14 @@
} }
a { a {
color: #0b3397;
cursor: pointer; cursor: pointer;
} }
a:hover {
color: #001752;
}
p { p {
margin: auto; margin: auto;
} }

View File

@ -221,7 +221,7 @@ function registration_start(form, type) {
private_policy_label.appendChild(private_policy); private_policy_label.appendChild(private_policy);
private_policy_label.appendChild(private_policy_text_wrap); private_policy_label.appendChild(private_policy_text_wrap);
private_policy_text_wrap.appendChild(private_policy_text); private_policy_text_wrap.appendChild(private_policy_text);
private_policy_text_wrap.appendChild(document.createTextNode(' конфидециальности')); private_policy_text_wrap.appendChild(document.createTextNode(' конфиденциальности'));
// Инициализация заголовка // Инициализация заголовка
let title = form.children[1]; let title = form.children[1];

View File

@ -179,8 +179,8 @@ function cart_cost_calculate() {
let costs = 0; let costs = 0;
for ($i = 0; $i < elements.length; $i++) { for ($i = 0; $i < elements.length; $i++) {
let cost = elements[$i].getElementsByTagName('div')[5].innerText; let cost = elements[$i].getElementsByTagName('div')[7].innerText;
let amount = elements[$i].getElementsByTagName('div')[3].children[0].value; let amount = elements[$i].getElementsByTagName('div')[5].children[0].value;
costs += +reg.exec(cost)[1] * amount; costs += +reg.exec(cost)[1] * amount;
} }

View File

@ -0,0 +1,20 @@
function writeinDevelopment(target) {
// Инициализация буфера
let buffer = target.innerText;
// Запись текста
target.innerText = target.innerText + ' (в разработке)';
// Блокировка от повторного вызова
target.setAttribute('onclick', 'return false;');
setTimeout(function () {
// Возврат изначального текста из буфера
target.innerText = buffer;
// Разблокировка
target.setAttribute('onclick', 'return writeinDevelopment(this);');
}, 3000);
return false;
};