diff --git a/index.html b/index.html index 513158c..14fb75e 100644 --- a/index.html +++ b/index.html @@ -228,13 +228,55 @@ function dAnHTML(){var all=ev||[];var h=""+M(i)+""; + var h="

📥 Сводный отчёт

"; + h+="
"; h+="

Хранилище: "+(b>1048576?(b/1048576).toFixed(1)+" МБ":(b/1024).toFixed(0)+" КБ")+"

"; + // Monthly sign-off + h+="

✍️ Подписание отчёта по месяцу

При подписании формируется сводный отчёт за месяц для отправки в HSE Samruk Kazyna

"; h+=" "; - document.getElementById("pg-rp").innerHTML=h} -function dCSV(){var f=parseInt(document.getElementById("rf").value),t=parseInt(document.getElementById("rt").value),all=ev||[],csv="\uFEFF№;Филиал;Мероприятие;Статус;Осталось;Срок\n";all.forEach(function(e){csv+=e.id+";"+br[e.b]+";\""+e.t.replace(/"/g,'""')+"\";"+st[e.s]+";"+daysLeft(e).replace(/<[^>]*>/g,"")+";"+e.due+"\n"});var a=document.createElement("a");a.href=URL.createObjectURL(new Blob([csv]));a.download="otchet.csv";a.click()} + document.getElementById("pg-rp").innerHTML=h;showSignInfo()} +function dDOC(){var f=parseInt(document.getElementById("rf").value),t=parseInt(document.getElementById("rt").value),all=ev||[]; + var h=""; + h+="

Сводный отчёт по производственной безопасности

АО «Казахтелеком» | Период: "+M(f)+" — "+M(t)+" | Сформирован: "+new Date().toLocaleDateString()+"

"; + h+="

1. Общая статистика

"; + h+=""; + h+=""; + h+="
ПоказательЗначение
Всего мероприятий"+all.length+"
Исполнено"+all.filter(function(e){return e.s==="done"}).length+"
Просрочено"+all.filter(function(e){return e.s==="late"}).length+"
"; + h+="

2. Детализация по мероприятиям

"; + all.forEach(function(e){h+=""}); + h+="
МероприятиеФилиалСтатусСрок
"+e.id+""+esc(e.t)+""+br[e.b]+""+st[e.s]+""+e.due+"

3. Отчёты по месяцам

"; + all.forEach(function(e){var has=false;for(var i=f;i<=t;i++){var m=ms[i],d=getMD(e.id,-1);if(d[m]&&d[m].report){has=true;h+="

№"+e.id+" — "+M(i)+": "+esc(d[m].report)+"

"}}if(e.sub)e.sub.forEach(function(s,si){var sd=getMD(e.id,si);for(var i=f;i<=t;i++){var m=ms[i];if(sd[m]&&sd[m].report)h+="

"+s.l+") — "+M(i)+": "+esc(sd[m].report)+"

"}})}); + h+="

Подготовлено с использованием ИИ-агента мониторинга ПБ

"; + var a=document.createElement("a");a.href=URL.createObjectURL(new Blob(["\uFEFF"+h],{type:"application/msword"}));a.download="otchet_pb.doc";a.click()} + +function dPDF(){var f=parseInt(document.getElementById("rf").value),t=parseInt(document.getElementById("rt").value),all=ev||[]; + var h=""; + h+="

Сводный отчёт по производственной безопасности

АО «Казахтелеком» | Период: "+M(f)+" — "+M(t)+" | "+new Date().toLocaleDateString()+"

"; + h+="

Общая статистика

ПоказательЗначение
Всего"+all.length+"
Исполнено"+all.filter(function(e){return e.s==="done"}).length+"
Просрочено"+all.filter(function(e){return e.s==="late"}).length+"
"; + h+="

Мероприятия

"; + all.forEach(function(e){h+=""});h+="
МероприятиеФилиалСтатусСрок
"+e.id+""+esc(e.t)+""+br[e.b]+""+st[e.s]+""+e.due+"

Подготовлено ИИ-агентом мониторинга ПБ

"; + var w=window.open("","_blank","width=1000,height=800");w.document.write(h);w.document.close();setTimeout(function(){w.print()},500)} + +function showSignInfo(){var mi=parseInt((document.getElementById("sm")||{}).value||0);var all=ev||[],mk=ms[mi],tot=0,signed=localStorage.getItem("signed_"+mk); + all.forEach(function(e){var d=getMD(e.id,-1);if(d[mk]&&(d[mk].report||(d[mk].files&&d[mk].files.length)))tot++}); + document.getElementById("signInfo").innerHTML="За "+M(mi)+": отчётов по "+tot+" мероприятиям. "+(signed?"✅ Подписан ("+signed+")":"Не подписан")} + +function signMonth(){var mi=parseInt(document.getElementById("sm").value),mk=ms[mi],all=ev||[],tot=0; + all.forEach(function(e){var d=getMD(e.id,-1);if(d[mk]&&(d[mk].report||(d[mk].files&&d[mk].files.length)))tot++}); + localStorage.setItem("signed_"+mk,new Date().toLocaleDateString()+" — "+cu.n); + // Build summary for HSE + var sum="Сводный отчёт за "+M(mi)+"\nАО «Казахтелеком»\n\n"; + sum+="Мероприятий с отчётами: "+tot+" из "+all.length+"\n"; + sum+="Исполнено: "+all.filter(function(e){return e.s==="done"}).length+"\n"; + sum+="Просрочено: "+all.filter(function(e){return e.s==="late"}).length+"\n\n"; + sum+="Подписал: "+cu.n+"\nДата: "+new Date().toLocaleDateString()+"\n"; + sum+="\n=== Детализация ===\n"; + all.forEach(function(e){var d=getMD(e.id,-1);if(d[mk]&&d[mk].report)sum+="№"+e.id+": "+d[mk].report+"\n"}); + localStorage.setItem("hse_report_"+mk,sum); + alert("✅ Отчёт за "+M(mi)+" подписан!\n\nСводка сохранена. Для отправки в HSE перейдите по ссылке:\nhttps://hse.sk.kz/\n\nТекст отчёта скопирован — вставьте в форму HSE."); + showSignInfo()}(){var f=parseInt(document.getElementById("rf").value),t=parseInt(document.getElementById("rt").value),all=ev||[],csv="\uFEFF№;Филиал;Мероприятие;Статус;Осталось;Срок\n";all.forEach(function(e){csv+=e.id+";"+br[e.b]+";\""+e.t.replace(/"/g,'""')+"\";"+st[e.s]+";"+daysLeft(e).replace(/<[^>]*>/g,"")+";"+e.due+"\n"});var a=document.createElement("a");a.href=URL.createObjectURL(new Blob([csv]));a.download="otchet.csv";a.click()} function dHTML(){var f=parseInt(document.getElementById("rf").value),t=parseInt(document.getElementById("rt").value),all=ev||[],h="Отчёт ПБ

Сводный отчёт ПБ

";all.forEach(function(e){var cl={done:"g",warn:"a",late:"r",wait:""}[e.s];h+="

"+e.id+". "+esc(e.t)+"

"+br[e.b]+" | "+sec[e.sec]+" | Срок: "+e.due+" | "+st[e.s]+"

";var d=getMD(e.id,-1);for(var i=f;i<=t;i++){var m=ms[i];if(d[m]&&d[m].report)h+="
"+M(i)+"

"+esc(d[m].report)+"

"}if(e.sub)e.sub.forEach(function(s,si){var sd=getMD(e.id,si);for(var i=f;i<=t;i++){var m=ms[i];if(sd[m]&&sd[m].report)h+="
"+s.l+") "+M(i)+"

"+esc(sd[m].report)+"

"}});h+="
"});h+="";try{var a=document.createElement("a");a.href=URL.createObjectURL(new Blob(["\uFEFF"+h],{type:"text/html"}));a.download="otchet.html";a.click()}catch(e){alert("Слишком большой отчёт")}} function exp(){var d={events:ev,date:new Date().toISOString(),files:{},sc:{}};for(var i=0;i