parent
3293ca41f7
commit
3fa1f40314
15 changed files with 2001 additions and 14 deletions
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,66 @@ |
|||||||
|
import SelectedContainer from './SelectedContainer'; |
||||||
|
import NoTreeSelect from './NoTreeSelect'; |
||||||
|
import TreeSelect from './TreeSelect'; |
||||||
|
import SingleTreeSelect from './SingleTreeSelect' |
||||||
|
|
||||||
|
$(function () { |
||||||
|
function createFilterSpecs(url) { |
||||||
|
// SPECIALIZATIONS FILTER
|
||||||
|
let sb_main = new TreeSelect($('#select-box-1'), {url, visible: true}); |
||||||
|
sb_main.setHeader("Специальность"); |
||||||
|
let select_container = new SelectedContainer($('#selected-spec'), {obj: sb_main}); |
||||||
|
sb_main.connectSelectedContainer(select_container); |
||||||
|
let sb_1 = new TreeSelect($('#select-box-2'), {obj: sb_main}); |
||||||
|
let sb_2 = new TreeSelect($('#select-box-3'), {obj: sb_main}); |
||||||
|
let sb_3 = new TreeSelect($('#select-box-4'), {obj: sb_main}); |
||||||
|
let sb_4 = new TreeSelect($('#select-box-5'), {obj: sb_main}); |
||||||
|
|
||||||
|
sb_main.setNearbySelectBox(sb_1); |
||||||
|
sb_1.setNearbySelectBox(sb_2, sb_main); |
||||||
|
sb_2.setNearbySelectBox(sb_3, sb_1); |
||||||
|
sb_3.setNearbySelectBox(sb_4, sb_2); |
||||||
|
sb_4.setNearbySelectBox("", sb_3); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
function createFilterBuildingClass(url) { |
||||||
|
// BUILDING-CLASSIFICATION FILTER
|
||||||
|
let sb_build_main = new TreeSelect($('#sb-building-classification'), {url, visible:true}); |
||||||
|
sb_build_main.setHeader("Классификация здания"); |
||||||
|
|
||||||
|
let sb_build_1 = new TreeSelect($('#sb-building-sub-classification'), {obj: sb_build_main}); |
||||||
|
|
||||||
|
let select_build_container = new SelectedContainer($('#selected-building-classification'), {obj: sb_build_main}); |
||||||
|
sb_build_main.connectSelectedContainer(select_build_container); |
||||||
|
|
||||||
|
sb_build_main.setNearbySelectBox(sb_build_1); |
||||||
|
sb_build_1.setNearbySelectBox("", sb_build_main); |
||||||
|
} |
||||||
|
|
||||||
|
function createFilterConstructionType(url) { |
||||||
|
let sb_constr_main = new NoTreeSelect($('#sb-construction-type'), {url, visible:true}); |
||||||
|
sb_constr_main.setHeader("Вид строительства"); |
||||||
|
let select_constr_type = new SelectedContainer($('#selected-construction-type'), {obj:sb_constr_main, noTree: true}); |
||||||
|
sb_constr_main.connectSelectedContainer(select_constr_type); |
||||||
|
} |
||||||
|
|
||||||
|
function createFilerLocations(url) { |
||||||
|
let sb_loc_main = new SingleTreeSelect($('#sb-location-1'), {url, visible:true}); |
||||||
|
sb_loc_main.setHeader("Местоположение"); |
||||||
|
let select_loc = new SelectedContainer($('#selected-location'), {obj: sb_loc_main, onlyOne: true}); |
||||||
|
sb_loc_main.connectSelectedContainer(select_loc); |
||||||
|
let sb_loc_1 = new SingleTreeSelect($('#sb-location-2'), {obj: sb_loc_main}); |
||||||
|
let sb_loc_2 = new SingleTreeSelect($('#sb-location-3'), {obj: sb_loc_main}); |
||||||
|
|
||||||
|
sb_loc_main.setNearbySelectBox(sb_loc_1); |
||||||
|
sb_loc_1.setNearbySelectBox(sb_loc_2, sb_loc_main); |
||||||
|
sb_loc_2.setNearbySelectBox("", sb_loc_1); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
createFilterSpecs('/api/specializations_flat'); |
||||||
|
createFilterBuildingClass('/api/building_classifications'); |
||||||
|
createFilterConstructionType('/api/construction_type'); |
||||||
|
createFilerLocations('/api/locations_flat'); |
||||||
|
|
||||||
|
}); |
||||||
@ -0,0 +1,62 @@ |
|||||||
|
.description { |
||||||
|
overflow: hidden; |
||||||
|
text-overflow: ellipsis; |
||||||
|
display: -webkit-box; |
||||||
|
-webkit-box-orient: vertical; |
||||||
|
-webkit-line-clamp: 4; /* number of lines to show */ |
||||||
|
line-height: 1.8em; /* fallback */ |
||||||
|
max-height: 7.2em; /* fallback */ |
||||||
|
} |
||||||
|
|
||||||
|
textarea.description { |
||||||
|
width: 100%; |
||||||
|
min-height: 200px; |
||||||
|
} |
||||||
|
|
||||||
|
textarea.auto-hint { |
||||||
|
color: darkgray; |
||||||
|
} |
||||||
|
|
||||||
|
.btn-plus { |
||||||
|
/*width: 300px;*/ |
||||||
|
/*text-overflow: clip;*/ |
||||||
|
white-space: normal; |
||||||
|
padding-left: 18%; |
||||||
|
color: #FF0029; |
||||||
|
/*height: 80%;*/ |
||||||
|
line-height: 1em; |
||||||
|
font-family: Arial-MT-Regular; |
||||||
|
font-size: 12pt; |
||||||
|
} |
||||||
|
|
||||||
|
.btn-plus:hover { |
||||||
|
color: #FF0029; |
||||||
|
} |
||||||
|
|
||||||
|
.btn-plus { |
||||||
|
background: url("../img/circle_cross.svg") no-repeat left; |
||||||
|
background-position-x: 5px; |
||||||
|
} |
||||||
|
|
||||||
|
.upload-new.paper-clip { |
||||||
|
padding-left: 45px; |
||||||
|
padding-right: 5px; |
||||||
|
background: url("../img/paper-clip_icon._g.png") no-repeat left; |
||||||
|
background-size: 30px 30px; |
||||||
|
width: auto; |
||||||
|
} |
||||||
|
|
||||||
|
.upload-new.paper-clip p { |
||||||
|
font-size: 12pt; |
||||||
|
width: auto; |
||||||
|
text-align: right; |
||||||
|
} |
||||||
|
|
||||||
|
.documentsChat.mod { |
||||||
|
width: auto; |
||||||
|
float: none; |
||||||
|
display: inline-block; |
||||||
|
vertical-align: inherit; |
||||||
|
padding: 0; |
||||||
|
margin: 0; |
||||||
|
} |
||||||
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 30 KiB |
@ -0,0 +1,14 @@ |
|||||||
|
$(function () { |
||||||
|
let $area = $('#with-placeholder'); |
||||||
|
let placeholder = $area.prop("placeholder"); |
||||||
|
let changed = false; |
||||||
|
$area.addClass("auto-hint"); |
||||||
|
$area.html(placeholder); |
||||||
|
$area.on("click", function (e) { |
||||||
|
// if (changed) return
|
||||||
|
console.log("click"); |
||||||
|
$(e.target).removeClass("auto-hit"); |
||||||
|
$(e.target).html(""); |
||||||
|
return true |
||||||
|
}) |
||||||
|
}); |
||||||
@ -0,0 +1,276 @@ |
|||||||
|
{% extends 'partials/base.html' %} |
||||||
|
{% load i18n %} |
||||||
|
{% load staticfiles %} |
||||||
|
{% block head_css %} |
||||||
|
<link rel='stylesheet' href='{% static "lib/proekton-components/css/fonts.css" %}'> |
||||||
|
<link rel='stylesheet' href='{% static "lib/proekton-components/css/selected-container.css" %}'> |
||||||
|
<link rel='stylesheet' href='{% static "lib/proekton-components/css/editable-container.css" %}'> |
||||||
|
<link rel='stylesheet' href='{% static "lib/proekton-components/css/select-box.css" %}'> |
||||||
|
<link rel='stylesheet' href='{% static "css/project_filter.css" %}'>{# other #} |
||||||
|
<link rel='stylesheet' href='{% static "css/font-awesome.min.css" %}'> |
||||||
|
<link rel='stylesheet' href='{% static "css/user_profile_edit.css" %}'> |
||||||
|
<link rel='stylesheet' href='{% static "css/custom-checkboxes.css" %}'> |
||||||
|
<link rel='stylesheet' href='{% static "css/customer_project_create.css" %}'> |
||||||
|
{% endblock %} |
||||||
|
|
||||||
|
{% block content %} |
||||||
|
{% include 'partials/modals/project_work_type_suggestion.html' %} |
||||||
|
{% include 'partials/header.html' %} |
||||||
|
<div class="container mainScore"> |
||||||
|
<div class="row mainContent"> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-12 allProjects"> |
||||||
|
<p class="titleScore">Новый заказ</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-9"> |
||||||
|
<div class="header">Название заказа |
||||||
|
<i class="fa fa-question-circle-o" aria-hidden="true" title=""></i> |
||||||
|
</div> |
||||||
|
<input value="" name="" class="simple-input" |
||||||
|
placeholder="Пример: Дизайн квартиры, Армирование фундамента, Конструкции перекрытия и т.д."> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="row vertical-child"> |
||||||
|
<div class="col-lg-9"> |
||||||
|
<div class="" id="select-box-1"></div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<div href="#" onclick="return false" data-toggle="modal" |
||||||
|
data-target="#projectWorkTypeSuggestionModal" |
||||||
|
class="btn btn-simple btn-plus">Нет нужной специальности хочу добавить |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<div class="vertical-child" id="select-box-2"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<div class="vertical-child" id="select-box-3"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<div class="vertical-child" id="select-box-4"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<div class="vertical-child" id="select-box-5"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-12"> |
||||||
|
<div class="selected-container horizontal" id="selected-spec"> |
||||||
|
<input type="hidden" name="{{ form.contractor_specializations.html_name }}" |
||||||
|
value="{{ form.contractor_specializations.value }}"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div style="margin-top: 45px" class="row"> |
||||||
|
<div class="col-lg-12"> |
||||||
|
<div class="header"> |
||||||
|
Подобно опишите задание для / ... |
||||||
|
<i class="fa fa-question-circle-o" aria-hidden="true" title=""></i> Обязательно |
||||||
|
</div> |
||||||
|
<textarea style="width: 100%" rows="6" placeholder= |
||||||
|
" Пример №1 |
||||||
|
Разработать архиьектурные решения для жилого дома на основании эскизной проработки |
||||||
|
|
||||||
|
|
||||||
|
Пример №2 |
||||||
|
Разработать проект по електроснабжению и освещению гаража"></textarea> |
||||||
|
|
||||||
|
{# <div id="fileUploadContainer" class="upload-new paper-clip">#} |
||||||
|
{# <p id="fileUploadAddBtn" style="margin: 0">прикрепить файл</p> до 100 файлов#} |
||||||
|
{# </div>#} |
||||||
|
|
||||||
|
<div class="documentsChat mod" id="fileUploadContainer"> |
||||||
|
<div style="display: inline-block;vertical-align: middle;"> |
||||||
|
<div style="display: inline-block;vertical-align: inherit;" class="upload-new paper-clip"> |
||||||
|
<p id="fileUploadAddBtn" style="margin: 0">прикрепить файл</p> |
||||||
|
</div> |
||||||
|
<span style="display: inline-block;vertical-align: inherit;">(до 100 файлов)</span> |
||||||
|
</div> |
||||||
|
|
||||||
|
<ul style="float: none" class="list-new-new"> |
||||||
|
<li class="file-upload-widget" style="display: none"> |
||||||
|
<input type="file" name="new_files" class="file-upload-input" |
||||||
|
style="position: absolute; top: -1000px; left: -1000px"> |
||||||
|
<p class="file-upload-label"></p> |
||||||
|
<div class="file-upload-remove-btn"></div> |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="row separator"> |
||||||
|
<div class="col-lg-12"> |
||||||
|
<div class="flex"> |
||||||
|
<span class="header">Показать расширенные настройки</span> |
||||||
|
<button class="resButton"> |
||||||
|
<span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span> |
||||||
|
</button> |
||||||
|
<div class="border"></div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="slide active"> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-12"> |
||||||
|
<div class="header">Способ оплаты</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-6"> |
||||||
|
<label> |
||||||
|
<input type="checkbox"> Безопасная сделка (с резервированием бюджета) |
||||||
|
</label> |
||||||
|
<div class="description"> |
||||||
|
Безопасная сделка – это сервис, с помощью которого: |
||||||
|
-Заказчики - полностью избавляются от всех финансовых рисков при сотрудничестве с |
||||||
|
Исполнителями; |
||||||
|
-Исполнители - получают гарантию своевременной оплаты своей работы (выполненной по заданию |
||||||
|
точно в срок). |
||||||
|
|
||||||
|
Это сервис и тип оплаты в заказах, в котором сумма оплаты резервируется (перечисляется на |
||||||
|
сайт) Заказчиком до начала работы и выплачивается Исполнителю только после успешного |
||||||
|
выполнения задания. А в случае некачественного и/или несвоевременного выполнения – |
||||||
|
возвращается Заказчику. |
||||||
|
|
||||||
|
Сайт выступает в Безопасных сделках хранителем и гарантом сохранности средств. А в случае |
||||||
|
возникновения конфликтов в заказе - Арбитром, независимой третьей Стороной, помогающей |
||||||
|
решить проблемы при сотрудничестве и справедливо распорядиться зарезервированной суммой: |
||||||
|
-выплатить ее Исполнителю, если работа выполнена своевременно и в полном соответствии с |
||||||
|
заданием; |
||||||
|
-вернуть Заказчику, если работа не выполнена или нарушены сроки выполнения; |
||||||
|
-разделить сумму между Заказчиком и Исполнителем, если работа выполнена частично и без |
||||||
|
нарушения сроков. |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-6"> |
||||||
|
<label> |
||||||
|
<input type="checkbox"> Прямая оплата Исполнителю на его кошелек/счет |
||||||
|
</label> |
||||||
|
<div class="description"> |
||||||
|
Прямая оплата - это оплата без помощи сайта. Оплаты заказов происходят напрямую исполнителю |
||||||
|
на его личный счет или кошелек. |
||||||
|
|
||||||
|
В данном случае сайт не выступает гарантом сохранности средств и не является Арбитром при |
||||||
|
спорных вопросах. |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<div class="header ">Бюджет |
||||||
|
<i class="fa fa-question-circle-o" aria-hidden="true" title=""></i> |
||||||
|
</div> |
||||||
|
<input name="..." class="simple-input" placeholder="Введите сумму" value=""> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<div class="header">Срок |
||||||
|
<i class="fa fa-question-circle-o" aria-hidden="true" title=""></i> |
||||||
|
</div> |
||||||
|
<input name="..." class="simple-input" placeholder="Введите срок" value=""> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<label> |
||||||
|
<input type="checkbox"> Сделать для исполнителей обязательным для заполнения поля цена и |
||||||
|
срок |
||||||
|
<i class="fa fa-question-circle-o" aria-hidden="true" title=""></i> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<label> |
||||||
|
<input type="checkbox"> Бюджет и срок по договоренности |
||||||
|
<i class="fa fa-question-circle-o" aria-hidden="true" title=""></i> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="row separator"> |
||||||
|
<div class="col-lg-12"> |
||||||
|
<div class="flex"> |
||||||
|
<div class="border"></div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-12"> |
||||||
|
<input type="checkbox"> Создать/выбрать объект, прикрепить объект к заказу |
||||||
|
<i class="fa fa-question-circle-o" aria-hidden="true" title=""></i> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-6"> |
||||||
|
<input name="..." class="simple-input" placeholder="Создайте/Выберите объект" value=""> |
||||||
|
</div> |
||||||
|
<div class="col-lg-6"> |
||||||
|
<div class="selected-container horizontal" id="selected-obj"> |
||||||
|
<input type="hidden" name="obj" value=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<!-- bottom block --> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<div class="vertical-child" id="sb-building-classification"> |
||||||
|
</div> |
||||||
|
<div class="vertical-child" id="sb-building-sub-classification"> |
||||||
|
</div> |
||||||
|
<div class="selected-container" id="selected-building-classification"> |
||||||
|
<input type="hidden" |
||||||
|
name="{{ form.contractor_building_classifications.html_name }}" |
||||||
|
value="{{ form.contractor_building_classifications.value }}"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<div class="vertical-child" id="sb-construction-type"> |
||||||
|
</div> |
||||||
|
<div class="selected-container" id="selected-construction-type"> |
||||||
|
<input type="hidden" name="{{ form.contractor_construction_types.html_name }}" |
||||||
|
value="{{ form.contractor_construction_types.value }}"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<div class="select-box-header vertical-child"> |
||||||
|
<span style="width: 180px" class="header">Требуется допуск (СРО)</span> |
||||||
|
<i class="fa fa-question-circle-o" aria-hidden="true" |
||||||
|
title="bla-bla-bla..."></i> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="custom-check"> |
||||||
|
<div class="checked"></div> |
||||||
|
<div style="display: none" class="not-checked"></div> |
||||||
|
<input name="{{ form.cro.html_name }}" type="checkbox" hidden |
||||||
|
{% if form.cro.value %} checked{% endif %}> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> <!-- bottom block --> |
||||||
|
<div class="row top-line"> |
||||||
|
<div class="col-lg-3 vertical-child" style="text-align: center"> |
||||||
|
<div class="header"> </div> |
||||||
|
<input type="submit" class="btn btn-simple" value="РАЗМЕСТИТЬ ЗАКАЗ"> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3 col-lg-offset-6 vertical-child" style="text-align: center"> |
||||||
|
<div class="header"> </div> |
||||||
|
<input type="submit" class="btn btn-simple" value="ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> <!-- slide --> |
||||||
|
|
||||||
|
</div> <!-- content --> |
||||||
|
</div> |
||||||
|
{% endblock %} |
||||||
|
{% block js_block %} |
||||||
|
<script src='{% static "lib/proekton-components/js/build/init_customer_project_create.js" %}'></script> |
||||||
|
{% endblock %} |
||||||
Loading…
Reference in new issue