Улучшения UX формы заказа и создания клиента
- Изменен порядок секций формы: товары перемещены выше доставки - Добавлена защита от двойного создания клиента - Улучшена валидация при создании клиента с детализацией ошибок - Добавлен индикатор загрузки при сохранении клиента - Исправлена логика обработки специальной опции создания клиента 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -338,7 +338,7 @@ def api_search_customers(request):
|
||||
# Если ничего не найдено, предлагаем создать нового клиента
|
||||
if not results:
|
||||
results.append({
|
||||
'id': None,
|
||||
'id': '__create_new__', # Специальный ID для опции создания
|
||||
'text': f'Создать клиента: "{query}"',
|
||||
'is_create_option': True,
|
||||
'search_text': query,
|
||||
@@ -390,6 +390,7 @@ def api_create_customer(request):
|
||||
'name': name,
|
||||
'phone': phone if phone else None,
|
||||
'email': email if email else None,
|
||||
'loyalty_tier': 'no_discount', # Значение по умолчанию для новых клиентов
|
||||
}
|
||||
|
||||
# Используем форму для валидации и создания
|
||||
@@ -409,18 +410,26 @@ def api_create_customer(request):
|
||||
'email': customer.email if customer.email else '',
|
||||
}, status=201)
|
||||
else:
|
||||
# Собираем ошибки валидации
|
||||
# Собираем ошибки валидации с указанием полей
|
||||
errors = []
|
||||
for field, field_errors in form.errors.items():
|
||||
for error in field_errors:
|
||||
errors.append(error)
|
||||
field_labels = {
|
||||
'name': 'Имя клиента',
|
||||
'phone': 'Телефон',
|
||||
'email': 'Email',
|
||||
}
|
||||
|
||||
# Возвращаем первую ошибку
|
||||
error_message = errors[0] if errors else 'Ошибка валидации данных'
|
||||
for field, field_errors in form.errors.items():
|
||||
field_label = field_labels.get(field, field)
|
||||
for error in field_errors:
|
||||
errors.append(f'{field_label}: {error}')
|
||||
|
||||
# Возвращаем все ошибки
|
||||
error_message = '<br>'.join(errors) if errors else 'Ошибка валидации данных'
|
||||
|
||||
return JsonResponse({
|
||||
'success': False,
|
||||
'error': error_message
|
||||
'error': error_message,
|
||||
'errors': form.errors # Добавляем детальную информацию об ошибках
|
||||
}, status=400)
|
||||
|
||||
except json.JSONDecodeError:
|
||||
|
||||
Reference in New Issue
Block a user