@@ -106,53 +133,46 @@ var reg=["Центральный","Алматинский","Южный","Сев
var st={wait:"Не начато",warn:"В процессе",late:"Просрочено",done:"Исполнено"};
var ms=["2026-01","2026-02","2026-03","2026-04","2026-05","2026-06","2026-07","2026-08","2026-09","2026-10","2026-11","2026-12"];
var mn=["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"];
+var titles={ev:"Мероприятия",an:"Аналитика",rp:"Отчётность",ai:"ИИ-помощник"};
function M(i){var p=ms[i].split("-");return mn[parseInt(p[1])-1]+" "+p[0]}
function esc(s){return s.replace(/&/g,"&").replace(//g,">")}
function nl(s){return esc(s).replace(/\n/g," ")}
function sb(s){var m={done:"g",warn:"a",late:"r",wait:"w"};return''+st[s]+''}
function daysLeft(e){
- if(e.s==="done")return"";
- if(e.s==="late")return'ПРОСРОЧЕНО';
+ if(e.s==="done")return'✓';
+ if(e.s==="late")return'ПРОСРОЧЕНО';
var p=e.due.split(".");if(p.length!==3)return"";
var d=new Date(parseInt(p[2]),parseInt(p[1])-1,parseInt(p[0]));
var days=Math.round((d-new Date())/86400000);
- if(days<0)return''+Math.abs(days)+' дн. просрочки';
- if(days<=7)return''+days+' дн.';
- if(days<=14)return''+days+' дн.';
- if(days<=30)return''+days+' дн.';
+ if(days<0)return''+Math.abs(days)+' дн.';
+ if(days<=7)return''+days+' дн.';
+ if(days<=14)return''+days+' дн.';
+ if(days<=30)return''+days+' дн.';
return days+' дн.';
}
-function rowClass(e){
- if(e.s==="late")return"rd";if(e.s==="done")return"";
- var p=e.due.split(".");if(p.length!==3)return"";
- var d=new Date(parseInt(p[2]),parseInt(p[1])-1,parseInt(p[0]));
- var days=Math.round((d-new Date())/86400000);
- if(days<=14)return"rd";if(days<=30)return"am";return"";
-}
+function rowClass(e){if(e.s==="late")return"rd";if(e.s==="done")return"";var p=e.due.split(".");if(p.length!==3)return"";var d=new Date(parseInt(p[2]),parseInt(p[1])-1,parseInt(p[0]));var days=Math.round((d-new Date())/86400000);if(days<=14)return"rd";if(days<=30)return"am";return""}
-var U={"curator@telecom.kz":{n:"Куратор",b:0,r:"cur"},"dpp@telecom.kz":{n:"Директор ДПБ",b:0,r:"br"},"ahmetov@telecom.kz":{n:"Ахметов К.Т.",b:6,r:"br"},"serikov@telecom.kz":{n:"Сериков А.М.",b:1,r:"br"},"nurlanov@telecom.kz":{n:"Нурланов Д.С.",b:8,r:"br"},"aliev@telecom.kz":{n:"Алиев Г.С.",b:4,r:"br"},"tulegenov@telecom.kz":{n:"Тулегенов Е.А.",b:2,r:"br"},"saparov@telecom.kz":{n:"Сапаров А.Д.",b:3,r:"br"},"maratov@telecom.kz":{n:"Маратов Ж.К.",b:5,r:"br"},"iskakov@telecom.kz":{n:"Искаков Р.Н.",b:7,r:"br"}};
-var cu=null,ev=null,cm=5,cr=0,esi=-1,ex={},chatHistory=[];
+var U={"curator@telecom.kz":{n:"Куратор ПБ",b:0,r:"cur"},"dpp@telecom.kz":{n:"Директор ДПБ",b:0,r:"br"},"ahmetov@telecom.kz":{n:"Ахметов К.Т.",b:6,r:"br"},"serikov@telecom.kz":{n:"Сериков А.М.",b:1,r:"br"},"nurlanov@telecom.kz":{n:"Нурланов Д.С.",b:8,r:"br"},"aliev@telecom.kz":{n:"Алиев Г.С.",b:4,r:"br"},"tulegenov@telecom.kz":{n:"Тулегенов Е.А.",b:2,r:"br"},"saparov@telecom.kz":{n:"Сапаров А.Д.",b:3,r:"br"},"maratov@telecom.kz":{n:"Маратов Ж.К.",b:5,r:"br"},"iskakov@telecom.kz":{n:"Искаков Р.Н.",b:7,r:"br"}};
+var cu=null,ev=null,cm=5,esi=-1,ex={},chatHistory=[];
-function getMD(id,ri,si){ri=ri||0;var k=si>=0?"sf_"+id+"_s"+si+"_r"+ri:"sf_"+id+"_r"+ri;var r=localStorage.getItem(k);return r?JSON.parse(r):{}}
-function setMD(id,o,ri,si){ri=ri||0;var k=si>=0?"sf_"+id+"_s"+si+"_r"+ri:"sf_"+id+"_r"+ri;localStorage.setItem(k,JSON.stringify(o))}
+function getMD(id,si){var k=si>=0?"sf_"+id+"_s"+si:"sf_"+id;var r=localStorage.getItem(k);return r?JSON.parse(r):{}}
+function setMD(id,o,si){var k=si>=0?"sf_"+id+"_s"+si:"sf_"+id;localStorage.setItem(k,JSON.stringify(o))}
function gsc(id){var r=localStorage.getItem("ss_"+id);return r?JSON.parse(r):[]}
function ssc(id,a){localStorage.setItem("ss_"+id,JSON.stringify(a))}
-// ===== AUTH =====
function doLogin(){var e=document.getElementById("lem").value.trim().toLowerCase();if(U[e]){cu={em:e,n:U[e].n,b:U[e].b,r:U[e].r};localStorage.setItem("su",JSON.stringify(cu));showApp()}else document.getElementById("lerr").style.display="block"}
function doLogout(){localStorage.removeItem("su");cu=null;document.getElementById("loginBox").style.display="flex";document.getElementById("app").style.display="none"}
-function showApp(){document.getElementById("loginBox").style.display="none";document.getElementById("app").style.display="block";document.getElementById("ul").innerHTML=""+cu.n+" · "+(cu.r==="cur"?"Все":br[cu.b]);loadEvents()}
+function showApp(){document.getElementById("loginBox").style.display="none";document.getElementById("app").style.display="flex";document.getElementById("ul").textContent=cu.n;loadEvents()}
-// ===== DATA =====
-function loadEvents(){var s=localStorage.getItem("se3");if(s){try{ev=JSON.parse(s);renderEv();return}catch(e){}}var x=new XMLHttpRequest();x.open("GET","data.json",true);x.onload=function(){if(x.status===200){try{ev=JSON.parse(x.responseText);saveEv()}catch(e){ev=[]}};renderEv()};x.onerror=function(){ev=[];renderEv()};x.send()}
-function saveEv(){localStorage.setItem("se3",JSON.stringify(ev||[]))}
+function loadEvents(){var s=localStorage.getItem("se4");if(s){try{ev=JSON.parse(s);renderEv();return}catch(e){}}var x=new XMLHttpRequest();x.open("GET","data.json",true);x.onload=function(){if(x.status===200){try{ev=JSON.parse(x.responseText);saveEv()}catch(e){ev=[]}};renderEv()};x.onerror=function(){ev=[];renderEv()};x.send()}
+function saveEv(){localStorage.setItem("se4",JSON.stringify(ev||[]))}
-// ===== TABS =====
function switchPg(n){
- document.querySelectorAll(".tab").forEach(function(t){t.classList.remove("on")});
+ document.querySelectorAll(".sidebar nav a").forEach(function(a){a.classList.remove("on")});
document.querySelector('[data-pg="'+n+'"]').classList.add("on");
document.querySelectorAll(".pg").forEach(function(p){p.classList.remove("on")});
document.getElementById("pg-"+n).classList.add("on");
+ document.getElementById("pageTitle").textContent=titles[n];
if(n==="ev")renderEv();else if(n==="an")renderAn();else if(n==="rp")renderRp();else if(n==="ai")renderAi();
}
@@ -161,205 +181,135 @@ function toggleEx(id){ex[id]=!ex[id];renderEv()}
function ts(id,si,chk){var s=gsc(id);if(chk&&s.indexOf(si)<0)s.push(si);else if(!chk)s=s.filter(function(x){return x!==si});ssc(id,s);var e=null;for(var i=0;i=0||br[e.b].toLowerCase().indexOf(sr2)>=0});
- if(bf)list=list.filter(function(e){return e.b===parseInt(bf)});
- nu();
-
- var h="
";
- h+="";
- h+="";
- h+="
";
// TOP problems
var problems=late.concat(all.filter(function(e){return e.s==="warn"&&e.p<30})).sort(function(a,b){return a.p-b.p}).slice(0,10);
- if(problems.length){
- h+="
ТОП проблемных мероприятий
№
Мероприятие
Филиал
Статус
Срок
";
- problems.forEach(function(e){h+="
"+e.id+"
"+esc(e.t.slice(0,80))+"...
"+br[e.b]+"
"+sb(e.s)+"
"+daysLeft(e)+"
"});
- h+="
";
- }
-
- // Quantities
- var tq=0,rq={0:0,1:0,2:0,3:0,4:0,5:0};
- all.forEach(function(e){reg.forEach(function(_,ri){var d=getMD(e.id,ri,-1);for(var k in d){if(d.hasOwnProperty(k)&&d[k]){tq+=d[k].qty||0;rq[ri]+=d[k].qty||0}if(e.sub)e.sub.forEach(function(si){var sd=getMD(e.id,ri,si);for(var sk in sd){if(sd.hasOwnProperty(sk)&&sd[sk]){tq+=sd[sk].qty||0;rq[ri]+=sd[sk].qty||0}}})}})});
- 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
📊 Сводка
Выполнено
"+dp+"%
Просрочено
"+late.length+"
Всего
"+all.length+"
";
+ var h="
🤖 ИИ-помощник по производственной безопасности
Анализ исполнения Плана мероприятий. Задайте вопрос — получу нужную информацию из системы.