Добавлена функция сохранения истории обработки территорий
This commit is contained in:
@@ -142,15 +142,25 @@ const Card = {
|
||||
apt.status = msg.data.status;
|
||||
apt.description = msg.data.description;
|
||||
apt.updated_at = msg.data.updated_at;
|
||||
|
||||
if (!el) return;
|
||||
|
||||
let date = new Date(msg.data.updated_at);
|
||||
date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
|
||||
document.getElementById(`date_${id}`).value = date.toISOString().slice(0, 16);
|
||||
|
||||
} else if (msg.type === "apartment") {
|
||||
if (!el) return;
|
||||
|
||||
document.getElementById(`card_${id}`).style = `background:${bg};color:${color};border:1px solid ${color}`;
|
||||
el.value = msg.data.status;
|
||||
el.style = `background:${bg};color:${color};border:1px solid ${color}`;
|
||||
document.getElementById(`description_${id}`).value = msg.data.description;
|
||||
document.getElementById(`date_text_${id}`).innerText = formattedDateTime(msg.data.updated_at);
|
||||
|
||||
}
|
||||
|
||||
if (!el) return;
|
||||
document.getElementById(`card_${id}`).style = `background:${bg};color:${color};border:1px solid ${color}`;
|
||||
el.value = msg.data.status;
|
||||
el.style = `background:${bg};color:${color};border:1px solid ${color}`;
|
||||
document.getElementById(`description_${id}`).value = msg.data.description;
|
||||
|
||||
},
|
||||
|
||||
messApartment({ number, id, update, time }) {
|
||||
@@ -205,6 +215,7 @@ const Card = {
|
||||
|
||||
const statusEl = document.getElementById(`status_${id}`);
|
||||
const descEl = document.getElementById(`description_${id}`);
|
||||
const dateEl = document.getElementById(`date_text_${id}`);
|
||||
|
||||
let date = () => {
|
||||
if (!update && !time) {
|
||||
@@ -212,7 +223,8 @@ const Card = {
|
||||
} else if (update && !time) {
|
||||
return getTimeInSeconds();
|
||||
} else if (update && time) {
|
||||
return getTimeInSeconds(time);
|
||||
const ts = new Date(time).getTime();
|
||||
return getTimeInSeconds(ts);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,6 +235,7 @@ const Card = {
|
||||
const [bg, color] = Card.color_status[apt.status];
|
||||
statusEl.style = `background:${bg};color:${color};border:1px solid ${color}`;
|
||||
|
||||
|
||||
const message = {
|
||||
event: 'message',
|
||||
id: getTimeInSeconds(),
|
||||
@@ -487,7 +500,7 @@ const Card = {
|
||||
// map_card.getZoom()
|
||||
|
||||
// console.log(data.zoom);
|
||||
|
||||
|
||||
|
||||
Card.listBuilding = await this.loadAPI({ url: `${CONFIG.api}building/${homestead_id}` });
|
||||
|
||||
@@ -496,42 +509,6 @@ const Card = {
|
||||
return labels.map((txt, i) => `<option value="${i}" ${i === selected ? "selected" : ""}>${txt}</option>`).join("");
|
||||
};
|
||||
|
||||
|
||||
// for (let i = 0; i < Card.listBuilding.length; i++) {
|
||||
// const element = Card.listBuilding[i];
|
||||
// const [bg, color] = Card.color_status[element.status];
|
||||
// const style = `background:${bg};color:${color};border:1px solid ${color}`;
|
||||
|
||||
// const div = document.createElement('div');
|
||||
|
||||
// const redDot = L.divIcon({
|
||||
// className: "leaflet_drop",
|
||||
// html: `<div id="redDot_${element.id}" style='background:${bg};border:2px solid ${color}'></div>`,
|
||||
// iconSize: [16, 16],
|
||||
// iconAnchor: [8, 8]
|
||||
// });
|
||||
|
||||
// div.className = `card_info card_info_homestead`;
|
||||
// div.id = `card_${element.id}`;
|
||||
// div.style = style;
|
||||
|
||||
// div.innerHTML = `
|
||||
// <div class="info">
|
||||
// <select id="status_${element.id}" onchange="Card.cloud.messBuildings({id:${element.id},update:true})" style="${style}">
|
||||
// ${statusOptions(element.status)}
|
||||
// </select>
|
||||
// <button id="date_${element.id}" onclick="Card.dateEditor.open({id:${element.id},updated_at:${element.updated_at}})">
|
||||
// <p id="date_text_${element.id}">${formattedDateTime(element.updated_at)}</p>
|
||||
// <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M 22.828125 3 C 22.316375 3 21.804562 3.1954375 21.414062 3.5859375 L 19 6 L 24 11 L 26.414062 8.5859375 C 27.195062 7.8049375 27.195062 6.5388125 26.414062 5.7578125 L 24.242188 3.5859375 C 23.851688 3.1954375 23.339875 3 22.828125 3 z M 17 8 L 5.2597656 19.740234 C 5.2597656 19.740234 6.1775313 19.658 6.5195312 20 C 6.8615312 20.342 6.58 22.58 7 23 C 7.42 23.42 9.6438906 23.124359 9.9628906 23.443359 C 10.281891 23.762359 10.259766 24.740234 10.259766 24.740234 L 22 13 L 17 8 z M 4 23 L 3.0566406 25.671875 A 1 1 0 0 0 3 26 A 1 1 0 0 0 4 27 A 1 1 0 0 0 4.328125 26.943359 A 1 1 0 0 0 4.3378906 26.939453 L 4.3632812 26.931641 A 1 1 0 0 0 4.3691406 26.927734 L 7 26 L 5.5 24.5 L 4 23 z"></path></svg>
|
||||
// </button>
|
||||
// </div>
|
||||
// <textarea id="description_${element.id}" onchange="Card.cloud.messBuildings({id:${element.id}})" placeholder="Коротка нотатка.">${element.description || ""}</textarea>
|
||||
// `;
|
||||
|
||||
// L.marker(element.geo, { icon: redDot }).addTo(map_card)
|
||||
// .bindPopup(div);
|
||||
// }
|
||||
|
||||
for (let i = 0; i < Card.listBuilding.length; i++) {
|
||||
const element = Card.listBuilding[i];
|
||||
const [bg, color] = Card.color_status[element.status];
|
||||
@@ -567,7 +544,7 @@ const Card = {
|
||||
<select id="status_${element.id}" onchange="Card.cloud.messBuildings({id:${element.id},update:true})" style="${style}">
|
||||
${statusOptions(element.status)}
|
||||
</select>
|
||||
<input type="datetime-local" id="date_${element.id}" placeholder="Дата" onchange="Card.cloud.messBuildings({id:${element.id}})" value="${date.toISOString().slice(0, 16)}">
|
||||
<input type="datetime-local" id="date_${element.id}" placeholder="Дата" onchange="Card.cloud.messBuildings({id:${element.id},update:true, time: this.value })" value="${date.toISOString().slice(0, 16)}">
|
||||
</div>
|
||||
<textarea id="description_${element.id}" onchange="Card.cloud.messBuildings({id:${element.id}})" placeholder="Коротка нотатка.">${element.description || ""}</textarea>
|
||||
`;
|
||||
|
||||
@@ -13,6 +13,11 @@
|
||||
</svg>
|
||||
<span>Конструктор</span>
|
||||
</a>
|
||||
|
||||
<button onclick="Territory.report()">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M13.13,2H5.958c-1.1,0-2,0.9-2,2v16c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V8.828c0-0.53-0.211-1.039-0.586-1.414l-4.828-4.828 C14.169,2.211,13.66,2,13.13,2z M11.255,17.711l-1.297-1.297l-1.251,1.293c-0.39,0.39-1.024,0.39-1.414,0l0,0 c-0.39-0.39-0.39-1.024,0-1.414l1.958-1.989c0.39-0.396,1.027-0.398,1.42-0.006l1.287,1.287l2.335-2.293 c0.39-0.39,1.024-0.39,1.414,0l0,0c0.39,0.39,0.39,1.024,0,1.414l-3.042,3.008C12.274,18.102,11.644,18.1,11.255,17.711z M12.958,9 V3.5l5.5,5.5H12.958z"/></svg>
|
||||
<span>Звіт опрацьовання</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="list-controls">
|
||||
|
||||
@@ -116,7 +116,7 @@ const Territory = {
|
||||
const person = working
|
||||
? `<span>Територію опрацьовує:</span> <p>${element.history.name === 'Групова' ? 'Група ' + element.history.group_id : element.history.name}</p>`
|
||||
: `<span>Територія не опрацьовується</span>`;
|
||||
|
||||
|
||||
return `
|
||||
<div class="card">
|
||||
<i style="background-image: url(https://sheep-service.com/cards/house/T${element.house.id}.webp);"></i>
|
||||
@@ -248,5 +248,32 @@ const Territory = {
|
||||
|
||||
Territory.house.setHTML();
|
||||
Territory.homestead.setHTML();
|
||||
},
|
||||
report: async () => {
|
||||
const uuid = localStorage.getItem("uuid");
|
||||
const url = `${CONFIG.api}generator/report/territories`;
|
||||
await fetch(url, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": uuid
|
||||
}
|
||||
}).then(response => {
|
||||
if (!response.ok) throw new Error('Network response was not ok');
|
||||
return response.blob();
|
||||
})
|
||||
.then(blob => {
|
||||
const link = document.createElement('a');
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
link.href = url;
|
||||
link.download = 'report.xlsx';
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
link.remove();
|
||||
window.URL.revokeObjectURL(url);
|
||||
})
|
||||
.catch(err => {
|
||||
console.error('Fetch error:', err);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user