fix
This commit is contained in:
parent
8f37df1c0d
commit
6977873c7f
@ -103,8 +103,8 @@
|
|||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if post.status in ['Возврат художнику']%}
|
{% if post.status in ['Возврат художнику']%}
|
||||||
<button class="b_wy3rt" onclick="btnSend(this, '{{post.d_id}}', '{{user._id}}')">
|
<button class="b_289i1" href="/profile/delivery/exhibition/{{exhibition._id}}#main">
|
||||||
<span class="b_bvl0d">Отправить</span>
|
<span class="b_al8e7">Отправить</span>
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
@ -198,93 +198,6 @@ async function btnAccept(btn, itemId){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<script>
|
|
||||||
async function btnSend(btn, itemId, sender){
|
|
||||||
const figcaption = btn.parentElement;
|
|
||||||
const statusDiv = figcaption.querySelectorAll('div')[0];
|
|
||||||
const statusSpan = statusDiv.querySelector('span')
|
|
||||||
|
|
||||||
|
|
||||||
const delivery_type = document.getElementById('delivery_type').value;
|
|
||||||
const trackValue = document.getElementById('track');
|
|
||||||
|
|
||||||
let track = ''
|
|
||||||
if (delivery_type === 'СДЭК' && trackValue) {
|
|
||||||
track = trackValue.value
|
|
||||||
}
|
|
||||||
const requiredInputs = document.querySelectorAll('input[required]');
|
|
||||||
const requiredTextareas = document.querySelectorAll('textarea[required]');
|
|
||||||
const requiredFields = [...requiredInputs, ...requiredTextareas];
|
|
||||||
|
|
||||||
let firstErrorField = null;
|
|
||||||
let hasError = false;
|
|
||||||
|
|
||||||
requiredFields.forEach(field => {
|
|
||||||
const group = field.closest('.floating-group');
|
|
||||||
if (!group) return; // skip if no group wrapper
|
|
||||||
|
|
||||||
let isEmpty = false;
|
|
||||||
if (field.type === 'file') {
|
|
||||||
isEmpty = !field.files || field.files.length === 0;
|
|
||||||
} else {
|
|
||||||
isEmpty = !field.value || !field.value.trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isEmpty) {
|
|
||||||
group.classList.add('error');
|
|
||||||
hasError = true;
|
|
||||||
showToast({message: field.dataset.toast, duration:2500});
|
|
||||||
if (!firstErrorField) firstErrorField = field;
|
|
||||||
} else {
|
|
||||||
group.classList.remove('error');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (hasError && firstErrorField) {
|
|
||||||
firstErrorField.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
||||||
setTimeout(() => firstErrorField.focus(), 600);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const res = await fetch('/api/delivery/send', {
|
|
||||||
method: 'POST',
|
|
||||||
headers: { 'Content-Type': 'application/json' },
|
|
||||||
body: JSON.stringify({
|
|
||||||
sender,
|
|
||||||
item: itemId,
|
|
||||||
delivery_type,
|
|
||||||
track: track
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!res.ok) {
|
|
||||||
let errorMessage = 'Ошибка сохранения';
|
|
||||||
try {
|
|
||||||
const errorData = await res.json();
|
|
||||||
errorMessage = errorData.detail || errorMessage;
|
|
||||||
} catch (e) {
|
|
||||||
// If response isn't JSON, try to get text
|
|
||||||
try {
|
|
||||||
const errorText = await res.text();
|
|
||||||
errorMessage = errorText || errorMessage;
|
|
||||||
} catch (e) {
|
|
||||||
// Fallback to generic error
|
|
||||||
}
|
|
||||||
}
|
|
||||||
showToast({ message: errorMessage, duration: 2500 });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
statusDiv.className = 'b_thlt1_2';
|
|
||||||
statusSpan.className = 'b_5dr47_2';
|
|
||||||
statusSpan.textContent = 'Ожидает получения';
|
|
||||||
btn.style.display = 'none'
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Network error:', error);
|
|
||||||
showToast({ message: 'Не удалось подключиться к серверу', duration: 2500 });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
{{ footer.section(user) }}
|
{{ footer.section(user) }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user