v35: удалён дубликат кода, фикс синтаксиса

This commit is contained in:
Dauren777 2026-06-05 08:47:26 +00:00
parent e63dab3c7e
commit 4548cace68

View File

@ -466,59 +466,6 @@ function openEdit(id, mi, ri, si){
document.getElementById("editModalContent").innerHTML=html;
document.getElementById("editModalOverlay").classList.add("open");
}
html+='<div class="field"><label>Статус</label><select id="es"><option value="wait"'+(e.s==="wait"?" selected":"")+'>В процессе</option><option value="warn"'+(e.s==="warn"?" selected":"")+'>На контроле</option><option value="late"'+(e.s==="late"?" selected":"")+'>Просрочено</option><option value="done"'+(e.s==="done"?" selected":"")+'>Исполнено</option></select></div>';
html+='<div class="field"><label>Прогресс (%)</label><input type="range" id="ep" min="0" max="100" value="'+e.p+'" oninput="document.getElementById(\'pv\').textContent=this.value+\'%\'"><span id="pv" style="font-weight:700">'+e.p+'%</span></div>';
html+='<div class="field"><label>Комментарий</label><textarea id="ec" placeholder="Комментарий..."></textarea></div>';
// Month tabs (shared)
var mh='<div class="month-tabs">';months.forEach(function(m,i){mh+='<span class="month-tab'+(i===curMonth?" active":"")+'" onclick="openEdit('+e.id+','+i+','+editSubIdx+')">'+M(i)+'</span>'});mh+='</div>';
// Sub-items with file sections (shown first for clarity)
var sh='';
if(hasSub){
sh+='<div style="border-top:2px solid var(--cyan);padding-top:16px;margin-top:16px"><div style="font-weight:700;font-size:15px;margin-bottom:4px">📋 Подпункты мероприятия</div><p style="font-size:12px;color:var(--gray-500);margin-bottom:12px">Нажмите 📎 на подпункте для управления его файлами</p>';
sh+=mh;
e.sub.forEach(function(s,i){
var ch=sc.indexOf(i)>=0;
var sd=getMD(e.id,i), scd=sd[cm]||{report:"",files:[]}, scfs=scd.files||[];
var isActive = editSubIdx === i;
sh+='<div class="sub-item" style="flex-wrap:wrap;padding:12px 14px;margin-bottom:8px;'+(isActive?'border:2px solid var(--cyan)':'')+'">';
sh+='<input type="checkbox" id="sc_'+i+'" '+(ch?"checked":"")+'><span class="sub-label" style="font-size:16px">'+s.l+')</span><span class="sub-text" style="flex:1">'+esc(s.t)+'</span>';
sh+='<span style="font-size:11px;color:var(--gray-500);margin-right:8px">Файлов: '+(scfs.length)+'</span>';
sh+='<button class="btn btn-sm" onclick="openEdit('+e.id+','+curMonth+','+i+')" style="font-size:12px;'+(isActive?'background:var(--cyan);font-weight:700':'')+'">'+(isActive?'📂 Открыто':'📎 Файлы')+'</button>';
sh+='</div>';
if(isActive){
sh+='<div style="margin-left:20px;margin-bottom:16px;padding:16px;background:var(--cyan-50);border-radius:8px;border:2px solid var(--cyan)">';
sh+='<div style="font-weight:700;font-size:14px;margin-bottom:4px;color:var(--ink)">'+s.l+') '+esc(s.t)+'</div>';
sh+='<div style="font-size:11px;color:var(--gray-500);margin-bottom:12px">Файлы этого подпункта за '+M(curMonth)+'</div>';
sh+='<div class="field"><label>Текст отчёта</label><textarea id="mr_s'+i+'" placeholder="Опишите ход исполнения..." style="min-height:60px">'+esc(scd.report||"")+'</textarea></div>';
if(scfs.length){sh+='<div style="font-weight:600;font-size:13px;margin:8px 0">Прикреплённые файлы ('+scfs.length+'):</div>'}
scfs.forEach(function(f,fi){sh+='<div class="file-row"><span class="file-info"><span class="file-name" onclick="dlF('+e.id+','+curMonth+','+fi+','+i+')">📄 '+esc(f.name)+'</span>'+(f.desc?'<span class="file-desc">'+esc(f.desc)+'</span>':'')+'</span><span class="file-meta">'+(f.size/1024).toFixed(0)+' КБ · '+f.date+'</span><button class="file-del" onclick="rmF('+e.id+','+curMonth+','+fi+','+i+')">×</button></div>'});
sh+='<div class="upload-row"><input type="text" id="fd_s'+i+'" placeholder="Описание файла"><input type="file" id="fi_s'+i+'" multiple style="max-width:180px"><button class="btn btn-sm" id="ub_s'+i+'" onclick="uploadFiles('+e.id+','+curMonth+','+i+')">📤 Загрузить</button></div>';
sh+='</div>';
}
});
sh+='</div>';
}
// Main event files section
html+=sh;
html+='<div style="border-top:1px solid var(--gray-200);padding-top:16px;margin-top:12px"><div style="font-weight:600;font-size:14px;margin-bottom:4px">📎 Общие материалы мероприятия</div><p style="font-size:11px;color:var(--gray-500);margin-bottom:8px">Файлы, не привязанные к конкретному подпункту</p>';
html+=mh;
html+='<div class="field" style="margin-top:12px"><label>Текст отчёта за '+M(curMonth)+'</label><textarea id="mr" placeholder="Опишите ход исполнения... Можно без файлов." style="min-height:80px">'+esc(cd.report||"")+'</textarea></div>';
cfs.forEach(function(f,i){html+='<div class="file-row"><span class="file-info"><span class="file-name" onclick="dlF('+e.id+','+curMonth+','+i+',-1)">📄 '+esc(f.name)+'</span>'+(f.desc?'<span class="file-desc">'+esc(f.desc)+'</span>':'')+'</span><span class="file-meta">'+(f.size/1024).toFixed(0)+' КБ · '+f.date+'</span><button class="file-del" onclick="rmF('+e.id+','+curMonth+','+i+',-1)">×</button></div>'});
html+='<div class="upload-row"><input type="text" id="fd" placeholder="Описание файла"><input type="file" id="fi" multiple style="max-width:220px"><button class="btn btn-sm" id="ub" onclick="uploadFiles('+e.id+','+curMonth+',-1)">📤 Загрузить</button></div>';
html+='<p style="font-size:11px;color:var(--gray-500);margin-top:6px">Формы завершения: '+esc(e.dname)+'</p></div>';
html+='<div class="ai-block"><h4>🤖 Вывод ИИ-агента</h4>'+esc(e.ai)+'</div>';
html+='<div style="font-weight:600;margin:8px 0 4px">История:</div><div>';e.h.forEach(function(h){html+='<div class="history-item"><div class="dot"></div>'+esc(h)+'</div>'});html+='</div>';
html+='<div style="margin-top:20px;display:flex;gap:12px"><button class="btn" onclick="saveEdit('+e.id+','+curMonth+')">Сохранить</button><button class="btn btn-outline" onclick="closeEM()">Отмена</button></div>';
document.getElementById("editModalContent").innerHTML=html;
document.getElementById("editModalOverlay").classList.add("open");
}
function saveEdit(id, mk){
mk=months[mk]; // convert index to month key
var e=null;for(var i=0;i<events.length;i++){if(events[i].id===id){e=events[i];break}}if(!e)return;