PageSourceSearch

https://nukt.com.br/assets/Ocorrencias-DUmNk9yC.js

js nukt.com.br collected 2026-09-24 14:36:16 UTC 27,748 bytes, 236 lines download raw bytes

1import{r as w,d as F,j as a}from"./vendor-query-CeYLmLzt.js";import{ag as Ae,au as Te,ah as Ee,at as Pe,ai as ke,aj as A,aQ as K,b0 as Oe,df as qe,_ as X,$ as ee,al as Ie,an as ze,ao as Fe,ap as Re,aq as Me,ar as T,E as Be,aB as ae,a6 as Le,as as Ue,a9 as se,N as He,s as r,a as E}from"./index-BBNmkLNV.js";import{S as Ve}from"./scrollable-table-CUjRQRhy.js";import{u as Ge}from"./useSorting-DmGCKVFJ.js";import{u as Ke}from"./TablePagination-B6J9vU4d.js";import{S as Xe}from"./SearchInput-B-fPRO00.js";import{S as Y}from"./searchable-select-CkptX7Lo.js";import{u as Ye}from"./useUserPermittedFilters-BPV9NhH-.js";import{A as Je,a as Qe,b as We,c as Ze,d as ea,e as aa,g as sa,f as oa}from"./alert-dialog-DQYNK3Jp.js";import{f as oe}from"./formatInscricao-DgdGj0f0.js";import{a as ia}from"./vendor-react-BPOX-wWs.js";import{a as h}from"./table-BjxXoR4I.js";import{d as R,c as P}from"./compact-table-BUHtVJlz.js";import"./vendor-supabase-Cc8l7PMd.js";import"./vendor-motion-BtWo1fWB.js";import"./useScrollShadow-C0qIt916.js";import"./empty-state-Bl3TbUtb.js";const ie={O:{label:"Ocorrência",color:"bg-blue-600 text-white"},A:{label:"Advertência",color:"bg-purple-600 text-white"},S:{label:"Suspensão",color:"bg-red-600 text-white"},C:{label:"Acidente de Trabalho",color:"bg-green-600 text-white"},D:{label:"Autorização de Desconto",color:"bg-black text-white"}},C=m=>{if(!m)return"-";const[o,p,N]=m.split("-");return`${N}/${p}/${o}`},ra=m=>{if(!m)return"-";const o=new Date(m);if(isNaN(o.getTime()))return"-";const p=String(o.getDate()).padStart(2,"0"),N=String(o.getMonth()+1).padStart(2,"0"),l=o.getFullYear(),g=String(o.getHours()).padStart(2,"0"),j=String(o.getMinutes()).padStart(2,"0");return`${p}/${N}/${l} - ${g}:${j}`},Da=()=>{Ae();const m=ia(),o=Te(),[p,N]=w.useState(""),[l,g]=w.useState("all"),[j,J]=w.useState("all"),[S,Q]=w.useState("all"),[k,M]=w.useState(null),[B,W]=w.useState(""),{canEdit:re,canDelete:te,canCreate:ne,isAdminOrNukt:le}=Ee(),{profile:L}=Pe(),de=ne("/ocorrencias"),U=re("/ocorrencias"),H=te("/ocorrencias"),{data:c,isLoading:ce,refetch:pe}=F({queryKey:["empregados_ocorrencias",o],queryFn:async()=>{if(!o)return[];const{data:e,error:s}=await r.from("empregados_ocorrencias").select("*, empregado:empregados!empregados_ocorrencias_empregado_id_fkey(nome, codigo, admissao, servico_id, cargo_id, cargo:empresas_cargos(nome), servico:empresas_servicos(nome)), usuario:usuarios(full_name)").eq("empresa_id",o).order("data_lancamento",{ascending:!1});if(s)throw s;return e||[]},enabled:!!o}),{data:Z}=F({queryKey:["empregados_ocorrencias_anexos_counts",o],queryFn:async()=>{if(!o)return new Map;const{data:e,error:s}=await r.from("empregados_ocorrencias_anexos").select("ocorrencia_id").in("ocorrencia_id",(c||[]).map(t=>t.id));if(s)throw s;const i=new Map;return(e||[]).forEach(t=>{i.set(t.ocorrencia_id,(i.get(t.ocorrencia_id)||0)+1)}),i}
1,enabled:!!o&&!!c&&c.length>0}),{data:me}=F({queryKey:["empresas_servicos",o],queryFn:async()=>{if(!o)return[];const{data:e,error:s}=await r.from("empresas_servicos").select("id, nome").eq("empresa_id",o).eq("ativo",!0).order("nome");if(s)throw s;return e||[]},enabled:!!o}),{data:ge}=F({queryKey:["empresas_cargos",o],queryFn:async()=>{if(!o)return[];const{data:e,error:s}=await r.from("empresas_cargos").select("id, nome").eq("empresa_id",o).eq("ativo",!0).order("nome");if(s)throw s;return e||[]},enabled:!!o}),{filteredServicos:xe,filteredCargos:ve,permittedServicoIds:V,permittedCargoIds:G}=Ye(o,me,ge),O=w.useMemo(()=>{let e=c||[];if(V&&(e=e.filter(s=>s.empregado?.servico_id&&V.includes(s.empregado.servico_id))),G&&(e=e.filter(s=>s.empregado?.cargo_id&&G.includes(s.empregado.cargo_id))),l!=="all"&&(e=e.filter(s=>s.tipo===l)),j!=="all"&&(e=e.filter(s=>s.empregado?.servico_id===j)),S!=="all"&&(e=e.filter(s=>s.empregado?.cargo_id===S)),p){const s=p.toLowerCase();e=e.filter(i=>i.empregado?.nome?.toLowerCase().includes(s)||i.empregado?.codigo?.toLowerCase().includes(s)||i.observacoes?.toLowerCase().includes(s))}return e},[c,l,j,S,p,V,G]),ue=c?.length||0,he=c?.filter(e=>e.tipo==="O").length||0,fe=c?.filter(e=>e.tipo==="A").length||0,be=c?.filter(e=>e.tipo==="S").length||0,we=c?.filter(e=>e.tipo==="C").length||0,Ce=w.useMemo(()=>O.map(e=>({...e,empregado_nome:e.empregado?.nome||"",empregado_admissao:e.empregado?.admissao||"",empregado_servico:e.empregado?.servico?.nome||"",empregado_cargo:e.empregado?.cargo?.nome||""})),[O]),x=Ge(Ce),f=Ke(x.sortedItems,{itemsPerPage:100}),je=async()=>{if(k)try{const{data:e}=await r.from("empregados_ocorrencias_anexos").select("file_path").eq("ocorrencia_id",k);e&&e.length>0&&await r.storage.from("empregados-ocorrencias").remove(e.map(i=>i.file_path));const{error:s}=await r.from("empregados_ocorrencias").delete().eq("id",k);if(s)throw s;pe()}catch(e){E.error("Erro ao excluir: "+e.message)}finally{M(null)}},De=async(e,s="A")=>{const i=s==="S",t=s==="O",q=i?"Suspensão Disciplinar":t?"Registro de Ocorrência":"Advertência Disciplinar";try{const{data:v}=await r.from("empregados").select("nome, codigo, cpf, admissao").eq("id",e.empregado_id).single(),{data:I}=await r.from("empresas").select("inscricao, nome").eq("id",e.empresa_id).single();let y="-",z="-";if(e.encarregado_id){const{data:d}=await r.from("empregados").select("nome, cargo_id, empresas_cargos(nome)").eq("id",e.encarregado_id).single();if(d){const b=d.empresas_cargos?.nome;y=d.nome||"-",z=b||"-"}}const{data:u}=await r.from("empregados_ocorrencias_artigos").select("artigo_id").eq("ocorrencia_id",e.id);let n="-";if(u&&u.length>0){const d=u.map(_=>_.artigo_id),{data:b}=await r.from("gerais_clt_482").select("alinea, nome, descricao").in("id",d).order("alinea");b&&b.length>0&&(n=b.map(_=>`<strong>${_.alinea})</strong> ${_.nome}${_.descricao?` - ${_.descricao}`:""}`).join("<br>"))}const D=d=>{if(!d)return"-";const b=d.replace(/\D/g,"");return b.length!==11?d:b.replace(/(\d{3})(\d{3})(\d{3})(\d{2})/,"$1.$2.$3-$4")},Se=d=>d&&oe(void 0,d)||"-",ye=e.observacoes||"-",$e=`
2        <!DOCTYPE html>
3        <html>
4        <head>
5          <meta charset="UTF-8">
6          <title>${q} - ${v?.nome||""}</title>
7          <style>
8            * { margin: 0; padding: 0; box-sizing: border-box; }
9            body { font-family: 'Google Sans', 'Google Sans Text', Arial, sans-serif; font-size: 12px; padding: 30px 40px; color: #333; }
10            .header { text-align: center; margin-bottom: 25px; border-bottom: 2px solid #333; padding-bottom: 12px; }
11            .header h1 { font-size: 18px; margin-bottom: 4px; letter-spacing: 1px; }
12            .section { margin-bottom: 18px; }
13            .section-title { background: #f0f0f0; padding: 5px 10px; font-weight: bold; margin-bottom: 8px; border-left: 3px solid #333; font-size: 12px; }
14            .row { display: flex; margin-bottom: 4px; }
15            .col { flex: 1; padding-right: 10px; }
16            .label { font-weight: bold; color: #555; }
17            .desc-box { padding: 10px; background: #fafafa; border: 1px solid #ddd; margin-top: 5px; min-height: 60px; white-space: pre-wrap; }
18            .warning-text { margin-top: 20px; padding: 12px; background: #fff8e1; border: 1px solid #ffe082; font-size: 11px; line-height: 1.6; }
19            .note-text { margin-top: 15px; padding: 12px; background: #e3f2fd; border: 1px solid #90caf9; font-size: 11px; line-height: 1.6; }
20            .signatures { margin-top: 40px; }
21            .sig-row { display: flex; gap: 40px; margin-bottom: 35px; }
22            .sig-block { flex: 1; text-align: center; }
23            .sig-line { border-top: 1px solid #333; margin-top: 30px; padding-top: 5px; font-size: 11px; }
24            .sig-cpf { font-size: 10px; color: #666; margin-top: 2px; }
25            .obs-box { margin-top: 20px; }
26            .obs-field { border: 1px solid #ccc; min-height: 80px; padding: 8px; margin-top: 5px; }
27            .footer { margin-top: 30px; text-align: center; font-size: 9px; color: #000; border-top: 1px solid #ddd; padding-top: 8px; }
28            @media print { body { padding: 15px 25px; } }
29          </style>
30        </head>
31        <body>
32          <div class="header">
33            <h1>${q}</h1>
34          </div>
35
36          <div class="section">
37            <div class="section-title">DADOS DA EMPRESA</div>
38            <div class="row">
39              <div class="col"><span class="label">
39Razão Social:</span> ${I?.nome||"-"}</div>
40              <div class="col"><span class="label">CNPJ/CPF:</span> ${Se(I?.inscricao||null)}</div>
41            </div>
42          </div>
43
44          <div class="section">
45            <div class="section-title">DADOS DO EMPREGADO</div>
46            <div class="row">
47              <div class="col"><span class="label">Nome:</span> ${v?.nome||"-"}</div>
48              <div class="col"><span class="label">CPF:</span> ${D(v?.cpf||null)}</div>
49            </div>
50            <div class="row">
51              <div class="col"><span class="label">Matrícula:</span> ${v?.codigo||"-"}</div>
52              <div class="col"><span class="label">Data de Admissão:</span> ${C(v?.admissao||null)}</div>
53            </div>
54          </div>
55
56          <div class="section">
57            <div class="section-title">DADOS DA OCORRÊNCIA</div>
58            <div class="row">
59              <div class="col"><span class="label">Data:</span> ${C(e.data_lancamento)}</div>
60              ${t?"":`<div class="col"><span class="label">Reincidência:</span> ${e.reincidencia==="S"?"Sim":"Não"}</div>`}
61            </div>
62            ${i?`
63            <div class="row">
64              <div class="col"><span class="label">Data Início:</span> ${C(e.data_inicio)}</div>
65              <div class="col"><span class="label">Dias:</span> ${e.dias||"-"}</div>
66              <div class="col"><span class="label">Data Fim:</span> ${C(e.data_fim)}</div>
67            </div>
68            `:""}
69            ${t?"":`
70            ${e.encarregado_id?`
71            <div class="row">
72              <div class="col"><span class="label">Encarregado:</span> ${y}</div>
73              <div class="col"><span class="label">Função:</span> ${z}</div>
74            </div>
75            `:""}
76
77            <div style="margin-top: 8px;">
78              <span class="label">Artigos CLT 482:</span>
79              <div style="margin-top: 4px; padding-left: 10px; line-height: 1.6;">${n}</div>
80            </div>
81            `}
82            <div style="margin-top: 10px;">
83              <span class="label">Descrição da Ocorrência:</span>
84              <div class="desc-box">${ye}</div>
85            </div>
86          </div>
87
88          ${t?`
89          <div class="warning-text">
90            <strong>Ressaltamos</strong> que este documento tem caráter informativo e de registro do fato ocorrido, ficando arquivado no prontuário do empregado.
91          </div>
92          `:`
93          <div class="warning-text">
94            <strong>Ressaltamos</strong> que a reiteração de tal comportamento poderá ensejar sanções mais graves, como suspensão disciplinar ou, em última instância, a rescisão do contrato de trabalho por justa causa.
95          </div>
96          `}
97
98          <div class="note-text">
99            <strong>Nota ao Empregado:</strong> A assinatura deste documento confirma apenas o recebimento da comunicação. Caso discorde dos fatos aqui narrados, você tem o direito de não assinar ou, preferencialmente, de manifestar sua discordância por escrito no campo "Observações" abaixo.
100          </div>
101
102          <div class="signatures">
103            <div class="sig-row">
104              <div class="sig-block">
105                <div class="sig-line">Encarregado</div>
106              </div>
107              <div class="sig-block">
108                <div class="sig-line">Empregado</div>
109              </div>
110            </div>
111            <div class="sig-row">
112              <div class="sig-block">
113                <div class="sig-line">Testemunha 1</div>
114                <div class="sig-cpf">CPF:</div>
115              </div>
116              <div class="sig-block">
117                <div class="sig-line">Testemunha 2</div>
118                <div class="sig-cpf">CPF:</div>
119              </div>
120            </div>
121          </div>
122
123          <div class="obs-box">
124            <span class="label">Observações do Empregado (Opcional):</span>
125            <div class="obs-field"></div>
126          </div>
127
128          <div class="footer">
129            <p>Documento gerado em ${new Date().toLocaleDateString("pt-BR")} - ${new Date().toLocaleTimeString("pt-BR")} | Nukt Serviços Digitais - ${L?.email||"-"}</p>
130          </div>
131        </body>
132        </html>
133      `,$=window.open("","_blank");$?($.document.write($e),$.document.close(),$.focus(),setTimeout(()=>$.print(),500)):E.error("Não foi possível abrir a janela de impressão. Verifique se pop-ups estão bloqueados.")}catch(v){console.error("Erro ao gerar impressão:",v),E.error(`Erro ao gerar impressão da ${i?"suspensão":"advertência"}`)}},Ne=async e=>{try{const{data:s}=await r.from("empregados").select("nome, codigo, cpf, admissao").eq("id",e.empregado_id).single(),{data:i}=await r.from("empresas").select("inscricao, nome").eq("id",e.empresa_id).single();let t="-";if(e.encarregado_id){const{data:n}=await r.from("empregados").select("nome, cargo_id, empresas_cargos(nome)").eq("id",e.encarregado_id).single();if(n){const D=n.empresas_cargos?.nome;t=D?`${n.nome} - Cargo: ${D}`:n.nome}}const q=n=>{if(!n)return"-";const D=n.replace(/\D/g,"");return D.length!==11?n:D.replace(/(\d{3})(\d{3})(\d{3})(\d{2})/,"$1.$2.$3-$4")},v=n=>n&&oe(void 0,n)||"-",I=e.observacoes||"-",y="Autorização de Desconto",z=`
134        <!DOCTYPE html>
135        <html>
136        <head>
137          <meta charset="UTF-8">
138          <title>${y} - ${s?.nome||""}</title>
139          <style>
140            * { margin: 0; padding: 0; box-sizing: border-box; }
141            body { font-family: 'Google Sans', 'Google Sans Text', Arial, sans-serif; font-size: 12px; padding: 30px 40px; color: #333; }
142            .header { text-align: center; margin-bottom: 25px; border-bottom: 2px solid #333; padding-bottom: 12px; }
143            .header h1 { font-size: 18px; margin-bottom: 4px; letter-spacing: 1px; }
144            .section { margin-bottom: 18px; }
145            .section-title { background: #f0f0f0; padding: 5px 10px; font-weight: bold; margin-bottom: 8px; border-left: 3px solid #333; font-size: 12px; }
146            .row { display: flex; margin-bottom: 4px; }
147            .col { flex: 1; padding-right: 10px; }
148            .label { font-weight: bold; color: #555; }
149            .desc-box { padding: 10px; background: #fafafa; border: 1px solid #ddd; margin-top: 5px; min-height: 60px; white-space: pre-wrap; }
150            .warning-text { margin-top: 20px; padding: 12px; background: #fff8e1; border: 1px solid #ffe082; font-size: 11px; line-height: 1.6; }
151            .note-text { margin-top: 15px; padding: 12px; background: #e3f2fd; border: 1px solid #90caf9; font-size: 11px; line-height: 1.6; }
152            .signatures { margin-top: 40px; }
153            .sig-row { display: flex; gap: 40px; margin-bottom: 35px; }
154            .sig-block { flex: 1; text-align: center; }
155            .sig-line { border-top: 1px solid #333; margin-top: 30px; padding-top: 5px; font-size: 11px; }
156            .sig-cpf { font-size: 10px; color: #666; margin-top: 2px; }
157            .obs-box { margin-top: 20px; }
158            .obs-field { border: 1px solid #ccc; min-height: 80px; padding: 8px; margin-top: 5px; }
159            .footer { margin-top: 30px; text-align: center; font-size: 9px; color: #000; border-top: 1px solid #ddd; padding-top: 8px; }
160            @media print { body { padding: 15px 25px; } }
161          </style>
162        </head>
163        <body>
164          <div class="header">
165            <h1>${y}</h1>
166          </div>
167
168          <div class="section">
169            <div class="section-title">DADOS DA EMPRESA</div>
170            <div class="row">
171              <div class="col"><span class="label">
171Razão Social:</span> ${i?.nome||"-"}</div>
172              <div class="col"><span class="label">CNPJ/CPF:</span> ${v(i?.inscricao||null)}</div>
173            </div>
174          </div>
175
176          <div class="section">
177            <div class="section-title">DADOS DO EMPREGADO</div>
178            <div class="row">
179              <div class="col"><span class="label">Nome:</span> ${s?.nome||"-"}</div>
180              <div class="col"><span class="label">CPF:</span> ${q(s?.cpf||null)}</div>
181            </div>
182            <div class="row">
183              <div class="col"><span class="label">Matrícula:</span> ${s?.codigo||"-"}</div>
184              <div class="col"><span class="label">Data de Admissão:</span> ${C(s?.admissao||null)}</div>
185            </div>
186          </div>
187
188          <div class="section">
189            <div class="section-title">DADOS DA AUTORIZAÇÃO</div>
190            <div class="row">
191              <div class="col"><span class="label">Data:</span> ${C(e.data_lancamento)}</div>
192            </div>
193            <div class="row">
194              <div class="col"><span class="label">Encarregado:</span> ${t}</div>
195            </div>
196            <div style="margin-top: 10px;">
197              <span class="label">Descrição / Motivo do Desconto:</span>
198              <div class="desc-box">${I}</div>
199            </div>
200          </div>
201
202          <div class="warning-text">
203            <strong>Declaração e Autorização:</strong> Pelo presente instrumento, eu, empregado(a) acima qualificado(a), <strong>autorizo expressamente</strong> a empresa a proceder ao desconto em minha remuneração (salário, férias, 13º salário ou verbas rescisórias) do valor correspondente ao motivo descrito acima, nos termos do <strong>art. 462, § 1º, da CLT</strong> e conforme previsão expressa no <strong>Regulamento Interno da Empresa</strong>, cujas disposições declaro conhecer e aceitar integralmente.
204          </div>
205
206          <div class="note-text">
207            <strong>Nota ao Empregado:</strong> Declaro que fui devidamente informado(a) do motivo e do valor a ser descontado, bem como da previsão contida no Regulamento Interno da Empresa que autoriza tal desconto. Esta autorização é firmada de forma livre e espontânea.
208          </div>
209
210          <div class="signatures">
211            <div class="sig-row">
212              <div class="sig-block">
213                <div class="sig-line">Encarregado</div>
214              </div>
215              <div class="sig-block">
216                <div class="sig-line">Empregado</div>
217              </div>
218            </div>
219            <div class="sig-row">
220              <div class="sig-block">
221                <div class="sig-line">Testemunha 1</div>
222                <div class="sig-cpf">CPF:</div>
223              </div>
224              <div class="sig-block">
225                <div class="sig-line">Testemunha 2</div>
226                <div class="sig-cpf">CPF:</div>
227              </div>
228            </div>
229          </div>
230
231          <div class="footer">
232            <p>Documento gerado em ${new Date().toLocaleDateString("pt-BR")} - ${new Date().toLocaleTimeString("pt-BR")} | Nukt Serviços Digitais - ${L?.email||"-"}</p>
233          </div>
234        </body>
235        </html>
236      `,u=window.open("","_blank");u?(u.document.write(z),u.document.close(),u.focus(),setTimeout(()=>u.print(),500)):E.error("Não foi possível abrir a janela de impressão. Verifique se pop-ups estão bloqueados.")}catch(s){console.error("Erro ao gerar impressão:",s),E.error("Erro ao gerar impressão da autorização de desconto")}},_e=l!=="all"||j!=="all"||S!=="all"||p;return a.jsxs(ke,{title:"Ocorrências",children:[a.jsxs("div",{className:"flex flex-col h-[calc(100vh-5rem)] md:h-[calc(100vh-4rem)] overflow-hidden pt-1",children:[a.jsxs("div",{className:"flex-shrink-0 space-y-4 pb-4 px-0.5",children:[o&&a.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-5 gap-4",children:[a.jsx(A,{title:"Total",value:ue,icon:K,iconColor:"text-blue-500",iconBgColor:"bg-blue-500/10",valueColor:"text-blue-600",selected:l==="all",selectionColor:"ring-blue-500",borderColor:"border-blue-500/50",variant:"compact",onClick:()=>g("all")}),a.jsx(A,{title:"Ocorrências",value:he,icon:K,iconColor:"text-blue-500",iconBgColor:"bg-blue-500/10",valueColor:"text-blue-600",selected:l==="O",selectionColor:"ring-blue-500",borderColor:"border-blue-500/50",variant:"compact",onClick:()=>g("O")}),a.jsx(A,{title:"Advertências",value:fe,icon:Oe,iconColor:"text-purple-500",iconBgColor:"bg-purple-500/10",valueColor:"text-purple-600",selected:l==="A",selectionColor:"ring-purple-500",borderColor:"border-purple-500/50",variant:"compact",onClick:()=>g("A")}),a.jsx(A,{title:"Suspensões",value:be,icon:qe,iconColor:"text-red-500",iconBgColor:"bg-red-500/10",valueColor:"text-red-600",selected:l==="S",selectionColor:"ring-red-500",borderColor:"border-red-500/50",variant:"compact",onClick:()=>g("S")}),a.jsx(A,{title:"Acidentes de Trabalho",value:we,icon:K,iconColor:"text-green-500",iconBgColor:"bg-green-500/10",valueColor:"text-green-600",selected:l==="C",selectionColor:"ring-green-500",borderColor:"border-green-500/50",variant:"compact",onClick:()=>g("C")})]}),o&&a.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[a.jsxs("div",{className:"flex flex-wrap items-center gap-2 flex-1",children:[a.jsx(Xe,{value:p,onChange:N,placeholder:"Buscar por Nome",className:"flex-1 max-w-sm",hideClearButton:!0,hideSearchIcon:!0}),a.jsx(Y,{value:j,onValueChange:e=>J(e||"all"),options:[{value:"all",label:"Serviços"},...xe.map(e=>({value:e.id,label:e.nome}))],placeholder:"Serviço",searchPlaceholder:"Buscar Serviço",emptyMessage:"Nenhum serviço encontrado.",className:"w-[320px]"}),a.jsx(Y,{value:S,onValueChange:e=>Q(e||"all"),options:[{value:"all",label:"Cargos"},...ve.map(e=>({value:e.id,label:e.nome}))],placeholder:"Cargo",searchPlaceholder:"Buscar Cargo",emptyMessage:"Nenhum cargo encontrado.",className:"w-[320px]"}),a.jsx(Y,{value:l,onValueChange:e=>g(e||"all"),options:[{value:"all",label:"Tipos"},{value:"O",label:"Ocorrência"},{value:"A",label:"Advertência"},{value:"S",label:"Suspensão"},{value:"C",label:"Acidente de Trabalho"},{value:"D",label:"Autorização de Desconto"}],placeholder:"Tipo",searchPlaceholder:"Buscar Tipo",emptyMessage:"Nenhum tipo encontrado.",className:"w-[220px]"}),_e&&a.jsx(X,{variant:"destructive",size:"icon",title:"Limpar filtros","aria-label":"Limpar filtros",onClick:()=>{g("all"),J("all"),Q("all"),N("")},children:a.jsx(ee,{className:"h-4 w-4"})})]}),a.jsx("div",{className:"flex items-center gap-2",children:de&&a.jsxs(X,{onClick:()=>m("/ocorrencias/incluir"),className:"bg-black hover:bg-black/90 text-white",children:[a.jsx(Ie,{className:"h-4 w-4 mr-2"}),"Nova Ocorrência"]})})]})]}),o?a.jsx(Ve,{data:O,paginatedItems:f.paginatedItems,isLoading:ce,emptyMessage:"Nenhuma ocorrência encontrada",emptySearchMessage:"Nenhuma ocorrência encontrada para a busca",hasSearch:!!p,getRowKey:e=>e.id,pagination:{currentPage:f.currentPage,totalPages:f.totalPages,totalItems:O.length,startIndex:f.startIndex,endIndex:f.endIndex,hasNextPage:f.hasNextPage,hasPrevPage:f.hasPrevPage,goToPage:f.goToPage,totalUnfilteredItems:c?.length||0},renderHeader:()=>a.jsxs(a.Fragment,{children:[a.jsx(R,{className:"normal-case",sortDirection:x.getSortDirection("empregado_nome"),onSort:()=>x.requestSort("empregado_nome"),children:"Nome"}),a.jsx(R,{className:"normal-case",sortDirection:x.getSortDirection("empregado_servico"),onSort:()=>x.requestSort("empregado_servico"),children:"Serviço"}),a.jsx(R,{className:"normal-case",sortDirection:x.getSortDirection("empregado_cargo"),onSort:()=>x.requestSort("empregado_cargo"),children:"Cargo"}),a.jsx(P,{className:"normal-case text-center w-24",children:"Tipo"}),a.jsx(R,{className:"normal-case text-center w-24",sortDirection:x.getSortDirection("data_lancamento"),onSort:()=>x.requestSort("data_lancamento"),children:"Data"}),a.jsx(P,{className:"normal-case text-center w-20",children:"Anexos"}),a.jsx(P,{className:"normal-case text-left w-44 whitespace-nowrap",children:"Inclusão"}),a.jsx(P,{className:"normal-case",children:"Usuário"}),(U||H)&&a.jsx(P,{className:"normal-case"})]}),renderRow:e=>a.jsxs(a.Fragment,{children:[a.jsx(h,{className:"text-sm py-1.5",children:a.jsxs("div",{className:"leading-tight",children:[a.jsx("div",{children:e.empregado?.nome||"-"}),a.jsxs("div",{className:"text-xs text-muted-foreground mt-0.5",children:[a.jsx("span",{className:"font-bold",children:"Admissão:"})," ",C(e.empregado?.admissao||null)," - ",a.jsx("span",{className:"font-bold",children:"Matrícula:"})," ",e.empregado?.codigo||"-"]}
236)]})}),a.jsx(h,{className:"text-sm py-1.5",children:e.empregado?.servico?.nome||"-"}),a.jsx(h,{className:"text-sm py-1.5",children:e.empregado?.cargo?.nome||"-"}),a.jsx(h,{className:"text-center text-sm py-1.5",children:a.jsx("span",{className:`inline-flex items-center px-2 py-0.5 text-xs font-medium rounded whitespace-nowrap ${ie[e.tipo]?.color}`,children:ie[e.tipo]?.label||e.tipo})}),a.jsx(h,{className:"text-center text-sm py-1.5",children:C(e.data_lancamento)}),a.jsx(h,{className:"text-center text-sm py-1.5",children:(Z?.get(e.id)||0)>0&&a.jsx("span",{className:"inline-flex items-center px-2 py-0.5 text-xs font-medium text-white bg-blue-600 rounded",children:Z?.get(e.id)})}),a.jsx(h,{className:"text-left text-sm py-1.5 whitespace-nowrap",children:ra(e.created_at)}),a.jsx(h,{className:"text-sm py-1.5",children:e.usuario?.full_name||"-"}),(U||H)&&(()=>{const s=le||e.usuario_id===L?.id,i=U&&s,t=H&&s;return a.jsx(h,{className:"text-right py-1.5",children:a.jsx("div",{className:"flex justify-end gap-1",children:a.jsxs(ze,{children:[a.jsx(Fe,{asChild:!0,children:a.jsxs(X,{size:"sm",className:"bg-black hover:bg-black/90 text-white hover:text-white focus-visible:ring-0 focus-visible:ring-offset-0 h-6 text-xs",children:[a.jsx(Re,{className:"h-3 w-3 mr-1"}),"Opções"]})}),a.jsxs(Me,{align:"end",className:"bg-popover",children:[a.jsxs(T,{onClick:()=>m(`/ocorrencias/${e.id}?view=true`),children:[a.jsx(Be,{className:"h-4 w-4 mr-2"}),"Ver"]}
236),(e.tipo==="A"||e.tipo==="S"||e.tipo==="O")&&a.jsxs(T,{onClick:()=>De(e,e.tipo),children:[a.jsx(ae,{className:"h-4 w-4 mr-2"}),"Imprimir"]}),e.tipo==="D"&&a.jsxs(T,{onClick:()=>Ne(e),children:[a.jsx(ae,{className:"h-4 w-4 mr-2"}),"Imprimir"]}),i&&a.jsxs(T,{onClick:()=>m(`/ocorrencias/${e.id}`),children:[a.jsx(Le,{className:"h-4 w-4 mr-2"}),"Editar"]}),t&&a.jsxs(a.Fragment,{children:[a.jsx(Ue,{}),a.jsxs(T,{onClick:()=>M(e.id),className:"text-red-600 focus:text-red-600 focus:bg-red-50 dark:focus:bg-red-950/50",children:[a.jsx(se,{className:"h-4 w-4 mr-2"}),"Excluir"]})]})]})]})})})})()]})}):a.jsx("div",{className:"rounded-md border text-center py-12 text-muted-foreground",children:"Selecione uma empresa para visualizar as ocorrências"})]}),a.jsx(Je,{open:!!k,onOpenChange:()=>{M(null),W("")},children:a.jsxs(Qe,{children:[a.jsxs(We,{children:[a.jsx(Ze,{children:"Confirmar Exclusão"}),a.jsx(ea,{asChild:!0,children:a.jsx("div",{children:a.jsx("p",{children:"Esta ação não pode ser desfeita."})})})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs("p",{className:"text-sm",children:["Digite ",a.jsx("span",{className:"font-bold text-red-600",children:"EXCLUIR"})," para confirmar:"]}),a.jsx(He,{value:B,onChange:e=>W(e.target.value),placeholder:"EXCLUIR"})]}),a.jsxs(aa,{children:[a.jsxs(sa,{className:"bg-red-600 text-white hover:bg-red-700 hover:text-white flex items-center gap-2",children:[a.jsx(ee,{className:"h-4 w-4"}),"Fechar"]}),a.jsxs(oa,{onClick:je,disabled:B!=="EXCLUIR",className:B==="EXCLUIR"?"bg-black text-white hover:bg-black/90":"bg-gray-500 text-white hover:bg-gray-500",children:[a.jsx(se,{className:"h-4 w-4"}),"Excluir"]})]})]})})]})};export{Da as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.