56 lines
2 KiB
HTML
56 lines
2 KiB
HTML
{% extends "base.html" %}
|
|
{% block content %}
|
|
<section class="grid">
|
|
<article class="card">
|
|
<h1>Заявка #{{ application.id }}</h1>
|
|
<p><b>Клиент:</b> {{ application.customer_name }} ({{ application.customer_id or "n/a" }})</p>
|
|
<p><b>Чат:</b> {{ application.chat_id or "n/a" }}</p>
|
|
<p><b>Категория:</b> {{ application.category }}</p>
|
|
<p><b>Статус:</b> <span class="badge">{{ application.status }}</span></p>
|
|
<p><b>External Sync:</b> {{ application.external_sync_status }}</p>
|
|
<p><b>External ID:</b> {{ application.external_id or "—" }}</p>
|
|
<p><b>External Error:</b> {{ application.external_error or "—" }}</p>
|
|
<h2>Описание</h2>
|
|
<pre>{{ application.description }}</pre>
|
|
<h2>Вложения</h2>
|
|
{% if attachments %}
|
|
<pre>{{ attachments | tojson(indent=2) }}</pre>
|
|
{% else %}
|
|
<p class="muted">Нет вложений.</p>
|
|
{% endif %}
|
|
</article>
|
|
|
|
<article class="card">
|
|
<h2>Действие оператора</h2>
|
|
<form method="post" action="/applications/{{ application.id }}/status" class="form">
|
|
<label>
|
|
Новый статус
|
|
<select name="status_value">
|
|
{% for status in statuses %}
|
|
<option value="{{ status }}" {% if status == application.status %}selected{% endif %}>{{ status }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</label>
|
|
<label>
|
|
Комментарий
|
|
<textarea name="reason" rows="4" placeholder="Причина/комментарий"></textarea>
|
|
</label>
|
|
<button type="submit">Обновить статус</button>
|
|
</form>
|
|
|
|
<h2>История</h2>
|
|
<ul class="events">
|
|
{% for event in events %}
|
|
<li>
|
|
<div><b>{{ event.event_type }}</b> от {{ event.actor }}</div>
|
|
<div class="muted">{{ event.created_at }}</div>
|
|
<pre>{{ event.details_json }}</pre>
|
|
</li>
|
|
{% else %}
|
|
<li>Событий пока нет.</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</article>
|
|
</section>
|
|
{% endblock %}
|
|
|