diff --git a/index.html b/index.html
index a2693c0..6281b02 100644
--- a/index.html
+++ b/index.html
@@ -90,6 +90,7 @@ tr:hover{background:#FAFBFC}
+
Мероприятия
@@ -152,7 +153,13 @@ tr:hover{background:#FAFBFC}
1-е полугодие
2-е полугодие
-
+с
+Январь Февраль Март
+Апрель Май Июнь
+Июль Август Сентябрь
+Октябрь Ноябрь Декабрь
+
+по
Январь Февраль Март
Апрель Май Июнь
Июль Август Сентябрь
@@ -1010,7 +1017,24 @@ function init(){
fb.appendChild(o)
}
}
- if(cu)showApp()
+ if(cu)showApp();
+ showReminders()
+}
+function showReminders(){
+ var remind=[];for(var i=0;i=0)remind.push({e:evs[i],dr:dr})}
+ if(remind.length>0){
+ var rdiv=document.getElementById("reminder_bar");
+ if(!rdiv)return;
+ remind.sort(function(a,b){return a.dr-b.dr});
+ var urgent=remind.filter(function(r){return r.dr<=3});
+ var html="";
+ if(urgent.length)html+="\u26A0 \u0421\u0440\u043E\u0447\u043D\u043E: "+urgent.length+" \u043F\u0443\u043D\u043A\u0442\u043E\u0432 \u043F\u0440\u043E\u0441\u0440\u043E\u0447\u0435\u043D\u043E/\u0441\u0435\u0433\u043E\u0434\u043D\u044F! ";
+ html+="\u0411\u043B\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u0434\u0435\u0434\u043B\u0430\u0439\u043D\u044B: ";
+ var shown=0;
+ for(var i=0;i3&&shown<3){html+="N"+remind[i].e.id+" ("+remind[i].dr+" \u0434\u043D), ";shown++}}
+ rdiv.innerHTML=html;
+ rdiv.style.display="block"
+ }
}
function doLogin(){
@@ -1471,19 +1495,9 @@ function renderAnalytics(){
}
function getFilteredEvs(){
- var period=document.getElementById("rp_period").value;
var statusF=document.getElementById("rp_status").value;
var year=parseInt(document.getElementById("rp_year").value,10)||2026;
- var month=parseInt(document.getElementById("rp_month").value,10)||0;
- var months=[];
- if(period==="month"){months=[month]}
- else if(period==="q1"){months=[0,1,2]}
- else if(period==="q2"){months=[3,4,5]}
- else if(period==="q3"){months=[6,7,8]}
- else if(period==="q4"){months=[9,10,11]}
- else if(period==="h1"){months=[0,1,2,3,4,5]}
- else if(period==="h2"){months=[6,7,8,9,10,11]}
- else if(period==="year"){months=[0,1,2,3,4,5,6,7,8,9,10,11]}
+ var months=getReportMonths();
var r=[];
for(var i=0;i\u041F\u043B\u0430\u043D \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0439 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438 QAZAQtelecom HSE \u0437\u0430 "+periodLabel+"
\u041E\u0442\u0447\u0451\u0442 \u0441\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D: "+new Date().toLocaleDateString("ru-RU")+"
";
+ var months=getReportMonths();
+ var hh="\u041E\u0442\u0447\u0451\u0442 \u041F\u0411 \u0437\u0430 "+periodLabel+" \u041F\u043B\u0430\u043D \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0439 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438 QAZAQtelecom HSE \u0437\u0430 "+periodLabel+"
\u041E\u0442\u0447\u0451\u0442 \u0441\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D: "+new Date().toLocaleDateString("ru-RU")+"
";
for(var i=0;iN"+e.id+". "+esc(e.t)+"";
- hh+="\u0421\u0440\u043E\u043A "+e.due+" \u0421\u0442\u0430\u0442\u0443\u0441 "+stn[e.s]+" \u0424\u0438\u043B\u0438\u0430\u043B "+brs[e.b]+" \u041E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 "+esc(nl2c(e.r))+"
";
- if(e.n)hh+="\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435: "+esc(e.n)+"
";
+ hh+="\u0421\u0440\u043E\u043A "+e.due+" \u0421\u0442\u0430\u0442\u0443\u0441 "+stn[e.s]+"
";
+ if(e.n)hh+="\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435: "+esc(e.n)+"
";
if(e.q)hh+="\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E: "+e.q+"
";
var fhtml="";
- for(var si=-1;si<(e.sub?e.sub.length:0);si++){
- var sk=si>=0?"_s"+si:"";
- for(var bk=0;bk"+esc(f.n)+" ("+Math.round((f.s||0)/1024)+" KB)"
- }}catch(ex){}
+ for(var mi=0;mi=0?"_s"+si:"";
+ var mk="_m"+months[mi];
+ for(var bk=0;bk\uD83D\uDCC4 "+esc(f.n)+" ("+Math.round((f.s||0)/1024)+" KB)"
+ }}catch(ex){}
+ }
}
}
}
@@ -1572,19 +1603,32 @@ function dlHTML(){
}
function dlWord(){
var fl=getFilteredEvs();
- var month=parseInt(document.getElementById("rp_month").value,10)+1;
- var year=document.getElementById("rp_year").value;
- var hh="Отчёт План ПБ "+month+"."+year+" План производственной безопасности AO «Казахтелеком» за "+month+"."+year+"
N Мероприятие Филиал Срок Статус Прогресс Кол-во Примечание ";
+ var periodLabel=getReportPeriod();
+ var months=getReportMonths();
+ var hh="\u041E\u0442\u0447\u0451\u0442 \u041F\u0411 \u0437\u0430 "+periodLabel+" \u041F\u043B\u0430\u043D \u041F\u0411 AO \u00AB\u041A\u0430\u0437\u0430\u0445\u0442\u0435\u043B\u0435\u043A\u043E\u043C\u00BB \u0437\u0430 "+periodLabel+"
";
for(var i=0;i"+e.id+" "+esc(e.t)+" "+brs[e.b]+" "+e.due+" "+stn[e.s]+" "+(e.p||0)+"% "+(e.q||"")+" "+esc(e.n||"")+" "
+ hh+="N"+e.id+". "+esc(e.t)+" ";
+ hh+="\u0421\u0440\u043E\u043A "+e.due+" \u0421\u0442\u0430\u0442\u0443\u0441 "+stn[e.s]+"
";
+ if(e.n)hh+="\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435: "+esc(e.n)+"
";
+ if(e.q)hh+="\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E: "+e.q+"
";
+ var fhtml="";
+ for(var mi=0;mi=0?"_s"+si:"";
+ var mk="_m"+months[mi];
+ for(var bk=0;bk"+esc(f.n)+" ("+Math.round((f.s||0)/1024)+" KB)"}}catch(ex){}}
+ }
+ }
+ }
+ if(fhtml)hh+="\u0424\u0430\u0439\u043B\u044B: "+fhtml+"
";
}
- hh+="
Отчёт сформирован: "+new Date().toLocaleDateString("ru-RU")+"
";
+ hh+="\u041E\u0442\u0447\u0451\u0442 \u0441\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D: "+new Date().toLocaleDateString("ru-RU")+"
";
var blob=new Blob([hh],{type:"application/msword"});
- var a=document.createElement("a");
- a.href=URL.createObjectURL(blob);
- a.download="report_pb_"+year+"_"+month+".doc";
- a.click()
+ var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="report_pb_"+periodLabel.replace(/\s/g,"_")+".doc";a.click()
}
function dlPdf(){
var fl=getFilteredEvs();
@@ -1654,119 +1698,68 @@ function aiSend(){
function aiResp(q){
var total=evs.length;
var done=0,late=0,warn=0;
- for(var i=0;i0){risk.push(evs[i])}
- }
- if(risk.length){
- ans="Менее 30 дней до срока ("+risk.length+"):";
- for(var i=0;i0){risk.push(evs[i])}}
+ var noReport=[];for(var i=0;i0){hasRep=true;break}}if(!hasRep)noReport.push(brs[i])}
+ var critRisk=[];for(var i=0;i0){critRisk.push(evs[i])}}
+ ans="\u0410\u043D\u0430\u043B\u0438\u0437 \u0440\u0438\u0441\u043A\u043E\u0432:";
+ ans+="\n\n\u0412\u044B\u0441\u043E\u043A\u0438\u0439 \u0440\u0438\u0441\u043A \u0441\u0440\u044B\u0432\u0430 (\u22647 \u0434\u043D): "+(critRisk.length?critRisk.length+" \u043F\u0443\u043D\u043A\u0442\u043E\u0432":"\u043D\u0435\u0442");
+ for(var i=0;i0){ans+="\n\n\u0417\u043E\u043D\u0430 \u0440\u0438\u0441\u043A\u0430 (<30 \u0434\u043D): "+risk.length+" \u043F\u0443\u043D\u043A\u0442\u043E\u0432"}
+ if(noReport.length>0){ans+="\n\n\u041D\u0435\u0442 \u043E\u0442\u0447\u0451\u0442\u043E\u0432 \u043E\u0442 \u0444\u0438\u043B\u0438\u0430\u043B\u043E\u0432 ("+noReport.length+"):";for(var i=0;i3)ans+="\n\nРекомендация: срочный штаб по "+crit+" просроченным пунктам."
-
- }else if(ql.indexOf("статус")!==-1||ql.indexOf("состоян")!==-1||ql.indexOf("обстан")!==-1){
- var bySec=[];
- for(var si=0;si3)ans+="\n\n\u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0430\u0446\u0438\u044F: \u0441\u0440\u043E\u0447\u043D\u044B\u0439 \u0448\u0442\u0430\u0431 \u043F\u043E "+crit+" \u043F\u0440\u043E\u0441\u0440\u043E\u0447\u0435\u043D\u043D\u044B\u043C \u043F\u0443\u043D\u043A\u0442\u0430\u043C."
+ }else if(ql.indexOf("\u0441\u0442\u0430\u0442\u0443\u0441")!==-1||ql.indexOf("\u0441\u043E\u0441\u0442\u043E\u044F\u043D")!==-1||ql.indexOf("\u043E\u0431\u0441\u0442\u0430\u043D")!==-1){
+ var bySec=[];for(var si=0;si0)riskCount++}
- ans+="\n- в риске (<30 дней): "+riskCount;
- if(done/total>0.7)ans+="\nОбщая оценка: хорошо";
- else if(done/total>0.4)ans+="\nОбщая оценка: удовлетворительно";
- else ans+="\nОбщая оценка: требует внимания"
-
- }else if(ql.indexOf("пункт")!==-1||ql.indexOf("номер")!==-1){
- var match=ql.match(/\d+/);
- if(match){
- var num=parseInt(match[0],10);
- var found=null;
- for(var i=0;i0)riskCount++}
+ ans+="\n- \u0432 \u0440\u0438\u0441\u043A\u0435 (<30 \u0434\u043D): "+riskCount;
+ if(done/total>0.7)ans+="\n\u041E\u0431\u0449\u0430\u044F \u043E\u0446\u0435\u043D\u043A\u0430: \u0445\u043E\u0440\u043E\u0448\u043E";
+ else if(done/total>0.4)ans+="\n\u041E\u0431\u0449\u0430\u044F \u043E\u0446\u0435\u043D\u043A\u0430: \u0443\u0434\u043E\u0432\u043B\u0435\u0442\u0432\u043E\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u043E";
+ else ans+="\n\u041E\u0431\u0449\u0430\u044F \u043E\u0446\u0435\u043D\u043A\u0430: \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u044F"
+ }else if(ql.indexOf("\u043F\u0443\u043D\u043A\u0442")!==-1||ql.indexOf("\u043D\u043E\u043C\u0435\u0440")!==-1){
+ var match=ql.match(/\d+/);if(match){var num=parseInt(match[0],10);var found=null;for(var i=0;i=0)remind.push({e:evs[i],dr:dr})}
+ remind.sort(function(a,b){return a.dr-b.dr});
+ if(remind.length){ans="\u041D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F ("+remind.length+"):";for(var i=0;i\u0414\u043E\u0441\u0442\u0443\u043F \u0437\u0430\u043F\u0440\u0435\u0449\u0451\u043D
";return}
@@ -1958,15 +1951,15 @@ function dlAnalyticsPPT(){
if(evs[i].s==="done")done++;else if(evs[i].s==="late")late++;else warn++
}
var pct=total?Math.round(done/total*100):0;
- var brd=[];
- for(var i=0;i
"+total+"
\u0412\u0441\u0435\u0433\u043E"+done+"
\u0418\u0441\u043F\u043E\u043B\u043D\u0435\u043D\u043E"+warn+"
\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435"+late+"
\u041F\u0440\u043E\u0441\u0440\u043E\u0447\u0435\u043D\u043E
\u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435: "+pct+"%
\u0420\u0435\u0439\u0442\u0438\u043D\u0433 \u0444\u0438\u043B\u0438\u0430\u043B\u043E\u0432 ";
- for(var i=0;i"+(i+1)+". "+esc(brd[i].n)+" "+brd[i].d+"/"+brd[i].t+"
"+bp+"% "}
- h+="
";
- var blob=new Blob([h],{type:"application/vnd.openxmlformats-officedocument.presentationml.presentation"});
- var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="analytics_"+new Date().toISOString().slice(0,10)+".pptx";a.click()
+ var h="\u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430 HSE QAZAQtelecom HSE \u2014 \u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430 \u041F\u0411 \u0414\u0430\u0442\u0430: "+new Date().toLocaleDateString("ru-RU")+"
"+pct+"%
\u041E\u0431\u0449\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u043D\u0442 \u0438\u0441\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u043F\u043B\u0430\u043D\u0430
"+total+"
\u0412\u0441\u0435\u0433\u043E"+done+"
\u0418\u0441\u043F\u043E\u043B\u043D\u0435\u043D\u043E"+warn+"
\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435"+dueNow+"
\u041F\u0440\u043E\u0441\u0440\u043E\u0447\u0435\u043D\u043E
\u0420\u0435\u0439\u0442\u0438\u043D\u0433 \u0444\u0438\u043B\u0438\u0430\u043B\u043E\u0432 \u2116 \u0424\u0438\u043B\u0438\u0430\u043B \u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043E % ";
+ for(var i=0;i"+(i+1)+" "+esc(brd[i].n)+" "+brd[i].d+"/"+brd[i].t+"
"+bp+"% "}
+ h+="
";
+ var blob=new Blob([h],{type:"application/vnd.ms-powerpoint"});
+ var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="analytics_"+new Date().toISOString().slice(0,10)+".ppt";a.click()
}
function dlAnalyticsPDF(){
var h=document.getElementById("tab_analytics").innerHTML;
@@ -1975,16 +1968,14 @@ function dlAnalyticsPDF(){
w.document.close()
}
function dlAnalyticsWord(){
- var total=evs.length;
- var done=0,late=0,warn=0;
- for(var i=0;iВсего"+total+" Исполнено"+done+" ("+Math.round(done/total*100)+"%) В процессе"+warn+" Просрочено"+late+"