diff --git a/index.html b/index.html index 8058314..2d4a8d7 100644 --- a/index.html +++ b/index.html @@ -105,7 +105,7 @@ td{border-bottom:1px solid var(--gray-200)}tr:hover td{background:var(--cyan-50)

АО «Казахтелеком» — мониторинг производственной безопасности

-

curator@telecom.kz (куратор) / admin@telecom.kz / north@telecom.kz (Север) / almaty@telecom.kz (Алматы) — пароль любой

+

curator@telecom.kz (куратор, всё) / dpp@telecom.kz (ДПБ, ваш филиал) / пароль любой

Неверная почта или пароль

@@ -160,6 +160,7 @@ function pct(p){var c=p>=80?"var(--green)":p>=40?"var(--amber)":"var(--red)";ret var users={ "curator@telecom.kz":{name:"Куратор Плана",branch:0,role:"curator",region:-1}, + "dpp@telecom.kz":{name:"Директор ДПБ (Вы)",branch:0,role:"branch",region:0}, "admin@telecom.kz":{name:"Администратор",branch:0,role:"admin",region:-1}, "ahmetov@telecom.kz":{name:"Ахметов К.Т.",branch:6,role:"branch",region:4}, "serikov@telecom.kz":{name:"Сериков А.М.",branch:1,role:"branch",region:3}, @@ -295,11 +296,11 @@ function renderDashboard(){ function downloadReport(){ var from=parseInt(document.getElementById("rptFrom").value),to=parseInt(document.getElementById("rptTo").value); - var my=getMy(),csv="№;Мероприятие;Подпункт;Раздел;Дивизион;Статус;Прогресс;Срок;Факт;Отчёт (текст);Файлы\n"; + var my=getMy(),csv="№;Регион;Филиал;Мероприятие;Подпункт;Раздел;Статус;Прогресс;Срок;Факт;Отчёт (текст);Файлы\n"; my.forEach(function(e){ function addRow(subLabel,subIdx){var rep="",fls="",d=getMD(e.id,subIdx); for(var i=from;i<=to;i++){var m=months[i];if(d[m]){if(d[m].report)rep+=M(i)+": "+d[m].report.replace(/"/g,'""')+"; ";if(d[m].files&&d[m].files.length)fls+=M(i)+": "+d[m].files.map(function(f){return f.name}).join(", ")+"; "}} - csv+=e.id+';"'+e.t.replace(/"/g,'""')+'";'+(subLabel||"общее")+';'+sections[e.sec]+';'+branches[e.b]+';'+statusMap[e.s]+';'+e.p+'%;'+e.due+';'+(e.done||"—")+';"'+rep+'";"'+fls+'"\n';} + csv+=e.id+';'+regions[branchRegion[e.b]]+';'+branches[e.b]+';"'+e.t.replace(/"/g,'""')+'";'+(subLabel||"общее")+';'+sections[e.sec]+';'+statusMap[e.s]+';'+e.p+'%;'+e.due+';'+(e.done||"—")+';"'+rep+'";"'+fls+'"\n';} addRow("",-1); if(e.sub) e.sub.forEach(function(s,i){ addRow(s.l,i); }); }); @@ -314,7 +315,7 @@ function downloadHTML(){ my.forEach(function(e){ var scls={done:"g",warn:"a",late:"r",wait:"w"}[e.s]; h+='

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

'; - h+='
Раздел: '+sections[e.sec]+'Дивизион: '+branches[e.b]+'Срок: '+e.due+'Факт: '+(e.done||"—")+'Прогресс: '+e.p+'%'+statusMap[e.s]+'
'; + h+='
Регион: '+regions[branchRegion[e.b]]+'Филиал: '+branches[e.b]+'Раздел: '+sections[e.sec]+'Срок: '+e.due+'Факт: '+(e.done||"—")+'Прогресс: '+e.p+'%'+statusMap[e.s]+'
'; h+='
Ответственный: '+esc(e.r)+'
'; // Main event data h+=renderMonthBlock(e.id,-1,"Общие материалы",from,to); @@ -352,18 +353,20 @@ function renderMyEvents(){ h+='
'; var sf=document.getElementById("mySF");sf=sf?sf.value:""; var list=my;if(sf)list=list.filter(function(e){return e.s===sf}); - h+=''; + h+='
Мероприятие / ПодпунктыРазделСрокПрогрессСтатус
'; list.forEach(function(e){ var hasSub = e.sub && e.sub.length; var sc = getSC(e.id); var subDone = hasSub ? sc.length : 0; var subTotal = hasSub ? e.sub.length : 0; h+=''; - h+=''; + h+=''; + h+=''; h+=''; h+=''; h+=''; @@ -440,7 +443,7 @@ function openEdit(id, mi, si){ var html=''; html+='Раздел '+["I","II","III","IV","V"][e.sec]+''; html+='

'+esc(e.t)+'

'; - html+='
Дивизион'+esc(branches[e.b])+'
Ответственный'+esc(e.r)+'
Срок'+e.due+'
Факт'+e.done+'
'; + html+='
Регион'+regions[branchRegion[e.b]]+'
Дивизион'+esc(branches[e.b])+'
Ответственный'+esc(e.r)+'
Срок'+e.due+'
Факт'+e.done+'
'; html+='
'; html+='
'+e.p+'%
'; html+='
';
Мероприятие / ПодпунктыРегионФилиалРазделСрокПрогрессСтатус
'+e.id+''; + h+=''; if(hasSub) h+=''+(expandedEvents[e.id]?'▼':'▶')+''; - h+=''+esc(e.t)+''; + h+=''+esc(e.t)+''; if(hasSub) h+=' ('+subDone+'/'+subTotal+')'; h+=''+regions[branchRegion[e.b]]+''+branches[e.b]+''+["I","II","III","IV","V"][e.sec]+''+e.due+''+pct(e.p)+''+sb(e.s)+'