TRI-293: add custom and mover handler + mover page poster

This commit is contained in:
2024-12-21 22:24:15 +03:00
parent 6044b302bb
commit b867ab7d02
15 changed files with 607 additions and 102 deletions

View File

@@ -4,15 +4,30 @@
{% if owner_type == 'customer' %}
{% trans "Заполните форму, чтобы отправить посылку" as p_title %}
{% trans "Откуда забрать посылку" as l_from %}
{% trans "Куда доставить посылку" as l_to %}
{% trans "Каким способом Вы хотите отправить?" as l_transport %}
{% trans "Выберите кого (что) вы можете перевезти:" as l_cargo %}
{% trans "Дата отправления" as l_date_from %}
{% trans "Дата доставки посылки" as l_date_to %}
{% elif owner_type == 'mover' %}
{% trans "Заполните форму, чтобы перевезти посылку" as p_title %}
{% trans "Пункт отправления" as l_from %}
{% trans "Пункт прибытия" as l_to %}
{% trans "Укажите способ, которым вы можете перевезти" as l_transport %}
{% trans "Выберите кого (что) вы можете перевезти:" as l_cargo %}
{% trans "Дата отправления" as l_date_from %}
{% trans "Дата прибытия" as l_date_to %}
{% endif %}
<link rel="stylesheet" href="{% static 'css/ion.rangeSlider.min.css' %}">
<link rel="stylesheet" href="{% static 'css/create_poster.css' %}">
<div hidden>
csrfmiddlewaretoken: eoN2nLYYo46PpDIhi82dmTFASHH4ONiBdEQOz1jQNyUpsHJ4RrvcmFwfnM45TNtl
type_transport: road
from_address_point: 59613
from_address_point: 59613 4267
from_address_point_txt: Москаленки / Россия
to_address_point: 2824
to_address_point_txt: Берлар / Бельгия
@@ -28,81 +43,56 @@
owner_type: customer
hiddenTime: 16 декабря 2024 г. 23:04
</div>
<div class="poster">
<div class="poster poster--{% if owner_type == 'customer' %}customer{% else %}mover{% endif %}">
<h1 class="poster__title">{{ p_title }}</h1>
<form class="poster__form"
name="new_route"
method="post"
id="new_route"
id="poster__form"
>
{% csrf_token %}
{#from-to#}
<div class="poster__row poster__row--from-to">
<div class="poster__col">
<label for="from" class="poster__label " required>
{% translate "Откуда забрать посылку" %}
</label>
<input type="text" name="from" id="from" class="locate" placeholder="{% translate "Укажите город" %}">
</div>
<div class="poster__col">
<label for="to" class="poster__label " required>
{% translate "Куда доставить посылку" %}
</label>
<input type="text" name="to" id="to" class="locate" placeholder="{% translate "Укажите город" %}">
</div>
</div>
{#cargo-type#}
<div class="poster__row poster__row--cargo">
<div class="poster__col col-12">
<label class="poster__label col-12" required>
{% translate "Выберите кого (что) вы можете перевезти:" %}
</label>
<div class="poster__grid">
{% for item in form.fields.cargo_type.choices %}
<div class="cargo">
<input
class="cargo__inp"
type="radio"
name="cargo_type"
id="cargo_type_{{ forloop.counter }}"
required
value="{{ item.0 }}"
{% if item.checked %}
checked="checked"
{% endif %}
/>
<label class="cargo__label"
for="cargo_type_{{ forloop.counter }}">
<span>{{ item.1 }}</span>
</label>
</div>
{% endfor %}
</div>
</div>
</div>
{#date-poster#}
<div class="poster__row poster__row--date">
<div class="poster__col">
<label from="date-to" required class="poster__label col-12 ">
{% translate "Дата доставки посылки" %}
</label>
<input type="text" name="date-to" class="poster__date date">
</div>
<div class="poster__col"></div>
</div>
<input
type="number"
name="from_address_point"
id="from_address_point"
hidden
{% if form.initial.from_address_point %}value="{{ form.initial.from_address_point }}"{% endif %}
/>
<input
type="number"
name="to_address_point"
id="to_address_point"
hidden
{% if form.initial.to_address_point %}value="{{ form.initial.to_address_point }}"{% endif %}
/>
<input
id="hide_owner_type"
name="owner_type"
hidden
{% if form.initial.owner_type %}
value="{{ form.initial.owner_type }}"
{% elif form.data.owner_type %}
value="{{ form.data.owner_type }}"
{% endif %}
>
<input
id="hiddenTime"
type="text"
name="hiddenTime"
hidden
{% if route.departure_DT %}
value="{{ route.from_city.get_current_datetime }}"
{% elif form.initial.departure_DT %}
value="{{ form.initial.departure_DT }}"
{% endif %}
>
{#type-transport#}
<div class="poster__row poster__row--transport">
<div class="poster__col col-12">
<label for="type_transport" class="poster__label col-12" required>
{% translate "Каким способом Вы хотите отправить?" %}
{{ l_transport }}
</label>
{% for item in form.fields.type_transport.choices %}
<div class="cargo cargo--inline">
@@ -122,14 +112,158 @@
</label>
</div>
{% endfor %}
<div class="poster__errors">
</div>
{% if not errors_off and form.errors and form.errors.type_transport %}
<span>{{ form.errors.type_transport }}</span>
{% endif %}
<div class="poster__info">
{% translate "Обязательно учитывайте Правила и особенности перевозки выбранным Вами видом транспорта" %}
</div>
</div>
</div>
{#from-to#}
<div class="poster__row poster__row--from-to">
<div class="poster__col">
<label for="from" class="poster__label " required>
{{ l_from }}
</label>
<input type="text" autocomplete="off" name="from_address_point_txt" id="from" class="poster__locate locate"
placeholder="{% translate "Укажите город" %}" required>
<div class="poster__towns-list"></div>
{% if not errors_off and form.errors and form.errors.from_address_point %}
<span id="error_from_address_point">{{ form.errors.from_address_point }}</span>
{% endif %}
</div>
<div class="poster__col">
<label for="to" class="poster__label " required>
{{ l_to }}
</label>
<input type="text" autocomplete="off" name="to_address_point_txt" id="to" class="poster__locate locate"
placeholder="{% translate "Укажите город" %}" required>
<div class="poster__towns-list"></div>
{% if not errors_off and form.errors and form.errors.from_address_point %}
<span id="error_to_address_point">{{ form.errors.from_address_point }}</span>
{% endif %}
</div>
{% if owner_type == 'mover' %}
<div class="poster__col poster__col--inner">
{#date-from#}
<div class="poster__col">
<label for="departure_DT" required class="poster__label col-12 ">
{{ l_date_from }}
</label>
<input
type="text"
class="poster__date date"
id="departure_DT"
name="departure_DT"
readonly
value="{% if route.departure_DT %}
{{ route.from_city.get_current_datetime }}{% elif form.initial.departure_DT %}{{ form.initial.departure_DT }}{% endif %}"
/>
{% if not errors_off and form.errors and form.errors.departure_DT %}
<span id="error_arrival_DT">{{ form.errors.departure_DT }}</span>
{% endif %}
</div>
{#date-to#}
<div class="poster__col">
<label for="arrival_DT" required class="poster__label col-12 ">
{{ l_date_to }}
</label>
<input
type="text"
class="poster__date date"
id="arrival_DT"
name="arrival_DT"
readonly
value="{% if route.departure_DT %}
{{ route.from_city.get_current_datetime }}
{% elif form.initial.arrival_DT %}
{{ form.initial.arrival_DT }}
{% endif %}"
/>
{% if not errors_off and form.errors and form.errors.arrival_DT %}
<span id="error_arrival_DT">{{ form.errors.arrival_DT }}</span>
{% endif %}
</div>
</div>
{% endif %}
</div>
{#cargo-type#}
<div class="poster__row poster__row--cargo">
<div class="poster__col col-12">
<label class="poster__label col-12" required>
{{ l_cargo }}
</label>
<div class="poster__grid">
{% for item in form.fields.cargo_type.choices %}
<div class="cargo">
<input
class="cargo__inp"
type="radio"
name="cargo_type"
id="cargo_type_{{ forloop.counter }}"
required
value="{{ item.0 }}"
{% if forloop.first %}
checked
{% endif %}
/>
<label class="cargo__label"
for="cargo_type_{{ forloop.counter }}">
<span>{{ item.1 }}</span>
</label>
</div>
{% endfor %}
</div>
{% if not errors_off and form.errors and form.errors.cargo_type %}
<span id="error_cargo_type">{{ form.errors.cargo_type }}</span>
{% endif %}
</div>
</div>
{#date-poster#}
{% if owner_type == 'customer' %}
<div class="poster__row poster__row--date">
{#date-to#}
<div class="poster__col">
<label for="arrival_DT" required class="poster__label col-12 ">
{{ l_date_to }}
</label>
<input
type="text"
class="poster__date date"
id="arrival_DT"
name="arrival_DT"
readonly
value="{% if route.arrival_DT %}
{{ route.from_city.get_current_datetime }}
{% elif form.initial.arrival_DT %}
{{ form.initial.arrival_DT }}
{% endif %}"
/>
{% if not errors_off and form.errors and form.errors.arrival_DT %}
<span id="error_arrival_DT">{{ form.errors.arrival_DT }}</span>
{% endif %}
</div>
<div class="poster__col">
<input
type="text"
id="departure_DT"
name="departure_DT"
hidden
value="
{% if route.departure_DT %}
{{ route.from_city.get_current_datetime }}
{% elif form.initial.departure_DT %}
{{ form.initial.departure_DT }}
{% endif %}"
/>
</div>
</div>
{% endif %}
{#phone#}
<div class="poster__row poster__row--phone">
<div class="poster__col col-12">
@@ -137,10 +271,14 @@
<label for="phone" class="col-12">
{% translate "Контактный номер телефона, по которому с Вами могут связаться перевозчики" %}
</label>
<input class="col-12 col-xl-6" type="tel" placeholder="{% translate "Укажите телефон" %}">
<input class="col-12 col-xl-6" type="text" pattern="[0-9\-+]{5,}" maxlength="30"
placeholder="{% translate "Укажите телефон" %}" title="{% translate "Только цифры или - или +" %}">
<div class="poster__info">
{% translate "Если вы оставите это поле пустым - перевозчики смогут только написать вам в личные сообщения на нашем сайте TripWB.com" %}
</div>
{% if not errors_off and form.errors and form.errors.phone %}
<span id="error_id_phone">{{ form.errors.phone|safe }}</span>
{% endif %}
</div>
</div>
{#description#}
@@ -174,15 +312,12 @@
{% if form.initial.receive_msg_by_email == True %}
checked="checked"
{% endif %}
id="id_receive_msg_by_email">
id="receive_msg_by_email">
<label class="cargo__label" for="id_receive_msg_by_email">
<label class="cargo__label" for="receive_msg_by_email">
{% translate "Хочу получать уведомления на E-mail о появлении перевозчика по моим критериям" %}
</label>
</div>
{% if not errors_off and form.errors and form.errors.receive_msg_by_email %}
{{ form.errors.receive_msg_by_email }}
{% endif %}
@@ -190,11 +325,15 @@
<button type="submit"
class="btn btn--primary col-12"
onclick="sendRoute(this,
{% if route.id %}{{ route.id }}{% endif %})"
data-routeId="{% if route.id %}{{ route.id }}{% endif %}"
>
{% translate "Разместить объявление" %}
</button>
</form>
</div>
<script src="{% static 'js/form-poster.js' %}">
</script>