manger.js
unknown
javascript
2 years ago
21 kB
12
Indexable
new Vue({
el: '#app',
data: {
info: null,
totalResponse: null,
storeList: null,
selectedStore: 1,
isLoaded: true,
itemPriceChange: 0,
modalInfo: null,
currentItem: null,
userInput: "",
page: 1,
checkedOrders: [],
sortByLeft: false,
currentSupply: null,
supplyList: [],
font: '=='
},
created: function () {
// console.log(this.info)
window.jsPDF = window.jspdf.jsPDF;
},
mounted: function () {
if (Cookies.get('wildberries_store_selection') != undefined) {
this.selectedStore = Cookies.get('wildberries_store_selection')
}
this.getData()
},
watch: {
// whenever question changes, this function will run
sortByLeft(newQuestion, oldQuestion) {
this.getData()
}
},
methods: {
getData() {
if (this.isLoaded) {
axios.get("api/wildberries/manager/getStoreList.php").then(response => {
this.storeList = response.data
})
axios.get("api/wildberries/manager/getSupplyList.php").then(response => {
this.supplyList = response.data
if (this.supplyList.length > 0) {
this.currentSupply = this.supplyList[0]
}
})
this.info = null
this.isLoaded = false
const code = this.userInput
axios.get("api/wildberries/manager/getOrders.php?code=" + code + '&page=' + this.page + "&sortCheck=" + this.sortByLeft +"&supply="+this.currentSupply).then(response => {
this.isLoaded = true
this.info = response.data.orders
for (var i = 0; i < this.info.length; i++) {
if (this.info[i].currencyCode == 933) {
this.info[i].changedPrice = this.info[i].price * 24
} else if (this.info[i].currencyCode == 398) {
this.info[i].changedPrice = this.info[i].price / 5
} else {
this.info[i].changedPrice = this.info[i].price
}
// console.log(i)
}
this.totalResponse = response.data
})
.catch(function (error) {
this.isLoaded = true
if (error.response.status == 403) {
location.reload()
}
})
}
},
paginate() {
var pagination = document.getElementById("pagination")
console.log("testtsts", pagination)
let totalPage = parseInt(this.totalResponse.count / 30)
let pag = ""
for (var i = 1; i < totalPage; i++) {
console.log("p", i)
if (i == this.page) {
pag += '<li class="page-item active"><a class="page-link" href="#" tabindex="-1">' + i + '</a></li>'
} else if (i > this.page && i < 5) {
pag += '<li class="page-item"><a class="page-link" href="#" tabindex="-1">' + i + '</a></li>'
}
}
pag += '<li class="page-item disabled"><a class="page-link" href="#" tabindex="-1">' + totalPage + '</a></li>'
console.log("pagination", pag)
pagination.innerHTML = '<ul class="pagination">' + pag + '</ul>'
},
selectedPage(page) {
if (page == this.page) {
return "page-item active"
}
return "page-item"
},
bindInfoButtons(id) {
document.getElementById("name").innerHTML = "";
this.info.find(item => {
if (item.id == id) {
this.modalInfo = item
// console.log(this.modalInfo.shtrih)
// document.getElementById("okImage").src += "data:image/svg+xml;base64," + this.modalInfo.shtrih;
this.itemPriceChange = item.price
JsBarcode("#ean-13", this.modalInfo.item_barcode, { format: "ean13" });
}
})
for (var i = 0; i < this.modalInfo.subOrders.length; i++) {
document.getElementById("name").innerHTML += "<p>" + this.modalInfo.subOrders[i].name + " " + "<br></strong> Кол: <strong>" + this.modalInfo.subOrders[i].quantity + "</strong> <br><br>"
}
},
printButton(firstImg) {
var win = window.open('');
win.document.write('<img src="' + "data:image/svg+xml;base64," + firstImg + '" onload="window.print();window.close()" />');
win.focus();
},
printAllButton(firstImg, modal) {
const s = new XMLSerializer().serializeToString(document.getElementById("ean-13"))
const encodedData = window.btoa(s)
var qrImg = modal.qr
const doc = new jsPDF({
orientation: "landscape",
unit: "in",
format: [1.57, 1.18]
});
var img = new Image();
var img2 = new Image();
img.src = "data:image/svg+xml;base64," + firstImg;
img2.src = "data:image/svg+xml;base64," + encodedData;
var canvas = document.querySelector("canvas")
var canvas2 = document.getElementById("canvas2")
context = canvas.getContext("2d");
canvas.setAttribute('width', 800);
canvas.setAttribute('height', 700);
context2 = canvas2.getContext("2d");
canvas2.setAttribute('width', 800);
canvas2.setAttribute('height', 500);
const pdfWidth = doc.internal.pageSize.getWidth();
const pdfHeight = (300 * pdfWidth) / 400;
// img.onload = function () {
// context.drawImage(img, 0, 0, 800, 700);
// var canvasdata = canvas.toDataURL("image/png");
// for (var i = 0; i < 3; i++) {
// doc.addImage(canvasdata, "PNG", 0, 0.02, pdfWidth, pdfHeight);
// doc.addPage();
// }
// // doc.save("two-by-four.pdf");
// // document.body.appendChild(a);
// // canvas.parentNode.removeChild(canvas);
// };
this.svgString2Image(qrImg, 800, 600, 'png').then(
function (value) {
for (var i = 0; i < 3; i++) {
doc.addImage(value, "PNG", 0, 0.02, pdfWidth, pdfHeight);
doc.addPage();
}
})
img2.onload = function () {
context2.drawImage(img2, 0, 0, 800, 500);
var canvasdata = canvas2.toDataURL("image/png");
const pdfWidth = doc.internal.pageSize.getWidth();
const pdfHeight = (500 * pdfWidth) / 800;
// console.log('widdthh'+pdfWidth)
for (var i = 0; i < 3; i++) {
doc.addImage(canvasdata, "PNG", 0, 0.02, pdfWidth, pdfHeight);
doc.addPage();
}
doc.setFontSize(7);
const myFont = "" // load the *.ttf font file as binary string
// add the font to jsPDF
// doc.addFileToVFS("OpenSans-Regular-normal", myFont);
// doc.addFont("MyFont.ttf", "MyFont", "normal");
doc.setFont("OpenSans");
doc.addFileToVFS('OpenSans-Regular-normal.ttf', this.font);
doc.addFont('OpenSans-Regular-normal.ttf', 'OpenSans-Regular', 'normal');
doc.setFont("OpenSans-Regular");
let color = modal.color.length > 0 ? "Цвет заказа: " + modal.color : ""
for (var i = 0; i < modal.subOrders.length; i++) {
doc.text(0.1, 0.2, modal.store_name + " " + "code: " + modal.code + "; " + modal.subOrders[i].name + "; " + color, { maxWidth: 1.0 });
}
setTimeout(function () {
window.open(doc.output('bloburl'), '_blank');
}, 2000);
axios.get("api/wildberries/markPrinted.php?code=" + modal.code).then(response => {
isLoaded = true
$.notify("Этикетка распечатана", "success");
this.info.find(item => {
if (item.code == code) {
item.printed = true;
}
})
})
.catch(function (error) {
if (error.response.status == 403) {
location.reload()
}
});
// doc.save("Этикетка "+modal.code+".pdf");
// document.body.appendChild(a);
// canvas.parentNode.removeChild(canvas);
};
},
statusColor(status) {
return (status == 0 ? "red" : (status == 1) ? "orange" : (status == 2) ? "green" : "grey")
},
stockColor(amount) {
return (amount >= 5 ? "green" : (amount >= 3) ? "orange" : (amount >= 0) ? "red" : "grey")
},
statusBackgroundColor(item) {
return ((item.userStatus == 3 || item.userStatus == 1) ? "grey" : item.status == 0 ? "greenBackground" : (item.status == 1) ? "orangeBackground" : (item.status == 2) ? "purpleBackground" : "grey")
},
printedBackgroundColor(status) {
return (status == 1 ? "green" : (status == 0) ? "red" : "grey")
},
printSecondCodeButton(code) {
const s = new XMLSerializer().serializeToString(document.getElementById("ean-13"))
const encodedData = window.btoa(s)
// console.log(encodedData)
var win = window.open('');
win.document.write('<img src="' + "data:image/svg+xml;base64," + encodedData + '" onload="window.print();window.close()" />');
win.focus();
},
printGoodInfornation(order, code) {
var printWindow = window.open();
printWindow.document.open('text/plain')
let color = order.color.length > 0 ? "Цвет заказа: " + order.color : ""
printWindow.document.write(order.subOrders[0].name + "; " + color);
printWindow.document.close();
printWindow.focus();
printWindow.print();
printWindow.close();
axios.get("api/wildberries/markPrinted.php?code=" + code).then(response => {
isLoaded = true
$.notify("Этикетка распечатана", "success");
this.info.find(item => {
if (item.code == code) {
item.printed = true;
}
})
})
.catch(function (error) {
if (error.response.status == 403) {
location.reload()
}
})
},
getLinkBy(nmId) {
return "https://www.wildberries.ru/catalog/" + nmId + "/detail.aspx";
},
sendOrdersToPacking() {
axios.post("api/wildberries/addToSupply.php", {
"orders": this.checkedOrders
}).then(response => {
const data = response.data
// console.log(data)
$.notify("Добавлено, перезагрузите страницу", "success");
location.reload();
}).catch(function (error) {
$.notify("Произошла ошибка, перезагрузите страницу", "danger");
})
},
createSupply() {
axios.post("api/wildberries/createSupply.php", {
"orders": this.checkedOrders
}).then(response => {
const data = response.data
// console.log(data)
$.notify(data, "success");
location.reload();
}).catch(function (error) {
console.log(error.response.data.response)
if (error.response) {
$.notify("" + error.response.data.response.errorText, "danger");
} else {
$.notify("Произошла ошибка, перезагрузите страницу" + error.message, "error");
}
})
},
closeSupply() {
axios.post("api/wildberries/closeSupply.php").then(response => {
const data = response.data
// console.log(data)
$.notify(response.data, "success");
this.getData()
}).catch(function (error) {
$.notify("Произошла ошибка, перезагрузите страницу", "danger");
})
},
restoreModalStates() {
document.getElementById("sendSpinner").classList.add('hidden')
// document.getElementById("okImage").classList.add('hidden')
},
getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
},
changeSelection() {
this.page = 1
document.cookie = "wildberries_store_selection=" + this.selectedStore
this.getData()
},
changeStock(item) {
console.log("item", item)
axios.post("api/wildberries/updateStock.php", {
"barcode": item.item_barcode,
"stock": item.stock,
"warehouseId": item.warehouseId
}).then(response => {
const data = response.data
// console.log(data)
$.notify("Остаток изменен, система обновится через 10 минут", "success");
}).catch(function (error) {
$.notify("Произошла ошибка, перезагрузите страницу", "danger");
})
},
deleteStock(item) {
console.log("item", item)
axios.post("api/wildberries/deleteStock.php", {
"barcode": item.item_barcode,
"stock": item.stock
}).then(response => {
const data = response.data
// console.log(data)
$.notify("Остаток изменен, система обновится через 4 минуты", "success");
}).catch(function (error) {
$.notify("Произошла ошибка, перезагрузите страницу", "danger");
})
},
changePrice(item) {
console.log(item)
axios.post("api/wildberries/updatePrice.php", {
"price": item.changedPrice,
"nmId": item.nmId
}).then(response => {
const data = response.data
// console.log(data)
$.notify("Цена изменена успешно:" + data, "success");
}).catch(function (error) {
$.notify("Произошла ошибка: " + error.response.data, "danger");
})
},
addDiscount(item) {
console.log(item)
axios.post("api/wildberries/updateDiscount.php", {
"discount": Number(item.discount),
"nmId": item.nmId
}).then(response => {
const data = response.data
// console.log(data)
$.notify("Скидка изменена успешно:" + data, "success");
}).catch(function (error) {
$.notify("Произошла ошибка: " + error.response.data, "danger");
})
},
selectAllBoxes() {
var checks = document.querySelectorAll("#Checkboxes")
var mainCheckBox = document.getElementById("mainCheckbox")
for (var i = 0; i < checks.length; i++) {
if (mainCheckBox.checked && !checks[i].checked) {
checks[i].click()
}
if (!mainCheckBox.checked && checks[i].checked) {
checks[i].click()
}
}
},
printAllInPage() {
$.notify("Этикетка будет готова через 7 секунд", "success");
this.getDoc().then(
function (value) {
window.open(value.output('bloburl'), '_blank');
},
function (error) { console.log("eror: ", error); }
);
},
myDisplayer(error) {
console.log("error", error);
},
async getDoc() {
const doc = new jsPDF({
orientation: "landscape",
unit: "in",
format: [1.57, 1.18]
});
doc.setFontSize(7);
var actualLength = 0;
// var actualLength = this.info.filter(function(element){
// return element.code == this.checkedOrders.filter(element => element)
// }).length
for (var i = 0; i < this.info.length; i++) {
for (var j = 0; j < this.checkedOrders.length; j++) {
if (this.info[i].code === this.checkedOrders[j]) {
actualLength += 1
}
}
}
console.log("actualLength", actualLength)
return new Promise((resolve, reject) => {
var totalStickers = 0;
for (var j = 0; j < this.checkedOrders.length; j++) {
const innerInfo = this.info.filter(currentItem => {
console.log("currentItem", currentItem)
return currentItem.code == this.checkedOrders[j]
})[0]
console.log("innerInfo", innerInfo)
totalStickers += 1
console.log("Order", this.checkedOrders)
JsBarcode("#ean-13", innerInfo.item_barcode, { format: "ean13" });
const s = new XMLSerializer().serializeToString(document.getElementById("ean-13"))
const encodedData = window.btoa(s)
doc.addFileToVFS('OpenSans-Regular-normal.ttf', this.font);
doc.addFont('OpenSans-Regular-normal.ttf', 'OpenSans-Regular', 'normal');
doc.setFont("OpenSans-Regular");
console.log(innerInfo)
console.log('before')
encodeSvg = "";
this.svgString2Image(encodedData, 400, 300, 'png')
.then(
function (value) {
encodeSvg = value;
var pdfWidth = doc.internal.pageSize.getWidth();
var pdfHeight = (300 * pdfWidth) / 400;
const firstImg = innerInfo.shtrih
const qrImg = innerInfo.qr
for (var i = 0; i < 3; i++) {
console.log("qrImg", i)
doc.addImage(qrImg, "PNG", 0, 0.02, pdfWidth, pdfHeight);
doc.addPage();
}
pdfHeight = (150 * pdfWidth) / 400;
for (var i = 0; i < 3; i++) {
doc.addImage(encodeSvg, "PNG", 0, 0.02, pdfWidth, pdfHeight);
doc.setFontSize(5);
var txtUnder = innerInfo.store_name + " \n" + "code: " + innerInfo.code + "; \n" + "Артикул: " + innerInfo.article + ";\n" + innerInfo.subOrders[0].name + "; "
doc.text(0.1, 0.7, txtUnder, { maxWidth: 1.0 })
doc.addPage();
console.log('conf')
txtUnder = ""
doc.setFontSize(7);
}
let color = innerInfo.color.length > 0 ? "Цвет заказа: " + innerInfo.color : ""
var txt = innerInfo.store_name + " " + "code: " + innerInfo.code + "; " + innerInfo.subOrders[0].name + "; " + color
txt = ""
var txt2 = "Дорогой друг! \nСпасибо за заказ. Мы очень рады, что Вы выбрали именно нас! Примите от нас в знак дружбы небольшой подарок! \n PS. Если Вам понравилось, будем счастливы положительному отзыву!"
doc.setFontSize(6);
doc.text(0.1, 0.15, txt2, { maxWidth: 1.1 })
txt = ""
doc.addPage()
},
function (error) { myDisplayer(error); }
)
.catch(function (error) {
console.log(error)
})
console.log("after")
axios.get("api/wildberries/markPrinted.php?code=" + innerInfo.code).then(response => {
isLoaded = true
// $.notify("Этикетка распечатана", "success");
this.info.find(item => {
})
})
.catch(function (error) {
// if (error.response.status == 403) {
// $.notify("Не удалось отметить заказ:"++" как распечатанный", "success");
// }
})
// if (totalStickers == actualLength) {
// doc.deletePage(totalStickers);
// c
// }
}
const myTimeout = setTimeout(function () {
doc.deletePage(doc.getNumberOfPages());
resolve(doc);
}, 7000);
})
},
async svgString2Image(svgString, width, height, format) {
return new Promise((resolve, reject) => {
// set default for format parameter
format = format ? format : 'png';
// SVG data URL from SVG string
var svgData = 'data:image/svg+xml;base64,' + svgString;
// create canvas in memory(not in DOM)
var canvas = document.createElement('canvas');
// get canvas context for drawing on canvas
var context = canvas.getContext('2d');
// set canvas size
canvas.width = width;
canvas.height = height;
// create image in memory(not in DOM)
var image = new Image();
// later when image loads run this
// start loading SVG data into in memory image
image.src = svgData;
image.onload = function () { // async (happens later)
// clear canvas
context.clearRect(0, 0, width, height);
// draw image with SVG data to canvas
context.drawImage(image, 0, 0, width, height);
// snapshot canvas as png
var pngData = canvas.toDataURL('image/' + format);
// pass png data URL to callback
resolve(pngData);
}; // end async
});
},
}
})
Editor is loading...