142 lines
7.5 KiB
HTML
142 lines
7.5 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block content %}
|
|
<div class="container mt-4">
|
|
<div class="row justify-content-center">
|
|
<div class="col-md-8">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h2 class="card-title mb-0">
|
|
<i class="fas fa-edit"></i> Редактирование партнера
|
|
</h2>
|
|
</div>
|
|
<div class="card-body">
|
|
<!-- Flash сообщения -->
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
|
{% if messages %}
|
|
{% for category, message in messages %}
|
|
<div class="alert alert-{{ 'danger' if category == 'error' else 'success' }} alert-dismissible fade show">
|
|
{{ message }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
|
</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endwith %}
|
|
|
|
<form method="POST" id="partnerForm">
|
|
<div class="row">
|
|
<!-- Основная информация -->
|
|
<div class="col-md-6">
|
|
<h5 class="border-bottom pb-2 mb-3">Основная информация</h5>
|
|
|
|
<div class="mb-3">
|
|
<label for="name" class="form-label">Название компании *</label>
|
|
<input type="text" class="form-control" id="name" name="name"
|
|
value="{{ partner.name }}" required maxlength="255">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="director" class="form-label">Директор</label>
|
|
<input type="text" class="form-control" id="director" name="director"
|
|
value="{{ partner.director or '' }}" maxlength="255">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="partner_type_id" class="form-label">Тип партнера *</label>
|
|
<select class="form-select" id="partner_type_id" name="partner_type_id" required>
|
|
<option value="">Выберите тип партнера</option>
|
|
{% for type in partner_types %}
|
|
<option value="{{ type.id }}"
|
|
{% if type.id == partner.partner_type_id %}selected{% endif %}>
|
|
{{ type.type_name }}
|
|
</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="rating" class="form-label">Рейтинг</label>
|
|
<input type="number" class="form-control" id="rating" name="rating"
|
|
min="0" max="5" step="0.1" value="{{ partner.rating or 0.0 }}">
|
|
<div class="form-text">От 0.0 до 5.0</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Контактная информация -->
|
|
<div class="col-md-6">
|
|
<h5 class="border-bottom pb-2 mb-3">Контактная информация</h5>
|
|
|
|
<div class="mb-3">
|
|
<label for="email" class="form-label">Email *</label>
|
|
<input type="email" class="form-control" id="email" name="email"
|
|
value="{{ partner.email }}" required maxlength="255">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="phone" class="form-label">Телефон</label>
|
|
<input type="tel" class="form-control" id="phone" name="phone"
|
|
value="{{ partner.phone or '' }}" maxlength="50">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="inn" class="form-label">ИНН</label>
|
|
<input type="text" class="form-control" id="inn" name="inn"
|
|
value="{{ partner.inn or '' }}" maxlength="20" pattern="\d{10,12}">
|
|
<div class="form-text">10 или 12 цифр</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="legal_address" class="form-label">Юридический адрес</label>
|
|
<textarea class="form-control" id="legal_address" name="legal_address"
|
|
rows="3" maxlength="500">{{ partner.legal_address or '' }}</textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mt-3">
|
|
<div class="col-12">
|
|
<div class="d-flex justify-content-between">
|
|
<a href="{{ url_for('index') }}" class="btn btn-secondary">
|
|
<i class="fas fa-arrow-left"></i> Назад к списку
|
|
</a>
|
|
<div>
|
|
<a href="{{ url_for('sales_history', partner_id=partner.id) }}"
|
|
class="btn btn-info me-2">
|
|
<i class="fas fa-history"></i> История продаж
|
|
</a>
|
|
<button type="submit" class="btn btn-success">
|
|
<i class="fas fa-save"></i> Сохранить изменения
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block scripts %}
|
|
<script>
|
|
// Валидация формы
|
|
document.getElementById('partnerForm').addEventListener('submit', function(e) {
|
|
const inn = document.getElementById('inn').value;
|
|
|
|
if (inn && !/^\d{10,12}$/.test(inn)) {
|
|
e.preventDefault();
|
|
alert('ИНН должен содержать 10 или 12 цифр');
|
|
return false;
|
|
}
|
|
|
|
const rating = parseFloat(document.getElementById('rating').value);
|
|
if (rating < 0 || rating > 5) {
|
|
e.preventDefault();
|
|
alert('Рейтинг должен быть от 0.0 до 5.0');
|
|
return false;
|
|
}
|
|
});
|
|
</script>
|
|
{% endblock %} |