1import{U as z,d as D,o as s,c as w,w as f,s as a,l as ae,t as d,g as l,N as S,b as m,b3 as se,V as ne,L as K,a0 as L,R,ah as oe,y as _,F as M,i as $,v as i,bM as C,B as re,bp as ie,E as le,D as T,H as ce,bN as ue,K as G,J as I,I as P,aU as de,bO as pe}from"./index.27288c8d.js";import{PRE_PAYMENT_STATUSES as me,AWAITING_PAYMENT_STATUSES as _e,AWAITING_IMAGES_STATUSES as ge}from"./statusGroups.eb87ec97.js";import{s as ve,e as he,a as fe}from"./dateRange.831733b6.js";import"./utils.e90f0086.js";const B="/assets/corner-yellow.a3f355fd.svg";class xe{async getMetrics(e){return z.get("partner/dashboard/metrics",{params:{partner_id:e,partner_type:"broker"}}).then(g=>g.data)}async getPerformance(e){return z.get("partner/dashboard/performance",{params:{partner_id:e,partner_type:"broker"}}).then(g=>g.data)}}const be={class:"text-caption font-weight-semibold text-medium-emphasis mb-2"},ye={key:0,class:"text-primary"},ke={class:"metric-card__value d-flex align-baseline gap-1 font-weight-bold"},Ee={key:0,class:"metric-card__prefix"},Ce={class:"metric-card__number text-primary"},Se={key:1,class:"metric-card__suffix"},Ae={key:0,class:"mt-2"},we={key:1,class:"text-caption text-medium-emphasis mt-2"},Me={key:2,class:"d-flex align-center gap-1 mt-2"},$e={class:"text-caption text-medium-emphasis"},Ie=D({__name:"DashboardMetricCard",props:{title:{},titleHighlight:{},value:{},prefix:{},suffix:{},trend:{},trendLabel:{},subtitle:{},progressValue:{},progressMax:{}},setup(A){return(e,g)=>(s(),w(L,{class:"metric-card pa-3",rounded:"lg",elevation:"0"},{default:f(()=>{var h;
1return[a("div",be,[ae(d(e.title),1),e.titleHighlight?(s(),l("span",ye,d(e.titleHighlight),1)):S("",!0)]),a("div",ke,[e.prefix?(s(),l("span",Ee,d(e.prefix),1)):S("",!0),a("span",Ce,d(e.value),1),e.suffix?(s(),l("span",Se,d(e.suffix),1)):S("",!0)]),e.progressValue!==null&&e.progressValue!==void 0&&e.progressMax?(s(),l("div",Ae,[m(se,{"model-value":e.progressValue/e.progressMax*100,color:"primary","bg-color":"surface-variant",rounded:"",height:"8"},null,8,["model-value"])])):S("",!0),e.subtitle?(s(),l("div",we,d(e.subtitle),1)):S("",!0),e.trend!==null&&e.trend!==void 0?(s(),l("div",Me,[m(ne,{icon:e.trend>=0?"mdi-arrow-up":"mdi-arrow-down",color:e.trend>=0?"success":"error",size:"16"},null,8,["icon","color"]),a("span",{class:K(["text-caption font-weight-semibold",e.trend>=0?"text-success":"text-error"])},d(Math.abs(e.trend))+"%",3),a("span",$e,d((h=e.trendLabel)!=null?h:"vs m\xEAs anterior"),1)])):S("",!0)]}),_:1}))}});const Y=R(Ie,[["__scopeId","data-v-197bd4e5"]]),De={key:0,class:"corner-icon"},Re=["src"],Te={class:"text-caption font-weight-semibold text-medium-emphasis mb-1"},Pe={class:"opportunity-card__value text-primary font-weight-bold mt-1"},Be={class:"text-caption text-medium-emphasis mt-1 opportunity-card__desc"},Le=D({__name:"DashboardOpportunityCard",props:{title:{},value:{},description:{},hasCornerIcon:{type:Boolean},cornerIconSrc:{},clickable:{type:Boolean}},emits:["click"],setup(A){return(e,g)=>(s(),w(L,{class:K(["opportunity-card pa-3 position-relative overflow-hidden",{"opportunity-card--clickable":e.clickable}]),rounded:"lg",elevation:"0",onClick:g[0]||(g[0]=h=>e.clickable?e.$emit("click"):void 0)},{default:f(()=>[e.hasCornerIcon&&e.cornerIconSrc?(s(),l("div",De,[a("img",{src:e.cornerIconSrc,alt:"",class:"corner-icon__img"},null,8,Re)])):S("",!0),a("div",Te,d(e.title),1),a("div",Pe,d(e.value),1),a("div",Be,d(e.description),1)]),_:1},8,["class"]))}});const Fe=R(Le,[["__scopeId","data-v-2b66567f"]]),Ve={class:"chart-wrapper"},Ne={class:"chart-y-axis"},Oe={class:"chart-area"},qe={class:"chart-bars"},He={class:"chart-bar-wrap"},ze={class:"chart-legend mt-3"},Ge={class:"d-flex align-center gap-2"},Ye={class:"d-flex align-center gap-2"},U="#DEDC1C",j="#6B6B6B",J=5e4,Ue=5,je=D({__name:"PerformanceChart",props:{data:{default:()=>[]},maxValue:{}},setup(A){const e=A,{current:g}=oe(),h=_(()=>g.value.dark),y=_(()=>h.value?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.08)"),k=_(()=>h.value?"rgba(255,255,255,0.6)":"rgba(0,0,0,0.45)"),u=["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],c=_(()=>{if(e.maxValue)return e.maxValue;if(!e.data.length)return J;const v=e.data.flatMap(p=>[p.broker_value,p.brokerage_value]),b=Math.max(...v);return b<=0?J:Math.ceil(b*(1+Ue/100))}),o=_(()=>{const v=c.value;return[v,v*.67,v*.33,0].map(b=>b>=1e3?`${Math.round(b/1e3)}K`:String(Math.round(b)))});function x(v){return c.value===0?0:Math.max(v/c.value*100,2)}return(v,b)=>(s(),w(L,{class:"performance-chart pa-4",rounded:"lg",elevation:"0"},{default:f(()=>[b[0]||(b[0]=a("div",{class:"text-caption font-weight-semibold text-medium-emphasis mb-4"}," Evolu\xE7\xE3o de performance ",-1)),a("div",Ve,[a("div",Ne,[(s(!0),l(M,null,$(i(o),p=>(s(),l("span",{key:p,class:"chart-y-label",style:C({color:i(k)})},d(p),5))),128))]),a("div",Oe,[a("div",{class:"chart-grid",style:C({"--grid-color":i(y)})},[(s(!0),l(M,null,$(i(o),p=>(s(),l("div",{key:p,class:"chart-grid-line"}))),128))],4),a("div",qe,[(s(!0),l(M,null,$(v.data,p=>(s(),l("div",{key:p.month,class:"chart-bar-group"},[a("div",He,[a("div",{class:"chart-bar",style:C({height:x(p.broker_value)+"%",backgroundColor:U})},null,4),a("div",{class:"chart-bar",style:C({height:x(p.brokerage_value)+"%",backgroundColor:j})},null,4)]),a("span",{class:"chart-x-label",style:C({color:i(k)})},d(u[p.month-1]),5)]))),128))])])]),a("div",ze,[a("div",Ge,[a("div",{class:"legend-dot",style:C({backgroundColor:U})},null,4),a("span",{class:"text-caption",style:C({color:i(k)})},"Corretor",4)]),a("div",Ye,[a("div",{class:"legend-dot",style:C({backgroundColor:j})},null,4),a("span",{class:"text-caption",style:C({color:i(k)})},"Corretora",4)])])]),_:1}))}});
1const Je=R(je,[["__scopeId","data-v-f104117b"]]),Ke="/assets/medal-bronze.54f9b0ed.png",We="/assets/medal-gold.f2325395.png",Xe="/assets/medal-silver.c2962c5e.png",Qe={class:"ranking-medal-wrap d-flex flex-column align-center justify-center flex-grow-1 gap-3"},Ze={key:0,class:"text-caption text-medium-emphasis text-center"},et=["src","alt"],tt={class:"text-caption text-medium-emphasis text-center"},at={key:0,class:"text-caption font-weight-semibold",style:{color:"#d3975c"}},st={key:2,class:"text-caption text-medium-emphasis text-center"},nt=D({__name:"RankingCard",props:{currentRank:{},position:{},loading:{type:Boolean}},setup(A){const e={gold:We,silver:Xe,bronze:Ke},g=A,h=_(()=>{var c;return(c=g.currentRank)!=null?c:null}),y=_(()=>h.value?e[h.value]:null),k=_(()=>{var c,o;return(o={gold:"Ouro",silver:"Prata",bronze:"Bronze"}[(c=h.value)!=null?c:""])!=null?o:""}),u=_(()=>{switch(h.value){case"gold":return"Parab\xE9ns! Sua corretora est\xE1 entre as 10 melhores do ranking e conquistou o Selo Ouro.";case"silver":return"\xD3timo resultado! Sua corretora est\xE1 entre as Top 20. Continue avan\xE7ando para alcan\xE7ar o Selo Ouro.";case"bronze":return"Bom desempenho! Sua corretora est\xE1 entre as Top 30 melhores e conquistou o Selo Bronze. Continue avan\xE7ando para alcan\xE7ar o Selo Prata.";default:return"Sua corretora ainda n\xE3o est\xE1 entre as posi\xE7\xF5es com selo este m\xEAs. Continue acompanhando suas oportunidades para subir no ranking."}});return(c,o)=>(s(),w(L,{class:"ranking-card pa-4 d-flex flex-column",rounded:"lg",elevation:"0",height:"100%"},{default:f(()=>[o[0]||(o[0]=a("div",{class:"text-caption font-weight-semibold text-medium-emphasis mb-4"}," Ranking ",-1)),a("div",Qe,[c.loading?(s(),l("span",Ze," Calculando ranking... ")):i(y)?(s(),l(M,{key:1},[a("img",{src:i(y),alt:i(k),class:"medal-img"},null,8,et),a("span",tt,d(i(u)),1),c.position!==null&&c.position!==void 0?(s(),l("span",at,d(`${c.position}\xAA posi\xE7\xE3o`),1)):S("",!0)],64)):(s(),l("span",st,d(i(u)),1))])]),_:1}))}});const ot=R(nt,[["__scopeId","data-v-c73f4ca2"]]),rt={class:"broker-dashboard"},it={key:0,class:"text-caption text-medium-emphasis mt-4 text-right"},lt={key:1,class:"text-caption text-medium-emphasis mt-4 text-right"},ct=6e4,ut=5e3,dt=D({__name:"index",setup(A){const e=`(R$ ${ut.toLocaleString("pt-BR",{minimumFractionDigits:2,maximumFractionDigits:2})})`,g=re(),h=ie(),y=le(),k=new xe,u=T(null),c=T(null),o=T(null),x=T(null);let v=null;function b(){var r;const n=de.getItem(pe.BROKERAGE_FIRM_DATA);return(r=n==null?void 0:n.id)!=null?r:null}async function p(){const n=b();if(!n)return;const r=await k.getMetrics(n);u.value=r.metrics,c.value=r.trends,o.value=r.opportunities}async function W(){const n=b();!n||(x.value=await k.getPerformance(n))}async function V(){try{await p()}catch(n){console.error("[PartnerDashboard] Erro no refresh de m\xE9tricas:",n)}}function N(){F(),v=setInterval(V,ct)}function F(){v!==null&&(clearInterval(v),v=null)}function O(){document.hidden?F():(V(),N())}const X=_(()=>[{title:"Renova\xE7\xF5es vencendo",value:o.value!==null?String(o.value.renewals_next_30_days):"0",description:"Renova\xE7\xF5es que vencem nos pr\xF3ximos 30 dias e precisam de acompanhamento.",hasCornerIcon:!0,cornerIconSrc:B,onClick:()=>y.push({name:"insuranceProposal-ticket",query:{type:"RENEW",expiring_from:ve(),expiring_to:he(30)}})},{title:"Alto potencial",value:o.value!==null?String(o.value.high_potential_count):"0",description:"Propostas promissoras que merecem prioridade no contato.",hasCornerIcon:!0,cornerIconSrc:B,onClick:()=>y.push({name:"insuranceProposal-quotations",query:{status:me.join(","),created_after:fe(3)}})},{title:"Aguardando pagamento",value:o.value!==null?String(o.value.awaiting_payment):"0",description:"Clientes que ainda n\xE3o conclu\xEDram o pagamento.",hasCornerIcon:!0,cornerIconSrc:B,onClick:()=>y.push({name:"insuranceProposal-quotations",query:{status:_e.join(",")}})},{title:"Aguardando imagens",value:o.value!==null?String(o.value.awaiting_images):"0",description:"Clientes que ainda precisam enviar as imagens solicitadas.",hasCornerIcon:!0,cornerIconSrc:B,onClick:()=>y.push({name:"insuranceProposal-quotations",query:{status:ge.join(",")}})}]),Q=_(()=>{var n,r,t,E;return[{title:"Pr\xEAmio emitido no m\xEAs",prefix:"R$",value:u.value!==null?u.value.premium_issued.toLocaleStr
1ing("pt-BR",{minimumFractionDigits:2,maximumFractionDigits:2}):"0,00",trend:(r=(n=c.value)==null?void 0:n.premium_issued)!=null?r:null},{title:"Ap\xF3lices vendidas",value:u.value!==null?String(u.value.policies_sold):"0",trend:(E=(t=c.value)==null?void 0:t.policies_sold)!=null?E:null},{title:"Renova\xE7\xF5es fechadas/dispon\xEDveis do m\xEAs",value:o.value!==null?`${o.value.renewals_closed} de ${o.value.renewals_available}`:"0 de 0"},{title:"Comiss\xE3o prevista",prefix:"R$",value:u.value!==null?u.value.commission_expected.toLocaleString("pt-BR",{minimumFractionDigits:2,maximumFractionDigits:2}):"0,00",subtitle:"Estimativa do per\xEDodo"}]}),Z=_(()=>{var n,r,t,E;return[{title:"Cota\xE7\xF5es criadas",value:u.value!==null?String(u.value.quotations_created):"0"},{title:"Taxa de convers\xE3o",value:u.value!==null?u.value.conversion_rate.toFixed(1):"0.0",suffix:"%",trend:(r=(n=c.value)==null?void 0:n.conversion_rate)!=null?r:null},{title:"Meta do m\xEAs",titleHighlight:e,value:o.value!==null?o.value.goal_percentage.toFixed(1):"0",suffix:"%",subtitle:o.value!==null&&o.value.goal_percentage>=100?"Parab\xE9ns! Voc\xEA atingiu e superou a meta.":"Continue avan\xE7ando para atingir a meta."},{title:"Ticket m\xE9dio",prefix:"R$",value:u.value!==null?u.value.average_ticket.toLocaleString("pt-BR",{minimumFractionDigits:2,maximumFractionDigits:2}):"0,00",trend:(E=(t=c.value)==null?void 0:t.average_ticket)!=null?E:null}]}),ee=_(()=>{var n,r;return(r=(n=x.value)==null?void 0:n.performance_chart)!=null?r:[]}),te=_(()=>{var n,r;return(r=(n=x.value)==null?void 0:n.ranking_position)!=null?r:null}),q=_(()=>{var n;return(n=x.value)!=null&&n.computed_at?new Date(x.value.computed_at).toLocaleTimeString("pt-BR",{hour:"2-digit",minute:"2-digit"}):null});return ce(async()=>{g.show();try{await Promise.all([p(),W()])}catch(n){console.error("[PartnerDashboard] Erro ao carregar dashboard:",n),h.showError({text:"N\xE3o foi poss\xEDvel carregar os dados do dashboard. Tente novamente."})}finally{g.hide()}N(),document.addEventListener("visibilitychange",O)}),ue(()=>{F(),document.removeEventListener("visibilitychange",O)}),(n,r)=>(s(),l("section",rt,[r[0]||(r[0]=a("h1",{class:"text-h5 font-weight-semibold mb-1"}," Dashboard do Corretor ",-1)),m(G,{class:"mb-6"}),r[1]||(r[1]=a("h2",{class:"text-subtitle-1 font-weight-semibold mb-3"}," Oportunidades de hoje ",-1)),m(G,{class:"mb-4"}),m(P,{class:"mb-4"},{default:f(()=>[(s(!0),l(M,null,$(i(X),t=>(s(),w(I,{key:t.title,cols:"12",sm:"6",lg:"3"},{default:f(()=>[m(Fe,{title:t.title,value:t.value,description:t.description,"has-corner-icon":t.hasCornerIcon,"corner-icon-src":t.cornerIconSrc,clickable:!!t.onClick,onClick:E=>{var H;return(H=t.onClick)==null?void 0:H.call(t)}},null,8,["title","value","description","has-corner-icon","corner-icon-src","clickable","onClick"])]),_:2},1024))),128))]),_:1}),m(P,{class:"mb-4"},{default:f(()=>[m(I,{cols:"12",lg:"9"},{default:f(()=>[m(Je,{data:i(ee)},null,8,["data"])]),_:1}),m(I,{cols:"12",lg:"3"},{default:f(()=>{var t,E;return[m(ot,{"current-rank":(E=(t=i(x))==null?void 0:t.ranking_medal)!=null?E:void 0,position:i(te),loading:i(x)===null},null,8,["current-rank","position","loading"])]}),_:1})]),_:1}),m(P,{class:"mb-4"},{default:f(()=>[(s(!0),l(M,null,$(i(Q),t=>(s(),w(I,{key:t.title,cols:"12",sm:"6",lg:"3"},{default:f(()=>[m(Y,{title:t.title,value:t.value,prefix:t.prefix,suffix:t.suffix,subtitle:t.subtitle,trend:t.trend},null,8,["title","value","prefix","suffix","subtitle","trend"])]),_:2},1024))),128))]),_:1}),m(P,null,{default:f(()=>[(s(!0),l(M,null,$(i(Z),t=>(s(),w(I,{key:t.title,cols:"12",sm:"6",lg:"3"},{default:f(()=>[m(Y,{title:t.title,"title-highlight":t.titleHighlight,value:t.value,prefix:t.prefix,suffix:t.suffix,subtitle:t.subtitle,trend:t.trend},null,8,["title","title-highlight","value","prefix","suffix","subtitle","trend"])]),_:2},1024))),128))]),_:1}),i(q)?(s(),l("div",it," M\xE9tricas atualizadas \xE0s "+d(i(q)),1)):i(x)&&!i(x).computed_at?(s(),l("div",lt," M\xE9tricas ainda sendo processadas. Tente novamente em alguns instantes. ")):S("",!0)]))}});const vt=R(dt,[["__scopeId","data-v-6ca49e36"]]);export{vt 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.