fix: stable base + login, per-month, file keys — all balanced
This commit is contained in:
parent
3848ee5a3b
commit
330a7ff9d1
35
index.html
35
index.html
@ -1017,6 +1017,10 @@ function doLogin(){
|
||||
var e=document.getElementById("lem").value.trim().toLowerCase();
|
||||
var k=e.split("@")[0];
|
||||
var u=USR[k];
|
||||
if(!u){
|
||||
var ex=localStorage.getItem("ext_users");if(ex){try{var eu=JSON.parse(ex);if(eu[k])u=eu[k];if(!u&&eu[e])u=eu[e]}catch(e){}}
|
||||
}
|
||||
if(!u)u=USR[e];
|
||||
if(u){
|
||||
cu={n:u.n,bg:u.bg,role:u.role!==undefined?u.role:(u.bg===0?0:1)};
|
||||
localStorage.setItem("su",JSON.stringify(cu));
|
||||
@ -1221,11 +1225,11 @@ function openEv(id,subIdx){
|
||||
h+="<div style='margin-bottom:12px;padding:10px;background:#F0F9FF;border-radius:8px'><strong>AI-анализ:</strong> <span style='font-size:13px;color:#64748B'>"+esc(e.ai||"\u2014")+"</span></div>";
|
||||
h+="<div style='margin-bottom:12px'><strong>Отчётность:</strong></div>";
|
||||
h+="<div style='margin-bottom:8px;display:flex;gap:8px;flex-wrap:wrap;align-items:center'>";
|
||||
h+="<span style='font-size:12px'>Количество:</span> <input type='number' id='evq_"+e.id+"' value='"+(e.q||"")+"' min='0' style='width:80px;padding:4px;border:1px solid #E2E8F0;border-radius:4px;font-size:12px'>";
|
||||
var now=new Date();
|
||||
var curMonth=now.getMonth();
|
||||
var savedMonth=localStorage.getItem("evmonth_"+e.id);
|
||||
var selMonth=savedMonth!==null?parseInt(savedMonth,10):curMonth;
|
||||
h+="<span style='font-size:12px'>Количество:</span> <input type='number' id='evq_"+e.id+"' value='"+(localStorage.getItem("sq_"+e.id+"_m"+selMonth)||e.q||"")+"' min='0' style='width:80px;padding:4px;border:1px solid #E2E8F0;border-radius:4px;font-size:12px'>";
|
||||
h+="<span style='font-size:12px;margin-left:8px'>Месяц:</span> <select id='evm_"+e.id+"' style='padding:4px;border:1px solid #E2E8F0;border-radius:4px;font-size:12px'>";
|
||||
var mnames=["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"];
|
||||
for(var mi=0;mi<12;mi++){
|
||||
@ -1234,11 +1238,11 @@ function openEv(id,subIdx){
|
||||
h+=">"+mnames[mi]+"</option>"
|
||||
}
|
||||
h+="</select></div>";
|
||||
h+="<div style='margin-bottom:12px'><textarea id='evn_"+e.id+"' placeholder='Примечание / описание выполнения...' style='width:100%;padding:8px;border:1px solid #E2E8F0;border-radius:6px;font-size:12px;resize:vertical;min-height:50px'>"+esc(subIdx!==undefined?((localStorage.getItem("sn_"+e.id+"_s"+subIdx)||"")):(e.n||""))+"</textarea></div>";
|
||||
h+="<div style='margin-bottom:12px'><textarea id='evn_"+e.id+"' placeholder='Примечание / описание выполнения...' style='width:100%;padding:8px;border:1px solid #E2E8F0;border-radius:6px;font-size:12px;resize:vertical;min-height:50px'>"+esc(subIdx!==undefined?((localStorage.getItem("sn_"+e.id+"_s"+subIdx)||"")):(localStorage.getItem("sn_"+e.id+"_m"+selMonth)||e.n||""))+"</textarea></div>";
|
||||
h+="<div style='margin-bottom:12px'><strong>Файлы:</strong>";
|
||||
if(cu&&cu.bg===0){
|
||||
for(var bi=0;bi<brs.length;bi++){
|
||||
var bk=fk+"_b"+bi;
|
||||
var bk=fk+"_m"+selMonth+"_b"+bi;
|
||||
var fd=localStorage.getItem(bk);
|
||||
if(fd){
|
||||
try{
|
||||
@ -1252,7 +1256,7 @@ function openEv(id,subIdx){
|
||||
}
|
||||
}
|
||||
}else{
|
||||
var bk=fk+"_b"+(cu?cu.bg:0);
|
||||
var bk=fk+"_m"+selMonth+"_b"+(cu?cu.bg:0);
|
||||
var fd=localStorage.getItem(bk);
|
||||
if(fd){
|
||||
try{
|
||||
@ -1295,13 +1299,9 @@ function closeModal(){
|
||||
|
||||
function saveEvModal(id){
|
||||
var sel=document.getElementById("evs_"+id);
|
||||
var inq=document.getElementById("evq_"+id);
|
||||
var inn=document.getElementById("evn_"+id);
|
||||
for(var i=0;i<evs.length;i++){
|
||||
if(evs[i].id===id){
|
||||
if(sel)evs[i].s=sel.value;
|
||||
if(inq)evs[i].q=parseInt(inq.value,10)||0;
|
||||
if(inn){if(curSub!==null){try{localStorage.setItem("sn_"+id+"_s"+curSub,inn.value.trim())}catch(e){}}else{evs[i].n=inn.value.trim()}}
|
||||
if(sel&&sel.value==="done"&&(evs[i].done==="\u2014"||!evs[i].done)){
|
||||
var d=new Date();
|
||||
evs[i].done=d.getDate()+"."+String(d.getMonth()+1).padStart(2,"0")+"."+d.getFullYear()
|
||||
@ -1310,7 +1310,13 @@ function saveEvModal(id){
|
||||
}
|
||||
}
|
||||
var inm=document.getElementById("evm_"+id);
|
||||
if(inm)try{localStorage.setItem("evmonth_"+id,inm.value)}catch(e){}
|
||||
if(inm){
|
||||
var mv=inm.value;
|
||||
try{localStorage.setItem("evmonth_"+id,mv)}catch(e){}
|
||||
var inq=document.getElementById("evq_"+id);var inn=document.getElementById("evn_"+id);
|
||||
if(inn)try{localStorage.setItem("sn_"+id+"_m"+mv,inn.value.trim())}catch(e){}
|
||||
if(inq)try{localStorage.setItem("sq_"+id+"_m"+mv,(parseInt(inq.value,10)||0).toString())}catch(e){}
|
||||
}
|
||||
saveEv();
|
||||
closeModal();
|
||||
renderEv()
|
||||
@ -1789,16 +1795,17 @@ function resetPw(k){
|
||||
}
|
||||
function addUser(){
|
||||
var em=document.getElementById("reg_email").value.trim().toLowerCase();
|
||||
var k=em.split("@")[0];
|
||||
var nm=document.getElementById("reg_name").value.trim();
|
||||
var ph=document.getElementById("reg_phone").value.trim();
|
||||
var bg=parseInt(document.getElementById("reg_branch").value,10);
|
||||
var pw=document.getElementById("reg_pass").value.trim();
|
||||
var rlSel=document.getElementById("reg_role");
|
||||
var rl=rlSel?parseInt(rlSel.value,10):1;
|
||||
if(!em||!nm){alert("\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u043B\u043E\u0433\u0438\u043D \u0438 \u0424\u0418\u041E");return}
|
||||
if(USR[em]){alert("\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442");return}
|
||||
USR[em]={n:nm,bg:bg,ph:ph,role:rl};
|
||||
if(pw)USR[em].pw=pw;
|
||||
if(!k||!nm){alert("\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u043B\u043E\u0433\u0438\u043D \u0438 \u0424\u0418\u041E");return}
|
||||
if(USR[k]){alert("\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442");return}
|
||||
USR[k]={n:nm,bg:bg,ph:ph,role:rl};
|
||||
if(pw)USR[k].pw=pw;
|
||||
saveUsers();
|
||||
closeRegModal();
|
||||
renderUsers()
|
||||
@ -1985,6 +1992,6 @@ function dlAnalyticsWord(){
|
||||
var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="analytics.doc";a.click()
|
||||
}
|
||||
|
||||
</script></script>
|
||||
</script></script></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user