2025-06-16 18:28:08 +05:00

277 lines
8.6 KiB
JavaScript
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$(function() {
$(document).on("click", ".del_har", function(event){
var id=$(this).data('id');
$('#har_'+id).hide();
})
$(".addHar").click(function(event){
var h=$("#h").val();
var txt=$("#txt").val();
var tovar_id=$(this).data('tovar_id');
$.ajax({
type: "POST",
url: '/act/a_new_tovar',
data: "act=addHar&h=" + h + "&tovar_id=" + tovar_id + "&txt=" + txt,
dataType: 'json',
success: function(data) {
//Мы должны проверить в справочнике существование такой характеристики, если ее нет - создаем и получаем ид, если есть - тоже получаем ид
//Затем просто товару добавляем характеристику и получаем ИД
// alert(data.txt);
$("#tableHars").append('<tr id="har_'+data.idh+'"><td><input type="text" class="form-control save-h" value="'+h+'" data-opt="sp" data-id="' + data.idsp +'" data-tovar_id="' + tovar_id + '"></span></td><td><input type="text" class="form-control save-h" value="'+txt+'" data-opt="h" data-id="'+data.idh+'" data-tovar_id="' + tovar_id + '"></td><td class="del_har" data-id="'+data.idh+'" style="cursor: pointer;">Удалить</td></tr>');
}
});
$("#h").val('');
$("#txt").val('');
})
/* ----------------------------------------------------------------------
23.08.2022
Сохраняем характеристику
---------------------------------------------------------------------- */
$(".save-h").keyup(function(event) {
var txt = $(this).val();
var id = $(this).data('id');
var opt = $(this).data('opt');
var tovar_id = $(this).data('tovar_id');
$.ajax({
type: "POST",
url: '/act/a_new_tovar',
data: "act=save-h&txt=" + txt + "&id=" + id + "&tovar_id=" + tovar_id + "&opt=" + opt
//dataType: 'json',
});
})
/* ----------------------------------------------------------------------
15.10.2023
установка сезонности товара
---------------------------------------------------------------------- */
$(".sezonCheck").click(function(event){
var mes=$(this).data("mes");
var id=$(this).data("id");
if ($(this).is(':checked'))
var status = 1;
else
var status = 0;
$.ajax({
type: "POST",
url: '/act/a_new_tovar',
data: "act=updateSezon&mes=" + mes + "&status=" + status + "&id=" + id
});
})
/* ----------------------------------------------------------------------
11.11.2023
Обновляем прайс лист в Json (характеристики товара)
---------------------------------------------------------------------- */
$("#AddHar").click(function(event) {
var n = parseInt( $("#countHars").val());
$("#countHars").val(n+1);
var tovarID = $("#tovarID").val();
$("#PriceHars").append('<tr> \
<td><input class="form-control updatePriceJson" placeholder="Тип цены" value="" data-m="tipCeny" data-id="' + tovarID + '" data-n="' + n + '"></td> \
<td><input class="form-control updatePriceJson" placeholder="Цена" value="" data-m="cena" data-id="' + tovarID + '" data-n="' + n + '"></td> \
</tr>')
})
$(document).on("keyup", ".updatePriceJson", function(event){
var id = $(this).data('id'); //ИД товара
var m = $(this).data('m'); // Тип поля (вид цены или цена)
var n = $(this).data('n'); //Номер в массиве
var v = $(this).val(); //Значение
$.ajax({
type: "POST",
url: '/act/a_new_tovar',
data: "act=updatePriceJson&id=" + id + "&m=" + m + "&n=" + n + "&v=" + v,
success: function(data) {
}
});
return false;
});
/* ----------------------------------------------------------------------
23.08.2022
Поиск товара в Базе для редактирования
---------------------------------------------------------------------- */
$("#search_tovar").keyup(function(event) {
var a = $(this).val();
$("#searchResult").html("");
$.ajax({
type: "POST",
url: '/act/a_new_tovar',
data: "act=search_tovar&find=" + a,
dataType: 'json',
success: function(data) {
$.each(data, function(index, element) {
var res = '<tr><td><a href="/a_new_tovar/' + element.id + '">' + element.txt + '</a></td></tr>';
$("#searchResult").append(res);
})
}
});
})
/* ----------------------------------------------------------------------
11.09.2022
Модальное окошко оприходования-списания
---------------------------------------------------------------------- */
$(".popup-content").magnificPopup({
type: 'inline'
});
$(".popup-content").click(function(event) {
//return false;
})
/* ----------------------------------------------------------------------
07.09.2022
Удаление картинки
---------------------------------------------------------------------- */
$(".delImg").click(function(event) {
var id = $(this).data('id');
$.ajax({
type: "POST",
url: '/act/a_new_tovar',
data: "act=delImg&id=" + id,
success: function(data) {
}
});
$("#" + id).hide('1000');
})
})
/* -- uploader -- */
// ************************ Drag and drop ***************** //
let dropArea = document.getElementById("drop-area")
// Prevent default drag behaviors
;
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, preventDefaults, false)
document.body.addEventListener(eventName, preventDefaults, false)
})
// Highlight drop area when item is dragged over it
;
['dragenter', 'dragover'].forEach(eventName => {
dropArea.addEventListener(eventName, highlight, false)
})
;
['dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, unhighlight, false)
})
// Handle dropped files
dropArea.addEventListener('drop', handleDrop, false)
function preventDefaults(e) {
e.preventDefault()
e.stopPropagation()
}
function highlight(e) {
dropArea.classList.add('highlight')
}
function unhighlight(e) {
dropArea.classList.remove('active')
}
function handleDrop(e) {
var dt = e.dataTransfer
var files = dt.files
handleFiles(files)
}
let uploadProgress = []
let progressBar = document.getElementById('progress-bar')
function initializeProgress(numFiles) {
progressBar.value = 0
uploadProgress = []
for (let i = numFiles; i > 0; i--) {
uploadProgress.push(0)
}
}
function updateProgress(fileNumber, percent) {
uploadProgress[fileNumber] = percent
let total = uploadProgress.reduce((tot, curr) => tot + curr, 0) / uploadProgress.length
console.debug('update', fileNumber, percent, total)
progressBar.value = total
}
function handleFiles(files) {
files = [...files]
initializeProgress(files.length)
files.forEach(uploadFile)
files.forEach(previewFile)
}
function previewFile(file) {
let reader = new FileReader()
reader.readAsDataURL(file)
reader.onloadend = function() {
let img = document.createElement('img')
img.src = reader.result
document.getElementById('gallery').appendChild(img)
}
}
function uploadFile(file, i) {
var url = '/act/a_new_tovar'
var xhr = new XMLHttpRequest()
var formData = new FormData()
xhr.open('POST', url, true)
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')
// Update progress (can be used to show progress indicator)
xhr.upload.addEventListener("progress", function(e) {
updateProgress(i, (e.loaded * 100.0 / e.total) || 100)
})
xhr.addEventListener('readystatechange', function(e) {
if (xhr.readyState == 4 && xhr.status == 200) {
updateProgress(i, 100) // <- Add this
} else if (xhr.readyState == 4 && xhr.status != 200) {
// Error. Inform the user
}
})
formData.append('upload_preset', 'ujpu6gyk')
formData.append('act', 'upload')
formData.append('file', file)
xhr.send(formData)
}