samruk-ai-agent/index.html

121 lines
7.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>План ПБ 2026 — Казахтелеком</title>
<style>
:root{--b:#0F1218;--c:#00E5FF;--w:#fff;--g5:#5B6573;--g1:#F2F4F7;--g2:#E5E7EB;--gn:#10B981;--rd:#EF4444;--am:#F59E0B}
*{box-sizing:border-box;margin:0;padding:0}
body{font:14px/1.4 Arial,sans-serif;color:var(--b);background:var(--g1)}
input,select,textarea,button{font:inherit;outline:none}
.btn{background:var(--c);color:var(--b);padding:10px 20px;border-radius:8px;font-weight:700;font-size:14px;border:none;cursor:pointer}.btn:hover{opacity:.85}
.btn-sm{padding:6px 12px;font-size:12px}.btn-red{background:var(--rd);color:#fff}.btn-gn{background:var(--gn);color:#fff}
#loginBox{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--b)}
#loginBox>div{background:var(--w);border-radius:16px;padding:40px 36px;width:400px;max-width:90vw;text-align:center}
#loginBox h1{font-size:22px;font-weight:800;margin-bottom:4px}
#loginBox h1 span{color:var(--c)}
#loginBox p{color:var(--g5);font-size:13px;margin-bottom:28px}
#loginBox input{display:block;width:100%;padding:12px 14px;border:1px solid var(--g2);border-radius:8px;font-size:14px;margin-bottom:14px}
#app{display:none;max-width:1200px;margin:0 auto;padding:16px}
.top{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:2px solid var(--g2);margin-bottom:16px}
.top b{font-size:18px}.top b span{color:var(--c)}
.top .r{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--g5)}
.tabs{display:flex;gap:4px;margin-bottom:16px}
.tab{padding:10px 20px;border:none;background:var(--w);cursor:pointer;font-size:14px;font-weight:600;color:var(--g5);border-radius:8px 8px 0 0}
.tab.on{color:var(--b);border-bottom:3px solid var(--c)}
.pg{display:none}.pg.on{display:block}
.card{background:var(--w);border-radius:12px;padding:20px;margin-bottom:14px;border:1px solid var(--g2)}
.card h3{font-size:16px;margin-bottom:8px}
.row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.stat{background:var(--w);border-radius:10px;padding:16px 20px;border:1px solid var(--g2);min-width:120px;flex:1;text-align:center}
.stat .n{font-size:26px;font-weight:800}.stat .l{font-size:12px;color:var(--g5)}
.stat.r .n{color:var(--rd)}.stat.g .n{color:var(--gn)}.stat.a .n{color:var(--am)}
table{width:100%;border-collapse:collapse}th,td{padding:8px 12px;text-align:left;font-size:13px}
th{font-weight:600;color:var(--g5);font-size:11px;text-transform:uppercase;border-bottom:2px solid var(--g2);cursor:pointer}
th:hover{color:var(--b)}td{border-bottom:1px solid var(--g2)}
tr.rd td{background:#FFF5F5}tr.am td{background:#FFFDF5}
.badge{display:inline-block;padding:3px 8px;border-radius:100px;font-size:11px;font-weight:700}
.badge.g{background:#D1FAE5;color:#065F46}.badge.a{background:#FEF3C7;color:#92400E}
.badge.r{background:#FEE2E2;color:#991B1B}.badge.b{background:#DBEAFE;color:#1E40AF}.badge.w{background:#eee;color:#666}
.fr{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap;align-items:center}
.fr input,.fr select{padding:8px 12px;border:1px solid var(--g2);border-radius:6px;font-size:13px;background:var(--w)}
.fr input{min-width:200px}
.mt{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:10px}
.mt span{padding:4px 10px;border:1px solid var(--g2);border-radius:100px;font-size:11px;font-weight:600;cursor:pointer}
.mt span.on{background:var(--c);color:var(--b)}
@media(max-width:600px){#app{padding:8px}.row{flex-direction:column}.stat{min-width:auto}}
</style>
</head>
<body>
<div id="loginBox"><div>
<h1><span>План ПБ</span> 2026</h1>
<p>АО «Казахтелеком»</p>
<input id="lem" placeholder="curator@telecom.kz">
<input id="lpw" type="password" placeholder="Пароль (любой)">
<p id="lerr" style="color:var(--rd);font-size:12px;display:none">Неверная почта</p>
<button class="btn" style="width:100%" onclick="doLogin()">Войти</button>
</div></div>
<div id="app">
<div class="top"><b><span>План ПБ</span> 2026</b><div class="r"><span id="ul"></span><button class="btn btn-sm btn-red" onclick="doLogout()">Выйти</button></div></div>
<div class="tabs">
<button class="tab on" data-pg="ev" onclick="switchPg('ev')">Мероприятия</button>
<button class="tab" data-pg="rp" onclick="switchPg('rp')">Отчёты</button>
</div>
<div class="pg on" id="pg-ev"></div>
<div class="pg" id="pg-rp"></div>
</div>
<script>
var U={"curator@telecom.kz":{n:"Куратор",b:0,r:"cur"},"dpp@telecom.kz":{n:"Директор ДПБ",b:0,r:"br"}};
var cu=null,ev=null;
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="<b>"+cu.n+"</b>";
loadEvents();
}
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);localStorage.setItem("se3",JSON.stringify(ev))}catch(e){ev=[]}};renderEv()};
x.onerror=function(){ev=[];renderEv()};
x.send();
}
function saveEv(){localStorage.setItem("se3",JSON.stringify(ev||[]))}
function switchPg(n){
document.querySelectorAll(".tab").forEach(function(t){t.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");
if(n==="ev")renderEv();
}
function renderEv(){
var h="<div class='card'><p>Загрузка...</p></div>";
if(ev&&ev.length){
h="<div class='card'><div class='fr'><span>Всего: "+ev.length+" мероприятий</span></div><table><tr><th>№</th><th>Мероприятие</th><th>Филиал</th><th>Срок</th><th>Статус</th></tr>";
ev.forEach(function(e){
var scl={done:"g",warn:"a",late:"r",wait:"w"}[e.s]||"w";
var stt={done:"Исполнено",warn:"В процессе",late:"Просрочено",wait:"Не начато"}[e.s]||"—";
h+="<tr><td>"+e.id+"</td><td style='font-size:12px'>"+escHtml(e.t)+"</td><td style='font-size:11px'>"+e.b+"</td><td>"+e.due+"</td><td><span class='badge "+scl+"'>"+stt+"</span></td></tr>";
});
h+="</table></div>";
}
document.getElementById("pg-ev").innerHTML=h;
}
function escHtml(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}
var su=localStorage.getItem("su");if(su){try{cu=JSON.parse(su);if(cu)showApp()}catch(e){}}
</script>
</body>
</html>