PageSourceSearch

https://consultor.suaquadra.com.br/assets/Visitas-BWTa3YUE.js

js suaquadra.com.br collected 2026-10-08 01:38:38 UTC 6,316 bytes, 1 lines download raw bytes

1import{ac as H,u as $,a as Q,ad as D,ae as G,r as u,j as a,i as U,B as _,S as W,I as J,P as K,k as X,m as Y,n as Z,C as ee,o as ae,af as se,ag as S,t as te,p as N,q as i}from"./index-DNHEv6Hu.js";import{T as re,a as oe,b as ne}from"./tabs-fdShN8rG.js";import{B as ie}from"./badge-CMAcBYIW.js";import{L as le,S as de}from"./LoadErrorState-CaMefdNO.js";import{u as ce,S as me}from"./useSyncWithProgress-DEPBqoXq.js";import{f as ue}from"./format-llOPxhtu.js";import{V as y}from"./statusConfig-DENhGims.js";import{u as xe,N as fe,g as he}from"./NotasEnablementBadge-iT4YnkqC.js";import{R as pe}from"./refresh-cw-B37iSTzs.js";import{S as ge}from"./sliders-horizontal-hG6EOD0c.js";import{C as je}from"./circle-alert-8_2iJvKg.js";function w(t){const c=H(t);return c.setHours(23,59,59,999),c}const b=[{key:"em_aberto",label:"Em aberto"},{key:"agendada",label:"Agendada"},{key:"realizada",label:"Realizada"},{key:"cancelada",label:"Cancelada"}];function C(t){return t.status!=="agendada"&&t.status!=="confirmada"?!1:!S(t.data_hora,w(new Date))}function ze(){const{consultor:t,isAdmin:c}=$(),k=Q(),{data:r,isLoading:M,isError:p,isFetching:g,refetch:j}=D(),T=G(),d=(r==null?void 0:r.visitas)??[],A=(r==null?void 0:r.leadNameMap)??{},z=(r==null?void 0:r.imoveisComPropostaAtiva)??new Set,E=u.useMemo(()=>d.map(e=>({dealId:e.hubspot_meeting_id,telefone:e.inquilino_telefone})),[d]),I=xe(E).data,[l,L]=u.useState("em_aberto"),[x,q]=u.useState(""),[v,B]=u.useState("mais_proximas"),{syncModalOpen:m,syncSteps:P,syncError:F,runSync:R,closeModal:V}=ce(),O=async()=>{if(t)try{await R({consultorEmail:t.email,hubspotOwnerId:t.hubspot_owner_id??null,isAdmin:c,onComplete:T})&&(te({consultorId:t.id,actionType:"sync_manual",objectType:"sync"}),N.success("Dados atualizados do HubSpot"))}catch(e){console.error("Erro inesperado ao atualizar visitas",e),N.error("Não foi possível atualizar agora. Tente novamente em instantes.")}},f=(e=>{let n;if(e==="em_aberto"?n=d.filter(C):e==="agendada"?n=d.filter(s=>(s.status==="agendada"||s.status==="confirmada")&&S(s.data_hora,w(new Date))):n=d.filter(s=>s.status===e),x.trim()){const s=x.toLowerCase();n=n.filter(o=>o.imovel_endereco.toLowerCase().includes(s))}return n.sort((s,o)=>{switch(v){case"maior_valor":return(o.valor??0)-(s.valor??0);case"menor_valor":return(s.valor??0)-(o.valor??0);case"mais_distantes":return e==="agendada"?i(o.data_hora)-i(s.data_hora):i(s.data_hora)-i(o.data_hora);case"mais_proximas":default:return e==="agendada"?i(s.data_hora)-i(o.data_hora):i(o.data_hora)-i(s.data_hora)}}),n})(l),h=b.find(e=>e.key===l);return M?a.jsx(U,{estimatedMs:2e3}):p&&!r?a.jsx(le,{message:"Não foi possível carregar suas visitas agora.",onRetry:()=>{j()},retrying:g}):a.jsxs("div",{className:"p-4 overflow-x-hidden",children:[p&&a.jsx(de,{onRetry:()=>{j()},retrying:g}),a.jsx("div",{className:"flex justify-end mb-2",children:a.jsxs(_,{variant:"outline",size:"sm",onClick:O,disabled:m,className:"gap-2",children:[a.jsx(pe,{className:`h-4 w-4 ${m?"animate-spin":""}`}),m?"Sincronizando...":"Atualizar"]})}),a.jsx(me,{open:m,steps:P,error:F,onClose:V}),a.jsx(re,{value:l,onValueChange:e=>L(e),children:a.jsx(oe,{className:"grid w-full grid-cols-4 h-auto",children:b.map(e=>a.jsx(ne,{value:e.key,className:"text-[0.6rem] px-0.5 py-1.5 min-w-0 truncate",children:e.label},e.key))})}),a.jsxs("div",{className:"relative mt-3 flex gap-2",children:[a.jsxs("div",{className:"relative flex-1",children:[a.jsx(W,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),a.jsx(J,{placeholder:"Buscar por endereço...",value:x,onChange:e=>q(e.target.value),className:"pl-9"})]}),a.jsxs(K,{children:[a.jsx(X,{asChild:!0,children:a.jsx(_,{variant:"outline",size:"icon",className:"shrink-0",children:a.jsx(ge,{className:"h-4 w-4"})})}),a.jsx(Y,{align:"end",className:"w-48 p-1",children:[{value:"mais_proximas",label:"Mais próximas"},{value:"mais_distantes",label:"Mais distantes"},{value:"maior_valor",label:"Maior valor"},{value:"menor_valor",label:"Menor valor"}].map(e=>a.jsx("button",{className:`w-full rounded px-3 py-2 text-left text-sm ${v===e.value?"bg-accent text-accent-foreground font-medium":"hover:bg-muted"}`,onClick:()=>B(e.value),children:e.label},e.value))})]})]}),a.jsxs("h2",{className:"mt-4 flex items-center gap-2 text-lg font-semibold text-foreground",children:[h==null?void 0:h.label,a.jsx("span",{className:"inline-flex h-6 min-w-6 items-center justify-center rounded-full bg-muted px-2 text-sm font-semibold text-muted-foreground",children:f.length})]}),a.jsx("div",{className:"mt-3 space-y-3",children:f.length===0?a.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[a.jsx(Z,{className:"mb-4 h-16 w-16 text-muted-foreground
1/30"}),a.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:l==="em_aberto"?a.jsxs(a.Fragment,{children:["Tudo organizado por aqui!",a.jsx("br",{}),"Sem visitas em aberto"]}):"Nenhuma visita nesta categoria"})]}):f.map(e=>{const n=C(e),s=y[e.status]??y.agendada,o=(e.contato_id?A[e.contato_id]:void 0)??e.inquilino_nome??void 0;return a.jsx(ee,{className:"cursor-pointer transition-shadow hover:shadow-md",onClick:()=>k(`/visitas/${e.id}`),children:a.jsxs(ae,{className:"relative p-4",children:[n&&a.jsx(je,{className:"absolute right-3 top-3 h-5 w-5 text-destructive"}),a.jsx("p",{className:"pr-8 text-sm font-medium text-foreground break-words",children:e.imovel_endereco}),e.valor!=null&&a.jsx("p",{className:"mt-0.5 text-sm font-semibold text-foreground",children:ue(e.valor)}),a.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:se(e.data_hora,"dd/MM/yyyy 'às' HH:mm")}),a.jsx("p",{className:"text-sm text-muted-foreground",children:o??"Lead"}),e.motivo&&e.status==="cancelada"&&a.jsxs("p",{className:"mt-1 text-xs text-destructive",children:["Motivo: ",e.motivo]}),a.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[a.jsx(ie,{variant:"outline",className:s.className,children:s.label}),a.jsx(fe,{notas:he(I,{dealId:e.hubspot_meeting_id,telefone:e.inquilino_telefone})}),(l==="agendada"||l==="realizada")&&e.link_anuncio_suaquadra&&z.has(e.link_anuncio_suaquadra)&&a.jsx("p",{className:"ml-2 text-xs font-medium text-amber-600",children:"Este imóvel já tem proposta ativa"})]})]})},e.id)})})]})}export{ze 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.