Добавлено подробное логирование для отладки поиска клиента

Логирование покрывает:
- Инициализацию Select2
- AJAX запросы и ответы
- События Select2 (opening, open, searching, select)
- Форматирование опций
- Обработку выбора элемента

Используйте консоль браузера (F12) для отладки.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-10 22:30:14 +03:00
parent 6600dfa51f
commit 95d5e52a97

View File

@@ -403,6 +403,10 @@ document.addEventListener('DOMContentLoaded', function() {
// Django генерирует ID как id_customer для поля customer // Django генерирует ID как id_customer для поля customer
const $customerSelect = $('#id_customer'); const $customerSelect = $('#id_customer');
console.log('=== ИНИЦИАЛИЗАЦИЯ SELECT2 ДЛЯ CUSTOMER ===');
console.log('Элемент найден:', $customerSelect.length > 0);
console.log('ID элемента:', $customerSelect.attr('id'));
$customerSelect.select2({ $customerSelect.select2({
theme: 'bootstrap-5', theme: 'bootstrap-5',
width: '100%', width: '100%',
@@ -416,12 +420,15 @@ document.addEventListener('DOMContentLoaded', function() {
delay: 300, delay: 300,
quietMillis: 250, quietMillis: 250,
data: function(params) { data: function(params) {
console.log('AJAX DATA FUNCTION вызвана, поисковый запрос:', params.term);
return { return {
q: params.term || '', q: params.term || '',
page: params.page || 1 page: params.page || 1
}; };
}, },
processResults: function(data) { processResults: function(data) {
console.log('AJAX RESPONSE получен:', data);
console.log('Количество результатов:', data.results ? data.results.length : 0);
return { return {
results: data.results || [], results: data.results || [],
pagination: { pagination: {
@@ -430,8 +437,13 @@ document.addEventListener('DOMContentLoaded', function() {
}; };
}, },
cache: true, cache: true,
error: function() { error: function(jqXHR, textStatus, errorThrown) {
console.log('Ошибка при поиске клиента'); console.error('AJAX ERROR при поиске клиента:', {
status: textStatus,
error: errorThrown,
statusCode: jqXHR.status,
responseText: jqXHR.responseText
});
} }
}, },
templateResult: formatCustomerOption, templateResult: formatCustomerOption,
@@ -446,16 +458,34 @@ document.addEventListener('DOMContentLoaded', function() {
} }
}); });
console.log('Select2 инициализирован');
// Логируем события
$customerSelect.on('select2:opening', function(e) {
console.log('SELECT2 OPENING - открытие dropdown');
});
$customerSelect.on('select2:open', function(e) {
console.log('SELECT2 OPEN - dropdown открыт');
});
$customerSelect.on('select2:searching', function(e) {
console.log('SELECT2 SEARCHING - ищем, query:', e.params.term);
});
// Форматирование опции в списке // Форматирование опции в списке
function formatCustomerOption(option) { function formatCustomerOption(option) {
console.log('formatCustomerOption вызвана для:', option);
if (!option.id) { if (!option.id) {
return option.text; return option.text;
} }
if (option.is_create_option) { if (option.is_create_option) {
console.log('Форматируем опцию создания клиента');
return '<div class="customer-create-option"><i class="bi bi-plus-circle"></i> ' + option.text + '</div>'; return '<div class="customer-create-option"><i class="bi bi-plus-circle"></i> ' + option.text + '</div>';
} }
console.log('Форматируем опцию клиента:', option.name);
let html = '<div class="customer-option">'; let html = '<div class="customer-option">';
html += '<strong>' + option.name + '</strong>'; html += '<strong>' + option.name + '</strong>';
if (option.phone) { if (option.phone) {
@@ -470,6 +500,7 @@ document.addEventListener('DOMContentLoaded', function() {
// Форматирование выбранного значения // Форматирование выбранного значения
function formatCustomerSelection(option) { function formatCustomerSelection(option) {
console.log('formatCustomerSelection вызвана для:', option);
if (!option.id) { if (!option.id) {
return option.text; return option.text;
} }
@@ -482,12 +513,16 @@ document.addEventListener('DOMContentLoaded', function() {
// Обработка выбора в Select2 // Обработка выбора в Select2
$customerSelect.on('select2:select', function(e) { $customerSelect.on('select2:select', function(e) {
const data = e.params.data; const data = e.params.data;
console.log('SELECT2:SELECT - выбран элемент:', data);
if (data.is_create_option) { if (data.is_create_option) {
console.log('Это опция создания клиента, открываем модальное окно');
// Очищаем select2 // Очищаем select2
$(this).val(null).trigger('change'); $(this).val(null).trigger('change');
// Открываем модальное окно для создания клиента // Открываем модальное окно для создания клиента
openCreateCustomerModal(data.search_text); openCreateCustomerModal(data.search_text);
} else {
console.log('Выбран существующий клиент:', data.name);
} }
}); });