PageSourceSearch

https://casadosoftware.com.br/_nuxt/7QzHhYP7.js

js casadosoftware.com.br collected 2026-10-03 20:06:15 UTC 18,002 bytes, 2 lines download raw bytes

1import{_ as ae}from"./BdAKVT2h.js";import{d as oe,w as S,z as le,c as i,e,x as c,i as a,t as l,j as u,v as g,l as R,k as w,F,r as z,H as B,D as L,s as de,n as p,p as A,m as ie,a as M,o as n,f as ne}from"./Dy9Bafi5.js";const re={class:"p-6"},ue={class:"mb-6 rounded-xl border border-gray-200 bg-white p-5 shadow-sm"},me={class:"flex flex-col gap-5 lg:flex-row lg:items-end lg:justify-between"},pe={class:"flex items-center gap-3"},xe={class:"flex flex-wrap items-end gap-4"},ce={class:"flex items-center gap-2"},ge={class:"flex cursor-pointer items-center gap-3 rounded-lg border border-gray-200 px-4 py-2.5"},be=["disabled"],ye={key:0,class:"mt-4 rounded-lg bg-emerald-50 px-4 py-3 text-sm font-medium text-emerald-700"},ve={key:1,class:"mt-4 rounded-lg bg-red-50 px-4 py-3 text-sm font-medium text-red-700"},fe={class:"mb-8"},he={class:"grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-5"},we={class:"rounded-xl border border-gray-200 bg-white p-4 shadow-sm"},_e={class:"mt-2 text-3xl font-bold text-gray-900"},ke={class:"rounded-xl border border-gray-200 bg-white p-4 shadow-sm"},Ae={class:"mt-2 text-3xl font-bold text-blue-600"},Ne={class:"mt-1 text-xs text-gray-400"},Ce={class:"rounded-xl border border-gray-200 bg-white p-4 shadow-sm"},Ee={class:"mt-2 text-3xl font-bold text-emerald-600"},De={class:"mt-1 text-xs text-gray-400"},Pe={class:"rounded-xl border border-gray-200 bg-white p-4 shadow-sm"},Ve={class:"mt-2 text-3xl font-bold text-amber-600"},$e={class:"rounded-xl border border-gray-200 bg-white p-4 shadow-sm"},Se={class:"mt-2 text-3xl font-bold text-purple-600"},Re={class:"mt-5 overflow-hidden rounded-xl border border-gray-200 bg-white"},Me={class:"flex flex-col gap-3 border-b border-gray-200 p-4 sm:flex-row sm:items-center sm:justify-between"},Ue={class:"flex flex-wrap gap-2"},Te={key:0,class:"p-8 text-center text-gray-500"},Ie={key:1,class:"p-8 text-center text-gray-500"},je={key:2,class:"overflow-x-auto"},Fe={class:"min-w-full divide-y divide-gray-200"},ze={class:"divide-y divide-gray-100 bg-white"},Be={class:"whitespace-nowrap px-4 py-3 text-sm font-semibold text-gray-900"},Le={class:"px-4 py-3"},qe={class:"text-sm font-medium text-gray-900"},He={class:"text-xs text-gray-500"},Oe={class:"max-w-xs px-4 py-3 text-sm text-gray-700"},Ge={class:"whitespace-nowrap px-4 py-3 text-sm text-gray-600"},Je={class:"whitespace-nowrap px-4 py-3 text-sm"},Ke={class:"whitespace-nowrap px-4 py-3 text-sm"},We={class:"whitespace-nowrap px-4 py-3"},Ye={key:0,class:"inline-flex rounded-full bg-emerald-100 px-2.5 py-1 text-xs font-semibold text-emerald-700"},Qe={key:1,class:"inline-flex rounded-full bg-blue-100 px-2.5 py-1 text-xs font-semibold text-blue-700"},Xe={key:2,class:"inline-flex rounded-full bg-gray-100 px-2.5 py-1 text-xs font-semibold text-gray-600"},Ze={class:"flex gap-4 mb-6"},et={key:0,class:"text-center py-12 text-gray-600"},tt={key:1,class:"space-y-4"},st={class:"flex items-start justify-between"},at={class:"flex-1"},ot={class:"flex items-center gap-3 mb-2"},lt={class:"font-semibold text-gray-900"},dt={class:"text-sm text-gray-500"},it={key:0,class:"text-xs text-green-600 font-medium"},nt={class:"text-gray-700 text-sm"},rt={class:"mt-2 text-xs text-gray-400"},ut={class:"flex gap-2 ml-4"},mt=["onClick"],pt=["onClick"],xt=["onClick"],ct={key:2,class:"text-center py-12 text-gray-600"},gt={key:3,class:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50"},bt={class:"bg-white rounded-lg p-6 w-full max-w-lg max-h-[90vh] overflow-y-auto"},yt={class:"text-xl font-bold mb-4"},vt={class:"space-y-4"},ft={class:"flex items-center gap-4"},ht={class:"flex items-center gap-2"},wt={class:"flex items-center gap-2"},_t={key:0,class:"mt-4 text-sm text-green-600"},kt={key:1,class:"mt-4 text-sm text-red-600"},At={class:"flex justify-end gap-3 mt-6"},Nt=["disabled"],Pt=oe({__name:"reviews",async setup(Ct){let m,y;const _=p("all"),N=p(""),{data:q,pending:H,refresh:V}=([m,y]=S(()=>M("/api/admin/reviews",{query:A(()=>({productId:N.value||void 0,published:_.value==="all"?void 0:_.value==="published"?"true":"false"}))},"$Tiwnh3FUff")),m=await m,y(),m),U=A(()=>q.value?.reviews||[]),x=p("all"),{data:T,pending:O,refresh:G}=([m,y]=S(()=>M("/api/admin/reviews/funnel",{query:A(()=>({status:x.value}))},"$oVDcxYgBVm")),m=await m,y(),m),b=A(()=>T.value?.stats||{sent:0,opened:0,reviewed:0,pendingApproval:0,published:0,clickRate:0,reviewRate:0}),I=A(()=>T.value?.rows||[]),r=ie({enabled:!1,waitDays:3,maxPerRun:5}),C=p(!1),E=p(""),D=p(""),{data:J,refresh:K}=([m,y]=S(()=>M("/api/admin/reviews/automation","$oMK_LHtPaj")),m=await m,y(),m);le(()=>J.value?.setting,o=>
1{o&&(r.enabled=!!o.enabled,r.waitDays=Number(o.waitDays||3),r.maxPerRun=Number(o.maxPerRun||5))},{immediate:!0});async function W(){C.value=!0,E.value="",D.value="";try{await $fetch("/api/admin/reviews/automation",{method:"PUT",body:{enabled:r.enabled,waitDays:Number(r.waitDays),maxPerRun:Number(r.maxPerRun)}}),E.value=r.enabled?"Automação ativada com sucesso.":"Automação desativada com sucesso.",await K()}catch(o){D.value=o?.data?.statusMessage||"Erro ao salvar configuração."}finally{C.value=!1}}function $(o){return o?new Date(o).toLocaleString("pt-BR",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"}):"—"}const k=p(!1),v=p(null),d=p({customerName:"",productName:"",productId:"",rating:5,comment:"",source:"manual",verified:!0,published:!1}),P=p(!1),f=p(""),h=p("");function Y(){v.value=null,d.value={customerName:"",productName:"",productId:"",rating:5,comment:"",source:"manual",verified:!0,published:!1},k.value=!0,f.value="",h.value=""}function Q(o){v.value=o,d.value={customerName:o.customerName,productName:o.productName,productId:o.productId||"",rating:o.rating,comment:o.comment,source:o.source,verified:o.verified,published:o.published},k.value=!0,f.value="",h.value=""}async function X(){P.value=!0,f.value="",h.value="";try{v.value?await $fetch(`/api/admin/reviews/${v.value.id}`,{method:"PUT",body:d.value}):await $fetch("/api/admin/reviews",{method:"POST",body:d.value}),f.value=v.value?"Avaliação atualizada com sucesso":"Avaliação criada com sucesso",k.value=!1,await V()}catch(o){h.value=o?.data?.statusMessage||"Erro ao salvar avaliação"}finally{P.value=!1}}async function Z(o){try{await $fetch(`/api/admin/reviews/${o.id}/publish`,{method:"PATCH",body:{published:!o.published}}),await V()}catch(t){alert(t?.data?.statusMessage||"Erro ao atualizar status")}}async function ee(o){if(confirm(`Tem certeza que deseja excluir a avaliação de ${o.customerName}?`))try{await $fetch(`/api/admin/reviews/${o.id}`,{method:"DELETE"}),await V()}catch(t){alert(t?.data?.statusMessage||"Erro ao excluir avaliação")}}const te=o=>new Date(o).toLocaleDateString("pt-BR",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"});return(o,t)=>{const se=ae;return n(),i("div",re,[e("div",{class:"flex items-center justify-between mb-6"},[t[19]||(t[19]=e("h1",{class:"text-2xl font-bold text-gray-900"},"Avaliações",-1)),e("button",{onClick:Y,class:"px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition"}," Nova Avaliação ")]),e("section",ue,[e("div",me,[e("div",null,[e("div",pe,[t[20]||(t[20]=e("h2",{class:"text-lg font-bold text-gray-900"}," Solicitações automáticas ",-1)),e("span",{class:c(["inline-flex rounded-full px-2.5 py-1 text-xs font-semibold",a(r).enabled?"bg-emerald-100 text-emerald-700":"bg-gray-100 text-gray-600"])},l(a(r).enabled?"ATIVA":"DESATIVADA"),3)]),t[21]||(t[21]=e("p",{class:"mt-1 text-sm text-gray-500"}," Envia solicitações somente para compras pagas ainda não processadas pelo sistema de avaliações. ",-1))]),e("div",xe,[e("div",null,[t[23]||(t[23]=e("label",{class:"mb-1 block text-xs font-semibold text-gray-600"}," Enviar após ",-1)),e("div",ce,[u(e("input",{"onUpdate:modelValue":t[0]||(t[0]=s=>a(r).waitDays=s),type:"number",min:"1",max:"30",class:"w-20 rounded-lg border border-gray-300 px-3 py-2"},null,512),[[g,a(r).waitDays,void 0,{number:!0}]]),t[22]||(t[22]=e("span",{class:"text-sm text-gray-500"},"dias",-1))])]),e("div",null,[t[24]||(t[24]=e("label",{class:"mb-1 block text-xs font-semibold text-gray-600"}," Máximo por execução ",-1)),u(e("input",{"onUpdate:modelValue":t[1]||(t[1]=s=>a(r).maxPerRun=s),type:"number",min:"1",max:"50",class:"w-24 rounded-lg border border-gray-300 px-3 py-2"},null,512),[[g,a(r).maxPerRun,void 0,{number:!0}]])]),e("label",ge,[u(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>a(r).enabled=s),type:"checkbox",class:"h-5 w-5"},null,512),[[R,a(r).enabled]]),t[25]||(t[25]=e("span",{class:"text-sm font-semibold text-gray-700"}," Ativar automação ",-1))]),e("button",{type:"button",disabled:a(C),class:"rounded-lg bg-blue-600 px-5 py-2.5 font-semibold text-white hover:bg-blue-700 disabled:opacity-50",onClick:W},l(a(C)?"Salvando...":"Salvar configuração"),9,be)])]),a(E)?(n(),i("div",ye,l(a(E)),1)):w("",!0),a(D)?(n(),i("div",ve,l(a(D)),1)):w("",!0)]),e("section",fe,[t[34]||(t[34]=e("div",{class:"mb-4"},[e("h2",{class:"text-lg font-bold text-gray-900"}," Funil de avaliações pós-compra "),e("p",{class:"mt-1 text-sm text-gray-500"}
1," Acompanhe solicitações enviadas, cliques e avaliações recebidas. ")],-1)),e("div",he,[e("div",we,[t[26]||(t[26]=e("div",{class:"text-sm font-medium text-gray-500"},"Enviadas",-1)),e("div",_e,l(a(b).sent),1)]),e("div",ke,[t[27]||(t[27]=e("div",{class:"text-sm font-medium text-gray-500"},"Clicaram",-1)),e("div",Ae,l(a(b).opened),1),e("div",Ne,l(a(b).clickRate)+"% dos envios ",1)]),e("div",Ce,[t[28]||(t[28]=e("div",{class:"text-sm font-medium text-gray-500"},"Avaliaram",-1)),e("div",Ee,l(a(b).reviewed),1),e("div",De,l(a(b).reviewRate)+"% dos envios ",1)]),e("div",Pe,[t[29]||(t[29]=e("div",{class:"text-sm font-medium text-gray-500"}," Pendentes ",-1)),e("div",Ve,l(a(b).pendingApproval),1),t[30]||(t[30]=e("div",{class:"mt-1 text-xs text-gray-400"}," aguardando publicação ",-1))]),e("div",$e,[t[31]||(t[31]=e("div",{class:"text-sm font-medium text-gray-500"}," Publicadas ",-1)),e("div",Se,l(a(b).published),1)])]),e("div",Re,[e("div",Me,[t[32]||(t[32]=e("div",{class:"font-semibold text-gray-900"}," Solicitações de avaliação ",
1-1)),e("div",Ue,[e("button",{type:"button",class:c(["rounded-lg px-3 py-1.5 text-sm font-medium transition",a(x)==="all"?"bg-gray-900 text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"]),onClick:t[3]||(t[3]=s=>x.value="all")}," Todos ",2),e("button",{type:"button",class:c(["rounded-lg px-3 py-1.5 text-sm font-medium transition",a(x)==="sent"?"bg-gray-900 text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"]),onClick:t[4]||(t[4]=s=>x.value="sent")}," Enviados ",2),e("button",{type:"button",class:c(["rounded-lg px-3 py-1.5 text-sm font-medium transition",a(x)==="opened"?"bg-gray-900 text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"]),onClick:t[5]||(t[5]=s=>x.value="opened")}," Clicaram ",2),e("button",{type:"button",class:c(["rounded-lg px-3 py-1.5 text-sm font-medium transition",a(x)==="reviewed"?"bg-gray-900 text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"]),onClick:t[6]||(t[6]=s=>x.value="reviewed")}," Avaliaram ",2),e("button",{type:"button",class:"rounded-lg border border-gray-300 px-3 py-1.5 text-sm font-medium text-gray-600 hover:bg-gray-50",onClick:t[7]||(t[7]=s=>a(G)())}," Atualizar ")])]),a(O)?(n(),i("div",Te," Carregando funil... ")):a(I).length===0?(n(),i("div",Ie," Nenhuma solicitação encontrada. ")):(n(),i("div",je,[e("table",Fe,[t[33]||(t[33]=e("thead",{class:"bg-gray-50"},[e("tr",null,[e("th",{class:"px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-gray-500"}," Pedido "),e("th",{class:"px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-gray-500"}," Cliente "),e("th",{class:"px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-gray-500"}," Produto "),e("th",{class:"px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-gray-500"}," Enviado "),e("th",{class:"px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-gray-500"}," Clicou "),e("th",{class:"px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-gray-500"}," Avaliou "),e("th",{class:"px-4 py-3 text-left text-xs font-semibold uppercase tracking-wide text-gray-500"}," Status ")])],-1)),e("tbody",ze,[(n(!0),i(F,null,z(a(I),s=>(n(),i("tr",{key:s.id,class:"hover:bg-gray-50"},[e("td",Be," #"+l(s.orderNumber||"—"),1),e("td",Le,[e("div",qe,l(s.customerName||"—"),1),e("div",He,l(s.customerEmail||"—"),1)]),e("td",Oe,l(s.productName||"—"),1),e("td",Ge,l($(s.sentAt)),1),e("td",Je,[e("span",{class:c([s.openedAt?"text-blue-600":"text-gray-400","font-medium"])},l(s.openedAt?"✓ "+$(s.openedAt):"—"),3)]),e("td",Ke,[e("span",{class:c([s.reviewedAt?"text-emerald-600":"text-gray-400","font-medium"])},l(s.reviewedAt?"✓ "+$(s.reviewedAt):"—"),3)]),e("td",We,[s.status==="reviewed"?(n(),i("span",Ye," Avaliou ")):s.status==="opened"?(n(),i("span",Qe," Clicou ")):(n(),i("span",Xe," Enviado "))])]))),128))])])]))])]),e("div",Ze,[u(e("select",{"onUpdate:modelValue":t[8]||(t[8]=s=>L(_)?_.value=s:null),class:"px-4 py-2 border border-gray-300 rounded-lg"},[...t[35]||(t[35]=[e("option",{value:"all"},"Todas",-1),e("option",{value:"published"},"Publicadas",-1),e("option",{value:"unpublished"},"Não publicadas",-1)])],512),[[B,a(_)]]),u(e("input",{"onUpdate:modelValue":t[9]||(t[9]=s=>L(N)?N.value=s:null),type:"text",placeholder:"Filtrar por produto...",class:"flex-1 px-4 py-2 border border-gray-300 rounded-lg"},null,512),[[g,a(N)]])]),a(H)?(n(),i("div",et," Carregando avaliações... ")):a(U).length>0?(n(),i("div",tt,[(n(!0),i(F,null,z(a(U),s=>(n(),i("div",{key:s.id,class:"bg-white border border-gray-200 rounded-lg p-4"},[e("div",st,[e("div",at,[e("div",ot,[e("div",lt,l(s.customerName),1),e("div",dt,l(s.productName),1),s.verified?(n(),i("div",it,"✓ Verificado")):w("",!0),e("div",{class:c([s.published?"text-green-600":"text-gray-400","text-xs font-medium"])},l(s.published?"✓ Publicada":"○ Não publicada"),3)]),ne(se,{rating:s.rating,size:"sm",class:"mb-2"},null,8,["rating"]),e("p",nt,l(s.comment),1),e("div",rt,l(s.source)+" • "+l(te(s.createdAt)),1)]),e("div",ut,[e("button",{onClick:j=>Z(s),class:c(["px-3 py-1 text-sm rounded border",s.published?"border-orange-300 text-orange-600 hover:bg-orange-50":"border-green-300 text-green-600 hover:bg-green-50"])},l(s.published?"Despublicar":"Publicar"),11,mt),e("button",{onClick:j=>Q(s),class:"px-3 py-1 text-sm rounded border border-gray-300 text-gray-600 hover:bg-gray-50"}," Editar ",8,pt),e("button",{onClick:j=>ee(s),class:"px-3 py-1 text-sm rounded border border-red-300 text-red-600 hover:bg-red-50"}," Excluir ",8,xt)])])]))),128))])):(n(),i("div",ct," Nenhuma avaliação encontrada. ")),a(k)?(n(),i("div",gt,[e("div",bt,[e("h2",yt,l(a(v)?"Editar Avaliação":"Nova Avaliação"),1),e("div",vt,[e("div",null,[t[3
16]||(t[36]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Nome do cliente",-1)),u(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>a(d).customerName=s),type:"text",class:"w-full px-4 py-2 border border-gray-300 rounded-lg",placeholder:"Ex: João Silva"},null,512),[[g,a(d).customerName]])]),e("div",null,[t[37]||(t[37]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Nome do produto",-1)),u(e("input",{"onUpdate:modelValue":t[11]||(t[11]=s=>a(d).productName=s),type:"text",class:"w-full px-4 py-2 border border-gray-300 rounded-lg",placeholder:"Ex: Microsoft 365 Original"},null,512),[[g,a(d).productName]])]),e("div",null,[t[38]||(t[38]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"ID do produto (opcional)",-1)),u(e("input",{"onUpdate:modelValue":t[12]||(t[12]=s=>a(d).productId=s),type:"text",class:"w-full px-4 py-2 border border-gray-300 rounded-lg",placeholder:"ID do produto no sistema"},null,512),[[g,a(d).productId]])]),e("div",null,[t[39]||(t[39]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Nota (1-5)",-1)),u(e("input",{"onUpdate:modelValue":t[13]||(t[13]=s=>a(d).rating=s),type:"number",min:"1",max:"5",class:"w-full px-4 py-2 border border-gray-300 rounded-lg"},null,512),[[g,a(d).rating,void 0,{number:!0}]])]),e("div",null,[t[40]||(t[40]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Comentário",-1)),u(e("textarea",{"onUpdate:modelValue":t[14]||(t[14]=s=>a(d).comment=s),rows:"4",class:"w-full px-4 py-2 border border-gray-300 rounded-lg",placeholder:"Comentário do cliente..."},null,512),[[g,a(d).comment]])]),e("div",null,[t[42]||(t[42]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Origem",-1)),u(e("select",{"onUpdate:modelValue":t[15]||(t[15]=s=>a(d).source=s),class:"w-full px-4 py-2 border border-gray-300 rounded-lg"},[...t[41]||(t[41]=[de('<option value="manual">Manual</option><option value="whatsapp">WhatsApp</option><option value="email">E-mail</option><option value="google">Google</option><option value="support">Suporte</option>',5)])],512),[[B,a(d).source]])]),e("div",ft,[e("label",ht,[u(e("input",{"onUpdate:modelValue":t[16]||(t[16]=s=>a(d).verified=s),type:"checkbox",class:"h-4 w-4"},null,512),[[R,a(d).verified]]),t[43]||(t[43]=e("span",{class:"text-sm text-gray-700"},"Verificado",-1))]),e("label",wt,[u(e("input",{"onUpdate:modelValue":t[17]||(t[17]=s=>a(d).published=s),type:"checkbox",class:"h-4 w-4"},null,512),[[R,a(d).published]]),t[44]||(t[44]=e("span",{class:"text-sm text-gray-700"},"Publicado",-1))])])]),a(f)?(n(),i("div",_t,l(a(f)),1)):w("",!0),a(h)?(n(),i("div",kt,l(a(h)),1)):w("",!0),e("div",At,[e("button",{onClick:t[18]||(t[18]=s=>k.value=!1),class:"px-4 py-2 border border-gray-300 rounded-lg text-gray-700 hover:bg-gray-50"}," Cancelar "),e("button",{onClick:X,disabled:a(P),class:"px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50"},l(a(P)?"Salvando...":"Salvar"),9,Nt)])])])):w("",!0)])}}});export{Pt as default};
2//# sourceMappingURL=7QzHhYP7.js.map

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.