fix: doLogin checks ext_users, upFile uses direct IDB, listFiles uses getAll, report shows file metadata

This commit is contained in:
Dauren777 2026-06-11 05:50:27 +00:00
parent 13d468694b
commit 40f3b08b53

View File

@ -1000,9 +1000,12 @@ function deleteFileDB(id,cb){
function listFiles(prefix,cb){
openDB(function(d){
if(!d){cb([]);return}
var tx=d.transaction("files","readonly");var st=tx.objectStore("files");
var rq=st.openCursor();var res=[];
rq.onsuccess=function(e){var c=e.target.result;if(c){if(c.value.id.indexOf(prefix)===0)res.push(c.value);c.continue()}else{cb(res)}}
try{
var tx=d.transaction("files","readonly");var st=tx.objectStore("files");
var rq=st.getAll();
rq.onsuccess=function(){var all=rq.result||[];var res=[];for(var i=0;i<all.length;i++){if(all[i].id.indexOf(prefix)===0)res.push(all[i])}cb(res)};
rq.onerror=function(){cb([])}
}catch(e){cb([])}
})
}
@ -1073,6 +1076,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]}catch(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));
@ -1366,6 +1373,13 @@ function saveEvModal(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){}
}
var prefix="sf_"+id+"_m"+(inm?inm.value:"0");
listFiles(prefix,function(files){
if(files&&files.length){
var meta=files.map(function(f){return{n:f.name,s:f.size,t:f.type,ts:f.ts}});
try{localStorage.setItem("rptf_"+prefix+"_",JSON.stringify(meta))}catch(e){}
}
});
saveEv();
closeModal();
renderEv()
@ -1395,10 +1409,18 @@ function upFile(id){
var monthKey=inm?"_m"+inm.value:"";
var brKey="_b"+(cu?cu.bg:0);
var fileId="sf_"+id+monthKey+subKey+brKey+"_"+Date.now();
saveFile(fileId,f,function(ok){
if(ok){openEv(id,curSub!==null?curSub:undefined)}
else{alert("\u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F")}
})
var fname=f.name;var fsize=f.size;var ftype=f.type;
var fr=new FileReader();
fr.onload=function(){
openDB(function(d){
if(!d){alert("IndexedDB \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0430");return}
var tx=d.transaction("files","readwrite");var st=tx.objectStore("files");
st.put({id:fileId,name:fname,size:fsize,type:ftype,data:fr.result,ts:new Date().toISOString()});
tx.oncomplete=function(){openEv(id,curSub!==null?curSub:undefined)};
tx.onerror=function(){alert("\u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F")}
})
};
fr.readAsArrayBuffer(f)
}
function dlFile(evId,fileId){
if(typeof fileId!=="string"||fileId.length<10)return;
@ -1589,7 +1611,7 @@ function dlHTML(){
if(!reportQty&&e.q)reportQty=e.q;
if(reportNote)hh+="<div class='desc'><strong>\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F:</strong><br>"+esc(reportNote)+"</div>";
if(reportQty)hh+="<div class='qty'>\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E: "+reportQty+"</div>";
hh+="<div class='files'><strong>\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E\u0449\u0438\u0435 \u0444\u0430\u0439\u043B\u044B:</strong> \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438</div>";
var fhtml2="";for(var mi=0;mi<months.length;mi++){var mk2="_m"+months[mi];for(var si=-1;si<(e.sub?e.sub.length:0);si++){var sk2=si>=0?"_s"+si:"";for(var bk=0;bk<brs.length;bk++){var prefix2="sf_"+e.id+mk2+sk2+"_b"+bk+"_";var fk2="rptf_"+prefix2;var hasKey=localStorage.getItem(fk2);if(hasKey){try{var fl2=JSON.parse(hasKey);for(var fj=0;fj<fl2.length;fj++){var ff=fl2[fj];fhtml2+="<a href='#' onclick='return false' style='color:#005BAA'>"+esc(ff.n)+" ("+Math.round((ff.s||0)/1024)+" KB)</a><br>"}}catch(ex){}}}}}}if(fhtml2)hh+="<div class='files'><strong>\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E\u0449\u0438\u0435 \u0444\u0430\u0439\u043B\u044B:</strong><br>"+fhtml2+"</div>";
}
hh+="<p style='font-size:11px;color:#64748B'><em>\u041E\u0442\u0447\u0451\u0442 \u0441\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D: "+new Date().toLocaleDateString("ru-RU")+"</em></p></body></html>";
@ -1958,6 +1980,6 @@ function dlAnalyticsWord(){
var blob=new Blob([h],{type:"application/msword"});var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="analytics.doc";a.click()
}
</script></script></script></script></script></script></script></script>
</script></script></script></script></script></script></script></script></script>
</body>
</html>