{"id":2251,"__str__":"Requerimento n\u00ba 26 de 2025 | Mat\u00e9ria Arquivada | 18/12/2025","link_detail_backend":"/materia/tramitacao/2251","metadata":{},"timestamp":"2026-01-06T11:17:55.215209-03:00","data_tramitacao":"2025-12-18","data_encaminhamento":null,"urgente":false,"turno":"","texto":"<span id=\"initial-text\">Encaminhado pelo <a href=\"https://sapl.saojosedoserido.rn.leg.br/docadm/texto_integral/182\" target=\"_blank\"> Of\u00edcio n\u00ba 373/2025 - GAPRE</a>, a resposta referente ao Requerimento n.\u00ba 026/2025 foi apresentada em 16 de dezembro de 2025. A documenta\u00e7\u00e3o completa pode ser consultada atrav\u00e9s do link a seguir:&nbsp;<span class=\"action-link-internal\" style=\"cursor: pointer; color: #02baf2; text-decoration: none;\" onclick=\"App.showFullApp()\">Visualizar documentos</span>.</span><div id=\"sapl-doc-wrapper\" style=\"display:none;\"><style>\r\n    /* --- CSS DA APLICA\u00c7\u00c3O --- */\r\n    #sapl-doc-wrapper {\r\n        font-family: 'Segoe UI', 'Roboto', 'Helvetica Neue', sans-serif;\r\n        color: #343a40; font-size: 1rem; line-height: 1.6;\r\n        background-color: #f4f6f9; width: 100%; max-width: 100%;\r\n        margin: 15px auto; border: 1px solid #dce1e7; border-radius: 8px;\r\n        box-shadow: 0 4px 12px rgba(0,0,0,0.05); overflow: hidden;\r\n        display: none; flex-direction: column; \r\n        min-height: 580px; \r\n        animation: fadeIn 0.5s ease-out; \r\n    }\r\n    .action-link-internal:hover { \r\n        color: #019ecb !important; \r\n        text-decoration: underline !important; \r\n    }\r\n    \r\n    /* Cabe\u00e7alho */\r\n    .sres-header { background-color: #ffffff; padding: 18px 30px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #e9ecef; position: relative; }\r\n    .sres-brand { position: absolute; left: 50%; transform: translateX(-50%); z-index: 10; }\r\n    .sres-brand-title { font-size: 1.1rem; font-weight: 700; color: #02baf2; text-transform: uppercase; letter-spacing: 0.5px; }\r\n    .sres-status { order: -1; font-size: 0.7rem; background: #343a40; color: #ffffff; padding: 5px 12px; border-radius: 4px; font-weight: 600; text-transform: uppercase; }\r\n\r\n    /* Breadcrumb */\r\n    .sres-breadcrumb { background: #343a40; padding: 12px 30px; font-size: 0.85rem; color: #adb5bd; display: flex; align-items: center; box-shadow: inset 0 2px 4px rgba(0,0,0,0.1); }\r\n    .sres-crumb-item { cursor: pointer; transition: all 0.2s; color: #e9ecef; font-weight: 500; }\r\n    .sres-crumb-item:hover { color: #02baf2; } \r\n    .sres-crumb-item.active { font-weight: 700; color: #ffffff; cursor: default; }\r\n    .sres-separator { margin: 0 10px; color: #495057; font-size: 0.7rem; }\r\n\r\n    /* Area Principal e Cards */\r\n    .sres-main-area { padding: 30px; flex-grow: 1; position: relative; display: flex; flex-direction: column; } \r\n    .sres-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; }\r\n    .sres-card { background: white; padding: 27px; border: 1px solid #e9ecef; border-radius: 8px; cursor: pointer; position: relative; overflow: hidden; transition: all 0.2s ease-in-out; text-align: center; }\r\n    .sres-card:hover { transform: translateY(-2px); border: 3px solid #343a40; padding: 25px; box-shadow: 0 8px 15px rgba(0,0,0,0.08); }\r\n    .sres-card-title { font-size: 1.1rem; font-weight: 700; color: #343a40; margin-bottom: 5px; }\r\n    .sres-card-desc { font-size: 0.9rem; color: #6c757d; line-height: 1.4; }\r\n    \r\n    /* Lista */\r\n    .sres-file-list { display: flex; flex-direction: column; gap: 10px; }\r\n    .sres-file-row { display: flex; align-items: center; background: white; padding: 15px 20px; border: 1px solid #e9ecef; border-radius: 6px; transition: all 0.2s; }\r\n    .sres-file-row:hover { background: #f8f9fa; border-color: #02baf2; transform: translateX(4px); } \r\n    .sres-file-info { flex-grow: 1; padding-left: 15px; text-align: left; }\r\n    .sres-file-name { font-weight: 600; font-size: 0.95rem; color: #343a40; } \r\n    .sres-file-meta { font-size: 0.75rem; color: #868e96; margin-top: 2px; }\r\n    .sres-btn-action { background: #02baf2; color: white; border: none; padding: 8px 16px; border-radius: 4px; font-size: 0.85rem; font-weight: 500; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; text-decoration: none; transition: background 0.2s; }\r\n    .sres-btn-action:hover { background: #019ecb; }\r\n\r\n    /* --- [MODIFICA\u00c7\u00c3O] VIEWER COMO POP-UP TELA CHEIA --- */\r\n    #sres-pdf-viewer { \r\n        display: none; \r\n        /* Configura\u00e7\u00e3o para Tela Cheia (Fixed) */\r\n        position: fixed; \r\n        top: 0; left: 0; right: 0; bottom: 0;\r\n        width: 100vw; \r\n        height: 100vh; \r\n        z-index: 99999; /* Garante que fique acima de tudo */\r\n        \r\n        background: #e9ecef; /* Fundo levemente cinza atr\u00e1s do papel */\r\n        border: none;\r\n        border-radius: 0; \r\n        flex-direction: column; \r\n        margin: 0;\r\n        box-sizing: border-box;\r\n    }\r\n    \r\n    .sres-viewer-toolbar { \r\n        padding: 15px 25px; \r\n        border-bottom: 1px solid #ccc; \r\n        display: flex; \r\n        justify-content: space-between; \r\n        align-items: center; \r\n        background: #343a40; /* Toolbar escura para contraste no modo full */\r\n        color: white;\r\n        box-shadow: 0 2px 10px rgba(0,0,0,0.1);\r\n    }\r\n    /* Ajuste para o texto da toolbar ficar branco no modo dark */\r\n    .sres-viewer-toolbar strong { color: white; font-size: 1.1rem; }\r\n\r\n    #sres-iframe { \r\n        width: 100%; \r\n        flex-grow: 1; \r\n        border: none; \r\n        background: white;\r\n    }\r\n\r\n    .btn-outline { background: transparent !important; color: white !important; border: 1px solid rgba(255,255,255,0.4) !important; }\r\n    .btn-outline:hover { background: rgba(255,255,255,0.1) !important; border-color: white !important; }\r\n\r\n    .d-none { display: none !important; }\r\n    .fade-in { animation: fadeIn 0.3s ease-out; }\r\n    @keyframes fadeIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }\r\n\r\n    /* RESPONSIVIDADE */\r\n    @media (max-width: 600px) {\r\n        #sapl-doc-wrapper { margin: 5px auto; border-radius: 0; }\r\n        .sres-header, .sres-breadcrumb, .sres-main-area { padding-left: 15px; padding-right: 15px; }\r\n        .sres-header { flex-direction: column; align-items: flex-start; }\r\n        .sres-brand { position: static; transform: none; margin-top: 5px; }\r\n        .sres-status { order: 0; }\r\n        .sres-grid { grid-template-columns: 1fr; }\r\n        .sres-viewer-toolbar { flex-direction: column; align-items: stretch; gap: 10px; padding: 10px; }\r\n        .sres-viewer-toolbar > div { display: flex; gap: 10px; }\r\n        .sres-btn-action { width: 100%; justify-content: center; }\r\n    }\r\n</style>\r\n\r\n    <div class=\"sres-header\" id=\"sres-header\">\r\n        <div class=\"sres-status\">Resposta Oficial</div>\r\n        <div class=\"sres-brand\"><span class=\"sres-brand-title\">RESPOSTA DOCUMENTAL</span></div>\r\n    </div>\r\n    <div class=\"sres-breadcrumb\" id=\"breadcrumbs-area\"><span class=\"sres-crumb-item active\">In\u00edcio</span></div>\r\n    <div class=\"sres-main-area\">\r\n        <div id=\"view-main-cards\" class=\"sres-grid d-none fade-in\">\r\n            <div class=\"sres-card\" onclick=\"App.openList('oficio', 'Of\u00edcio Resposta')\">\r\n                <div class=\"sres-card-title\">Of\u00edcio Resposta</div>\r\n                <div class=\"sres-card-desc\">Of\u00edcio n.\u00ba 373/2025 - GAPRE.</div>\r\n            </div>\r\n            <div class=\"sres-card\" onclick=\"App.openFolder('semec')\">\r\n                <div class=\"sres-card-title\">Sec. de Educa\u00e7\u00e3o (SEMEC)</div>\r\n                <div class=\"sres-card-desc\">Detalhamento dos empenhos e comprovantes da pasta de Educa\u00e7\u00e3o.</div>\r\n            </div>\r\n            <div class=\"sres-card\" onclick=\"App.openList('processo', 'Processo Adm. 006/2025')\">\r\n                <div class=\"sres-card-title\">Processo Administrativo</div>\r\n                <div class=\"sres-card-desc\">Proc. 006/2025 - Contrata\u00e7\u00e3o de transporte especializado.</div>\r\n            </div>\r\n        </div>\r\n        <div id=\"view-semec\" class=\"sres-grid d-none fade-in\">\r\n            <div class=\"sres-card\" onclick=\"App.openList('emp1', 'Empenho 072507010173')\">\r\n                <div class=\"sres-card-title\">Empenho 072507010173</div>\r\n                <div class=\"sres-card-desc\">Nota de empenho e ordem banc\u00e1ria.</div>\r\n            </div>\r\n            <div class=\"sres-card\" onclick=\"App.openList('emp2', 'Empenho 072509190017')\">\r\n                <div class=\"sres-card-title\">Empenho 072509190017</div>\r\n                <div class=\"sres-card-desc\">Nota de empenho integral.</div>\r\n            </div>\r\n            <div class=\"sres-card\" onclick=\"App.openList('emp3', 'Empenho 032509040016')\">\r\n                <div class=\"sres-card-title\">Empenho 032509040016</div>\r\n                <div class=\"sres-card-desc\">Nota de empenho complementar.</div>\r\n            </div>\r\n        </div>\r\n        <div id=\"view-file-list\" class=\"d-none fade-in\">\r\n            <h3 id=\"list-title\" style=\"margin-top:0; color:#343a40; font-size:1.1rem; border-bottom:2px solid #343a40; display:inline-block; padding-bottom:5px;\">Arquivos</h3>\r\n            <div style=\"margin-top:15px;\" class=\"sres-file-list\" id=\"file-list-container\"></div>\r\n        </div>\r\n        \r\n        <div id=\"sres-pdf-viewer\" class=\"d-none fade-in\">\r\n            <div class=\"sres-viewer-toolbar\">\r\n                <strong id=\"viewer-filename\">Documento.pdf</strong>\r\n                <div>\r\n                    <a href=\"#\" id=\"viewer-external-link\" target=\"_blank\" class=\"sres-btn-action btn-outline\"><i class=\"fas fa-external-link-alt\"></i> Nova Janela</a>\r\n                    <button class=\"sres-btn-action\" onclick=\"App.closeViewer()\" style=\"margin-left:8px; background: #dc3545; border-color: #dc3545;\"><i class=\"fas fa-times\"></i> Fechar</button>\r\n                </div>\r\n            </div>\r\n            <iframe id=\"sres-iframe\" src=\"\"></iframe>\r\n        </div>\r\n    </div>\r\n</div><script>\r\n    const App = (function() {\r\n        const PDF_ZOOM_PARAM = ''; \r\n\r\n        const DATA = {\r\n            'oficio': [{ name: 'OF\u00cdCIO N.\u00ba 373/2025 - GAPRE', meta: 'PDF - Documento Oficial', url: 'https://sapl.saojosedoserido.rn.leg.br/docadm/texto_integral/182' }],\r\n            'processo': [{ name: 'Processo Adm. 006/2025', meta: 'PDF - Autos do Processo', url: 'https://sapl.saojosedoserido.rn.leg.br/docadm/texto_integral/195' } ],\r\n            'emp1': [{ name: 'Nota de Empenho 072507010173', meta: 'PDF - Empenho', url: 'https://sapl.saojosedoserido.rn.leg.br/docadm/texto_integral/183' } ],\r\n            'emp2': [ { name: 'Nota de Empenho 072509190017', meta: 'PDF - Empenho', url: 'https://sapl.saojosedoserido.rn.leg.br/docadm/texto_integral/184' } ],\r\n            'emp3': [ { name: 'Nota de Empenho 032509040016', meta: 'PDF - Empenho', url: 'https://sapl.saojosedoserido.rn.leg.br/docadm/texto_integral/185' } ]\r\n        };\r\n        let state = { view: 'home', folder: null, listKey: null };\r\n        const els = {\r\n            initialText: document.getElementById('initial-text'), appWrapper: document.getElementById('sapl-doc-wrapper'), header: document.getElementById('sres-header'), crumbs: document.getElementById('breadcrumbs-area'), mainCards: document.getElementById('view-main-cards'), semec: document.getElementById('view-semec'), list: document.getElementById('view-file-list'), viewer: document.getElementById('sres-pdf-viewer'), iframe: document.getElementById('sres-iframe'), listContainer: document.getElementById('file-list-container'), listTitle: document.getElementById('list-title'), viewerTitle: document.getElementById('viewer-filename'), viewerExtLink: document.getElementById('viewer-external-link')\r\n        };\r\n        function hideAllViews() { els.mainCards.classList.add('d-none'); els.semec.classList.add('d-none'); els.list.classList.add('d-none'); els.viewer.classList.add('d-none'); els.viewer.classList.remove('d-flex'); }\r\n        function toggleApp(show = true) { if (show) { els.initialText.style.display = 'none'; els.appWrapper.style.display = 'flex'; } else { els.appWrapper.style.display = 'none'; els.initialText.style.display = 'inline'; } }\r\n        \r\n        function updateBreadcrumbs() {\r\n            let html = '<span class=\"sres-crumb-item active\">Documentos Anexos</span>'; \r\n            \r\n            if (state.view === 'home') {\r\n                html = '<span class=\"sres-crumb-item active\">In\u00edcio</span>'; \r\n            } else if (state.folder === 'semec') {\r\n                html = '<span class=\"sres-crumb-item\" onclick=\"App.showMainCards()\">Documentos Anexos</span><span class=\"sres-separator\">/</span>';\r\n                if (state.view === 'folder') {\r\n                    html += '<span class=\"sres-crumb-item active\">SEMEC</span>';\r\n                } else if (state.view === 'list' || state.view === 'viewer') {\r\n                    html += '<span class=\"sres-crumb-item\" onclick=\"App.openFolder(\\'semec\\')\">SEMEC</span><span class=\"sres-separator\">/</span><span class=\"sres-crumb-item active\">Documentos</span>';\r\n                }\r\n            } else if (state.view === 'list' || state.view === 'viewer') {\r\n                html = '<span class=\"sres-crumb-item\" onclick=\"App.showMainCards()\">Documentos Anexos</span><span class=\"sres-separator\">/</span><span class=\"sres-crumb-item active\">Documentos</span>';\r\n            }\r\n            // No modo viewer full screen o breadcrumb fica escondido atr\u00e1s, mas mantemos a l\u00f3gica\r\n            els.crumbs.innerHTML = html;\r\n        }\r\n\r\n        return {\r\n            goHome: function() { state = { view: 'home', folder: null, listKey: null }; hideAllViews(); toggleApp(false); updateBreadcrumbs(); },\r\n            showFullApp: function() { \r\n                toggleApp(true); \r\n                state = { view: 'main-cards', folder: null, listKey: null }; hideAllViews(); \r\n                els.mainCards.classList.remove('d-none'); \r\n                updateBreadcrumbs(); \r\n            },\r\n            showMainCards: function() { state = { view: 'main-cards', folder: null, listKey: null }; hideAllViews(); toggleApp(true); els.mainCards.classList.remove('d-none'); updateBreadcrumbs(); },\r\n            openFolder: function(fk) { state = { view: 'folder', folder: fk, listKey: null }; hideAllViews(); toggleApp(true); if(fk === 'semec') els.semec.classList.remove('d-none'); updateBreadcrumbs(); },\r\n            openList: function(key, title) { state.listKey = key; state.view = 'list'; hideAllViews(); toggleApp(true); els.listTitle.innerText = title; const files = DATA[key] || []; els.listContainer.innerHTML = files.map(f => `<div class=\"sres-file-row\"><i class=\"fas fa-file-pdf\" style=\"font-size:1.4rem; color:#dc3545; opacity:0.8;\"></i><div class=\"sres-file-info\"><div class=\"sres-file-name\">${f.name}</div><div class=\"sres-file-meta\">${f.meta}</div></div><button class=\"sres-btn-action\" onclick=\"App.openViewer('${f.url}', '${f.name}')\"><i class=\"fas fa-eye\"></i> Visualizar</button></div>`).join(''); els.list.classList.remove('d-none'); updateBreadcrumbs(); },\r\n            openViewer: function(url, name) { \r\n                state.view = 'viewer'; \r\n                // N\u00e3o precisamos esconder as outras views se o viewer for position fixed (modal), \r\n                // mas para manter consist\u00eancia e performance (n\u00e3o ter scoll duplo), mantemos o hideAllViews.\r\n                hideAllViews(); \r\n                toggleApp(true); \r\n                els.viewerTitle.innerText = name; \r\n                els.iframe.src = url + PDF_ZOOM_PARAM; \r\n                els.viewerExtLink.href = url; \r\n                els.viewer.classList.remove('d-none'); \r\n                els.viewer.classList.add('d-flex'); \r\n                updateBreadcrumbs(); \r\n            },\r\n            closeViewer: function() { \r\n                // Ao fechar, voltamos para a lista anterior\r\n                this.openList(state.listKey, els.listTitle.innerText); \r\n            },\r\n            init: function() { \r\n                this.goHome(); \r\n            }\r\n        };\r\n    })();\r\n    App.init();\r\n</script>","data_fim_prazo":null,"ip":"167.250.142.108","ultima_edicao":"2026-01-06T13:04:06.003723-03:00","status":52,"materia":801,"unidade_tramitacao_local":4,"unidade_tramitacao_destino":20,"user":14}