'use strict'; let heritageKind='culture',heritageData={entries:[],canEdit:false},heritageGeneration=0,heritageSelection=''; pageInfo['heritage-records']=['传承档案','记录资料来源、物品来历与交接意愿。']; function resetHeritage(){heritageGeneration++;heritageData={entries:[],canEdit:false};heritageSelection='';$('#heritage-list').replaceChildren();$('#heritage-detail').replaceChildren();$('#heritage-detail').hidden=true;$('#heritage-error').textContent='';$('#heritage-new').hidden=true;} async function loadHeritage(){ const generation=++heritageGeneration,kind=heritageKind; $('#heritage-list').replaceChildren();$('#heritage-detail').hidden=true;$('#heritage-new').hidden=true; $('#heritage-records-title').textContent=kind==='culture'?'文化与家风':'家庭物品与财产档案'; $('#heritage-error').textContent='正在读取…'; try{ const data=await api('/api/heritage'); if(generation!==heritageGeneration||activePage!=='heritage-records'||kind!==heritageKind)return; heritageData=data;$('#heritage-error').textContent='';renderHeritageRecords(); }catch(e){if(!e.stale&&generation===heritageGeneration&&activePage==='heritage-records'){$('#heritage-error').textContent=e.message;heritageData={entries:[],canEdit:false};}} } function renderHeritageRecords(){ $('#heritage-new').hidden=!heritageData.canEdit; const q=$('#heritage-search').value.trim().toLowerCase(); const rows=heritageData.entries.filter(r=>r.kind===heritageKind&&(!r.archived||$('#heritage-archived').checked)&&(!q||[r.name,r.content,r.contributor,r.ownerName,r.custodianName,r.successorName].join(' ').toLowerCase().includes(q))); $('#heritage-list').innerHTML=rows.length?rows.map(r=>`
${r.archived?'已归档':r.kind==='culture'?'文化资料':'财产档案'}

${esc((r.content||'尚未填写详细内容').slice(0,120))}

${esc(r.date||'日期待记')} · ${esc(r.contributor||r.updatedBy||'')}
`).join(''):empty('从一份档案开始','记录来历、故事与相关人员,资料仅向获授权的本家庭成员开放。'); } function showHeritageRecord(id){ const r=heritageData.entries.find(x=>x.id===id);if(!r)return; heritageSelection=id;const device=ZhaoDevices.catalog(state).find(d=>d.id===r.deviceId&&d.source===r.deviceSource); const fields=[['相关日期',r.date],['讲述 / 整理',r.contributor],...(r.kind==='asset'?[['所有人 / 共有说明',r.ownerName],['保管人',r.custodianName],['意向接收人',r.successorName]]:[])]; $('#heritage-detail').hidden=false; $('#heritage-detail').innerHTML=`

${esc(r.name)}

${heritageData.canEdit?``:''}
${fields.map(([k,v])=>`
${esc(k)}
${esc(v||'未填写')}
`).join('')}
${esc(r.content||'')}
${r.sourceUrl?`

打开相关资料或报道 ↗

`:''}${device?``:''}${r.kind==='asset'?`

交接意愿与说明

${esc(r.handoverNote||'尚未记录')}

档案中的交接意愿不自动改变所有权、保管安排或账号权限。

`:''}

最近整理:${esc(r.updatedBy)} · ${esc(new Date(r.updatedAt).toLocaleString('zh-CN'))} · 版本 ${r.revision}

`; } function openHeritage(id){ if(!heritageData.canEdit)return; const r=heritageData.entries.find(x=>x.id===id)||{kind:heritageKind,revision:0}; const f=$('#heritage-form'); f.elements.deviceReference.innerHTML=''+ZhaoDevices.catalog(state).map(d=>``).join(''); fillForm(f,r);f.elements.deviceReference.value=r.deviceId?r.deviceSource+':'+r.deviceId:''; $('#heritage-form-title').textContent=r.kind==='culture'?'文化资料':'物品与财产档案'; $$('[data-heritage-asset]').forEach(el=>el.hidden=r.kind!=='asset'); $('#heritage-dialog').showModal(); } $('#heritage-form').addEventListener('submit',async e=>{ e.preventDefault();const f=e.currentTarget,b=f.querySelector('[type=submit]');b.disabled=true;f.querySelector('.form-error').textContent=''; try{const data=formValues(f),[source,id]=(data.deviceReference||'').split(':');delete data.deviceReference; data.revision=Number(data.revision);data.archived=f.elements.archived.checked;data.deviceSource=source||'';data.deviceId=id||''; await api('/api/heritage',data);f.closest('dialog').close();await loadHeritage();toast('档案已保存'); }catch(e){if(!e.stale)f.querySelector('.form-error').textContent=e.message;}finally{b.disabled=false;} }); $('#heritage-new').onclick=()=>openHeritage();$('#heritage-reload').onclick=loadHeritage; $('#heritage-search').oninput=renderHeritageRecords;$('#heritage-archived').onchange=renderHeritageRecords; document.addEventListener('click',e=>{const b=e.target.closest('button');if(!b)return; if(b.dataset.heritageKind){resetHeritage();heritageKind=b.dataset.heritageKind;$('#heritage-search').value='';$('#heritage-archived').checked=false;showPage('heritage-records');} if(b.dataset.heritageDetail)showHeritageRecord(b.dataset.heritageDetail); if(b.dataset.heritageEdit)openHeritage(b.dataset.heritageEdit); if(b.id==='heritage-detail-close'){$('#heritage-detail').hidden=true;heritageSelection='';} });