v45: убрано поле описания файла
This commit is contained in:
parent
7a5415d506
commit
8ab1880e08
@ -247,10 +247,10 @@ function oe(id,mi,ri,si){
|
||||
// Форма завершения
|
||||
h+='<label>Форма завершения</label>';
|
||||
if(cfs.length){cfs.forEach(function(f,i){var ic="📄";if(/\.(jpg|jpeg|png|gif|webp)/i.test(f.name))ic="🖼";else if(/\.pdf/i.test(f.name))ic="📕";else if(/\.(doc|docx)/i.test(f.name))ic="📝";else if(/\.(xls|xlsx)/i.test(f.name))ic="📊";else if(/\.(ppt|pptx)/i.test(f.name))ic="📽";h+='<div class="fl"><span class="nm" onclick="dlF2('+e.id+','+cm+','+i+','+cr+',-1)">'+ic+' '+esc(f.name)+'</span><span class="sz">'+(f.size/1024).toFixed(0)+' КБ</span><button onclick="rmF2('+e.id+','+cm+','+i+','+cr+',-1)" style="border:none;color:var(--rd);cursor:pointer;font-size:14px">×</button></div>'})}
|
||||
h+='<div class="up"><p>📤 Загрузить подтверждающие документы</p><input type="text" id="fd2" placeholder="Описание файла" style="width:100%;margin-bottom:6px"><input type="file" id="fi2" multiple><button class="btn btn-sm" id="ub2" onclick="upF2('+e.id+','+cm+','+cr+',-1)" style="margin-top:6px">Загрузить</button><div class="types">Поддерживаются: PDF, DOC/DOCX, XLS/XLSX, фото, презентации</div></div>';
|
||||
h+='<div class="up"><p>📤 Загрузить подтверждающие документы</p><input type="file" id="fi2" multiple><button class="btn btn-sm" id="ub2" onclick="upF2('+e.id+','+cm+','+cr+',-1)" style="margin-top:6px">Загрузить</button><div class="types">Поддерживаются: PDF, DOC/DOCX, XLS/XLSX, фото, презентации</div></div>';
|
||||
|
||||
// Sub-items files
|
||||
if(e.sub&&e.sub.length&&esi>=0){var s=e.sub[esi],sd=getMD(e.id,cr,esi),scd=sd[m]||{report:"",files:[]},scfs=scd.files||[];h+='<div style="border-top:2px solid var(--c);padding-top:12px;margin-top:12px"><b>📎 Подпункт '+s.l+')</b><p style="font-size:11px;color:var(--g5);margin:4px 0">'+esc(s.t)+'</p>';h+='<label>Описание подпункта</label><textarea id="mr2_s'+esi+'">'+esc(scd.report||"")+'</textarea>';h+='<label>Количество</label><input type="number" id="mq2_s'+esi+'" min="0" value="'+(scd.qty||0)+'">';scfs.forEach(function(f,fi){h+='<div class="fl"><span class="nm" onclick="dlF2('+e.id+','+cm+','+fi+','+cr+','+esi+')">📄 '+esc(f.name)+'</span><span class="sz">'+(f.size/1024).toFixed(0)+' КБ</span><button onclick="rmF2('+e.id+','+cm+','+fi+','+cr+','+esi+')" style="border:none;color:var(--rd);cursor:pointer">×</button></div>'});h+='<div class="up"><input type="text" id="fd2_s'+esi+'" placeholder="Описание" style="width:100%;margin-bottom:6px"><input type="file" id="fi2_s'+esi+'" multiple><button class="btn btn-sm" id="ub2_s'+esi+'" onclick="upF2('+e.id+','+cm+','+cr+','+esi+')" style="margin-top:6px">Загрузить</button></div></div>'}
|
||||
if(e.sub&&e.sub.length&&esi>=0){var s=e.sub[esi],sd=getMD(e.id,cr,esi),scd=sd[m]||{report:"",files:[]},scfs=scd.files||[];h+='<div style="border-top:2px solid var(--c);padding-top:12px;margin-top:12px"><b>📎 Подпункт '+s.l+')</b><p style="font-size:11px;color:var(--g5);margin:4px 0">'+esc(s.t)+'</p>';h+='<label>Описание подпункта</label><textarea id="mr2_s'+esi+'">'+esc(scd.report||"")+'</textarea>';h+='<label>Количество</label><input type="number" id="mq2_s'+esi+'" min="0" value="'+(scd.qty||0)+'">';scfs.forEach(function(f,fi){h+='<div class="fl"><span class="nm" onclick="dlF2('+e.id+','+cm+','+fi+','+cr+','+esi+')">📄 '+esc(f.name)+'</span><span class="sz">'+(f.size/1024).toFixed(0)+' КБ</span><button onclick="rmF2('+e.id+','+cm+','+fi+','+cr+','+esi+')" style="border:none;color:var(--rd);cursor:pointer">×</button></div>'});h+='<div class="up"><input type="file" id="fi2_s'+esi+'" multiple><button class="btn btn-sm" id="ub2_s'+esi+'" onclick="upF2('+e.id+','+cm+','+cr+','+esi+')" style="margin-top:6px">Загрузить</button></div></div>'}
|
||||
|
||||
// Sub-item buttons
|
||||
if(e.sub&&e.sub.length){h+='<div style="margin-top:10px">';e.sub.forEach(function(s,i){h+='<button class="btn btn-sm" onclick="oe('+e.id+','+cm+','+cr+','+i+')" style="margin-right:4px;margin-bottom:4px;'+(esi===i?'background:var(--c);font-weight:700':'')+'">'+(esi===i?'📂 ':'📎 ')+s.l+')</button>'});h+='</div>'}
|
||||
@ -264,7 +264,7 @@ function oe(id,mi,ri,si){
|
||||
function sv(id,mk){mk=ms[mk];var e=null;for(var i=0;i<ev.length;i++)if(ev[i].id===id){e=ev[i];break}if(!e)return;e.s=document.getElementById("es2").value;var mr=document.getElementById("mr2"),mq=document.getElementById("mq2");if(mr){var ad=getMD(id,cr,-1);if(!ad[mk])ad[mk]={report:"",files:[]};ad[mk].report=mr.value;if(mq)ad[mk].qty=parseInt(mq.value)||0;setMD(id,ad,cr,-1)}if(e.sub&&e.sub.length){var cks=[];e.sub.forEach(function(_,i){var el=document.getElementById("sc2_"+i);if(el&&el.checked)cks.push(i);var sr=document.getElementById("mr2_s"+i),sq=document.getElementById("mq2_s"+i);if(sr){var sd=getMD(id,cr,i);if(!sd[mk])sd[mk]={report:"",files:[]};sd[mk].report=sr.value;if(sq)sd[mk].qty=parseInt(sq.value)||0;setMD(id,sd,cr,i)}});ssc(id,cks)}var now=new Date().toLocaleDateString();e.h.push(now+" — "+cu.n+": "+st[e.s]);if(e.s==="done"&&e.done==="—")e.done=now;se();closeM();re()}
|
||||
function closeM(){document.getElementById("mo").classList.remove("on")}
|
||||
|
||||
function upF2(eid,mk,ri,si){mk=ms[mk];var pfx=si>=0?"_s"+si:"",fi=document.getElementById("fi2"+pfx);if(!fi||!fi.files.length)return;var desc=(document.getElementById("fd2"+pfx)||{}).value;desc=(desc||"").trim();var btn=document.getElementById("ub2"+pfx);if(btn){btn.textContent="...";btn.disabled=true}var ad=getMD(eid,ri,si);if(!ad[mk])ad[mk]={report:"",files:[]};var arr=ad[mk].files,pr=0,sk=0;function fin(){try{setMD(eid,ad,ri,si)}catch(e){alert("Хранилище заполнено")}if(sk)alert(sk+" файлов >3 МБ");closeM();oe(eid,cm,ri,si>=0?si:undefined)}for(var i=0;i<fi.files.length;i++){(function(f){if(f.size>3072*1024){sk++;pr++;if(pr===fi.files.length)fin();return}var r=new FileReader();r.onload=function(ev){arr.push({name:f.name,size:f.size,type:f.type,desc:desc,date:new Date().toLocaleDateString(),data:ev.target.result});pr++;if(pr===fi.files.length)fin()};r.onerror=function(){pr++;if(pr===fi.files.length)fin()};r.readAsDataURL(f)})(fi.files[i])}}
|
||||
function upF2(eid,mk,ri,si){mk=ms[mk];var pfx=si>=0?"_s"+si:"",fi=document.getElementById("fi2"+pfx);if(!fi||!fi.files.length)return;var btn=document.getElementById("ub2"+pfx);if(btn){btn.textContent="...";btn.disabled=true}var ad=getMD(eid,ri,si);if(!ad[mk])ad[mk]={report:"",files:[]};var arr=ad[mk].files,pr=0,sk=0;function fin(){try{setMD(eid,ad,ri,si)}catch(e){alert("Хранилище заполнено")}if(sk)alert(sk+" файлов >3 МБ");closeM();oe(eid,cm,ri,si>=0?si:undefined)}for(var i=0;i<fi.files.length;i++){(function(f){if(f.size>3072*1024){sk++;pr++;if(pr===fi.files.length)fin();return}var r=new FileReader();r.onload=function(ev){arr.push({name:f.name,size:f.size,type:f.type,date:new Date().toLocaleDateString(),data:ev.target.result});pr++;if(pr===fi.files.length)fin()};r.onerror=function(){pr++;if(pr===fi.files.length)fin()};r.readAsDataURL(f)})(fi.files[i])}}
|
||||
function dlF2(eid,mk,idx,ri,si){si=si||-1;mk=ms[mk];var ad=getMD(eid,ri,si),arr=ad[mk]?ad[mk].files:null;if(!arr||!arr[idx]||!arr[idx].data)return;var f=arr[idx],a=document.createElement("a");a.href=f.data;a.download=f.name;document.body.appendChild(a);a.click();document.body.removeChild(a)}
|
||||
function rmF2(eid,mk,idx,ri,si){si=si||-1;mk=ms[mk];var ad=getMD(eid,ri,si);if(!ad[mk]||!ad[mk].files)return;ad[mk].files.splice(idx,1);setMD(eid,ad,ri,si);closeM();oe(eid,cm,ri,si>=0?si:undefined)}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user