You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 76 Next »

const pageId = "85045112"; const fileName = "form-data.json"; let docs = []; const sections = [ { title: "رهبری و مدیریت", value: "رهبری و مدیریت" }, { title: "مراقبت و درمان", value: "مراقبت و درمان" }, { title: "حمایت از گیرنده خدمت", value: "حمایت از گیرنده خدمت" } ]; const zirmohvarOptions = { "رهبری و مدیریت": [ "رهبری و مدیریت کیفیت", "مدیریت خطر، حوادث و بلایا", "مدیریت منابع انسانی و سلامت حرفه‌ای", "مدیریت خدمات پرستاری", "فناوری و مدیریت اطلاعات سلامت", "بهداشت محیط", "مدیریت تجهیزات پزشکی" ], "مراقبت و درمان": [ "مراقبت‌های عمومی بالینی", "مراقبت‌های حاد و اورژانس", "مراقبت‌های جراحی و بیهوشی", "مراقبت‌های مادر و نوزاد", "پیشگیری و کنترل عفونت", "مدیریت دارویی", "خدمات تصویربرداری", "خدمات آزمایشگاه", "طب انتقال خون", "خدمات سرپایی" ], "حمایت از گیرنده خدمت": [ "تأمین تسهیلات برای گیرنده خدمت", "احترام به حقوق گیرنده خدمت" ] }; const sanadIcons = { "آیین نامه": "https://kb.h-soft.ir/download/thumbnails/85045112/%D8%A7%DB%8C%DB%8C%D9%86%20%D9%86%D8%A7%D9%85%D9%87.png?api=v2", "پروتکل": "https://kb.h-soft.ir/download/thumbnails/85045112/%D9%BE%D8%B1%D9%88%D8%AA%DA%A9%D9%84.png?api=v2", "خط‌مشی و روش": "https://kb.h-soft.ir/download/thumbnails/85045112/%D8%AE%D8%B7%20%D9%85%D8%B4%DB%8C.png?api=v2", "دستورالعمل": "https://kb.h-soft.ir/download/thumbnails/85045112/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D9%84%D8%B9%D9%85%D9%84.png?api=v2", "راهنما": "https://kb.h-soft.ir/download/thumbnails/85045112/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7.png?api=v2", "روش اجرایی": "https://kb.h-soft.ir/download/thumbnails/85045112/%D8%B1%D9%88%D8%B4%20%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C%DB%8C.png?api=v2", "سند": "https://kb.h-soft.ir/download/thumbnails/85045112/%D8%B3%D9%86%D8%AF.png?api=v2", "فلوچارت": "https://kb.h-soft.ir/download/thumbnails/85045112/%D9%81%D9%84%D9%88%DA%86%D8%A7%D8%B1%D8%AA.png?api=v2", "کتابچه": "https://kb.h-soft.ir/download/thumbnails/85045112/%DA%A9%D8%AA%D8%A7%D8%A8%DA%86%D9%87.png?api=v2" }; function normalizeSanadType(type){ if (!type) return ""; return type.trim().replace(/\u200c/g, " ").replace(/\s+/g, " ").toLowerCase(); } function detectSanadIcon(type){ const t = normalizeSanadType(type); if (t.includes("آیین")) return sanadIcons["آیین نامه"]; if (t.includes("پروتکل")) return sanadIcons["پروتکل"]; if (t.includes("خط مشی")) return sanadIcons["خط‌مشی و روش"]; if (t.includes("دستورالعمل")) return sanadIcons["دستورالعمل"]; if (t.includes("راهنما")) return sanadIcons["راهنما"]; if (t.includes("روش اجرایی")) return sanadIcons["روش اجرایی"]; if (t.includes("فلوچارت")) return sanadIcons["فلوچارت"]; if (t.includes("کتابچه")) return sanadIcons["کتابچه"]; return sanadIcons["سند"]; } // اصلاح شده: باز کردن فایل در مرورگر یا دانلود function getAttachmentUrl(fileName) { if (!fileName) return null; const ext = fileName.split('.').pop().toLowerCase(); const url = `/download/attachments/${pageId}/${encodeURIComponent(fileName)}?api=v2`; const viewableExtensions = ['pdf', 'png', 'jpg', 'jpeg', 'gif', 'txt', 'html']; if (viewableExtensions.includes(ext)) return url; return url + '&download=true'; } async function loadJSON(){ const attRes = await fetch(`/rest/api/content/${pageId}/child/attachment`, { credentials: "include" }); const attData = await attRes.json(); const file = attData.results.find(a => a.title === fileName); if (!file) return; const downloadUrl = new URL(file._links.download, window.location.origin).href; const jsonText = await fetch(downloadUrl, { credentials:"include" }).then(r => r.text()); docs = JSON.parse(jsonText); populateMahvarFilter(); renderSections(); } function populateMahvarFilter(){ const sel = document.getElementById("filter-mahvar"); sections.forEach(s => { const o = document.createElement("option"); o.value = s.value; o.textContent = s.title; sel.appendChild(o); }); } function updateZirmohvarFilter(){ const mahvar = document.getElementById("filter-mahvar").value; const sel = document.getElementById("filter-zirmohvar"); sel.innerHTML = ''; (zirmohvarOptions[mahvar] || []).forEach(z => { const o = document.createElement("option"); o.value = z; o.textContent = z; sel.appendChild(o); }); } function createCard(doc){ const card = document.createElement("div"); card.className = "card"; const fileUrl = getAttachmentUrl(doc.document_file_name); const iconUrl = detectSanadIcon(doc.noe_sanad); card.innerHTML = `

${doc.document_name || doc.title || ""}

  • زیرمحور: ${doc.zirmohvar || "-"}
  • نوع سند: ${doc.noe_sanad || "-"}
  • شماره استاندارد: ${doc.standard_no || "-"}
  • تاریخ آخرین بازنگری: ${doc.date || "-"}
${ fileUrl ? `مشاهده` : `فایل ندارد` }
سند
`; return card; } function renderSections(){ const searchText = document.getElementById("search").value.toLowerCase(); const m = document.getElementById("filter-mahvar").value; const z = document.getElementById("filter-zirmohvar").value; const container = document.getElementById("sections-container"); container.innerHTML = ""; let found = false; sections.forEach(sec => { const list = docs.filter(d => d.mahvar === sec.value && (!searchText || ((d.document_name || d.title || "").toLowerCase().includes(searchText))) && (!m || d.mahvar === m) && (!z || d.zirmohvar === z) ); if(!list.length) return; found = true; const grid = document.createElement("div"); grid.className = "section-grid"; grid.style.display = "grid"; grid.style.gridTemplateColumns = "repeat(2,1fr)"; grid.style.gap = "20px"; [...list].reverse().forEach(d => grid.appendChild(createCard(d))); const h2 = document.createElement("h2"); h2.style.textAlign = "center"; h2.textContent = sec.title; const hr = document.createElement("hr"); hr.style.border = "3px solid #00A9C3"; hr.style.width = "80px"; hr.style.margin = "0 auto 20px"; container.append(h2, hr, grid); }); document.getElementById("no-result").style.display = found ? "none" : "block"; } document.getElementById("search").addEventListener("input", renderSections); document.getElementById("filter-mahvar").addEventListener("change", () => { updateZirmohvarFilter(); renderSections(); }); document.getElementById("filter-zirmohvar").addEventListener("change", renderSections); loadJSON();


  • No labels