PageSourceSearch

https://www.wiim.immo/_nuxt/NSN_oskC.js

js wiim.immo collected 2026-10-09 22:59:41 UTC 14,891 bytes, 1 lines download raw bytes

1import re from"./BlUlAP2D.js";import{_ as ie}from"./BA4VewZY.js";import{_ as le}from"./DxOG0pT0.js";import{e as oe,u as de,x as ue,D as me,c as i,a as s,l as h,z as y,w as f,k as d,F as m,r as $,d as l,b as c,p as x,q as pe,_ as ce,o as n,t as r,n as N,L as q,m as M,S as V}from"./D8644rYh.js";import{_ as xe}from"./Dbx8Z-v-.js";import{u as ge}from"./MRLRowXz.js";import{u as _e}from"./umGG1dom.js";import{u as ke}from"./Cxhm-wjv.js";const he={class:"space-y-5"},ye={class:"flex flex-wrap items-start justify-between gap-3"},fe={class:"relative flex flex-wrap items-center gap-2"},be={key:3,class:"absolute right-0 top-full mt-1 z-20 w-72 rounded-lg border border-gray-200 dark:border-white/10 bg-white dark:bg-ink shadow-lg p-1"},ve=["disabled","onClick"],we={class:"block text-sm font-medium text-dark dark:text-white"},Ce={class:"block text-xs text-grey-text dark:text-white/60"},Se={key:0,class:"px-3 py-2 text-xs text-grey-text dark:text-white/50"},$e={key:0,class:"text-sm text-danger",role:"alert"},Me={key:0,class:"text-xs text-grey-text dark:text-white/50 mt-1"},Pe={key:1,class:"text-xs text-grey-text dark:text-white/50 mt-1"},Te={key:2,class:"grid gap-4 md:grid-cols-2 xl:grid-cols-3"},ze={class:"flex items-start justify-between gap-2"},Fe={class:"min-w-0"},Le={class:"font-display font-semibold text-dark dark:text-white truncate"},Re={class:"text-xs text-grey-text dark:text-white/60 mt-0.5 truncate"},je={class:"text-primary-600 dark:text-primary-300"},Ae={key:0,class:"text-xs font-medium text-amber-700 dark:text-amber-300 -mt-1"},Be={class:"flex flex-wrap items-center justify-between gap-2 text-xs"},De={class:"flex items-center gap-3 text-grey-text dark:text-white/60"},Oe=["title"],Ee={class:"tabular-nums"},Ne={class:"tabular-nums text-dark dark:text-white/85"},qe={class:"font-semibold"},Ve={class:"mt-1 h-1 rounded-full bg-gray-100 dark:bg-white/10 overflow-hidden"},Ie={class:"text-xs text-dark dark:text-white/80 mt-1.5 truncate"},Ue=["title"],Ge={class:"text-grey-text dark:text-white/50 tabular-nums"},He={key:2,class:"text-grey-text dark:text-white/50"},Ze={class:"grid grid-cols-2 gap-x-4 gap-y-2 rounded-lg bg-gray-50 dark:bg-white/[0.04] p-3 text-xs"},Je={class:"col-span-2"},Ke={class:"flex items-center justify-between text-grey-text dark:text-white/60"},Qe={class:"font-semibold text-dark dark:text-white tabular-nums"},We={key:0,class:"tabular-nums"},Xe={class:"mt-1 h-1.5 rounded-full bg-gray-200 dark:bg-white/10 overflow-hidden"},Ye={class:"col-span-2 text-grey-text dark:text-white/60"},et={class:"text-dark dark:text-white/85 tabular-nums"},tt={class:"text-dark dark:text-white/85 tabular-nums"},st={class:"text-dark dark:text-white/85 tabular-nums"},at={class:"inline-flex items-center gap-1.5 text-grey-text dark:text-white/60"},nt={class:"font-semibold text-dark dark:text-white tabular-nums"},rt={class:"tabular-nums",title:"Décrochés = pitch fait ou rappel demandé ; les refus fermes sont comptés à part (Sortis)"},it={class:"inline-flex items-center gap-1.5 text-grey-text dark:text-white/60"},lt={class:"font-semibold text-dark dark:text-white tabular-nums"},ot={class:"tabular-nums"},dt={key:0,class:"inline-flex items-center gap-1.5 text-grey-text dark:text-white/60",title:"SMS envoyés juste après un appel Flo (suite d'appel)"},ut={class:"font-semibold text-dark dark:text-white tabular-nums"},mt={class:"tabular-nums"},pt={class:"inline-flex items-center gap-1.5 text-grey-text dark:text-white/60"},ct={class:"font-semibold text-dark dark:text-white tabular-nums"},xt={class:"tabular-nums"},gt={class:"inline-flex items-center gap-1.5 text-grey-text dark:text-white/60"},_t={class:"font-semibold text-dark dark:text-white tabular-nums"},kt={class:"flex items-center justify-between gap-2 mt-auto pt-2 border-t border-gray-100 dark:border-white/5"},ht={class:"text-xs text-grey-text dark:text-white/50 truncate"},yt={key:0,class:"tabular-nums"},ft={class:"flex items-center gap-2 shrink-0"},bt=["onClick"],vt=["disabled","onClick"],wt=["disabled","onClick"],Ct=["disabled","onClick"],St={class:"text-xs text-grey-text dark:text-white/50"},At=oe({__name:"index",setup($t){de({title:"Admin · Campagnes"});const g=ge(),P=ue(),_=_e(),{isOperator:k,load:I}=ke(),v=x([]),T=x([]),R=x(!1),z=x(!1),u=x(!1),w=x(!1),C=x(!1),j=x([]),A={running:0,paused:1,scheduled:2,draft:3,done:4},U=pe(()=>[...v.value].sort((a,e)=>(A[a.status]??9)-(A[e.status]??9)));function B(a){return a.target_count?Math.min(100,Math.round(a.registered/a.target_count*100)):a.registered>0?100:0}function G(a){return a.progress.total?Math.min(100,Math.round(a.progress.done/a.progress.total*100)):0}function H(a){return[{key:"email",label:"email",icon:"solar:letter-linear",count:a.channels.email},{key:"sms",label:"SMS",icon:"solar:chat-round-line-linear",count:a.channels.sms},{key:"call",label:"appel Flo",icon:"solar:phone-linear",count:a.channels.call}]}async function D(){try{const a=await g("/admin/campaigns");v.value=a.map(e=>({lists:[],channels:{email:0,sms:0,call:0},progress:{done:0,total:0},next_step:null,exits:{},sent:{calls:0,sms:0,emails:0,postcall_sms:0},delivered:{calls:0,sms:0,emails:0,postcall_sms:0}
1,clicks:0,sms_credits:0,last_activity_at:null,audience_count:0,registered:0,...e})),z.value=!1}catch{z.value=!0}finally{R.value=!0}}function b(a){V(P(`/admin/campagnes/${a}`))}async function Z(){u.value=!0;try{const a=await g("/admin/campaigns",{method:"POST",body:{name:"Nouvelle campagne"}});b(a.campaign.id)}catch(a){_.error(S(a,"Création impossible"))}finally{u.value=!1}}async function J(a){u.value=!0,w.value=!1;try{const e=await g(`/admin/campaigns/from-template/${a}`,{method:"POST"});b(e.campaign.id)}catch(e){_.error(S(e,"Modèle indisponible"))}finally{u.value=!1}}async function K(a){u.value=!0;try{const e=await g(`/admin/campaigns/${a}/duplicate`,{method:"POST"});b(e.campaign.id)}catch(e){_.error(S(e,"Duplication impossible"))}finally{u.value=!1}}async function O(a,e){u.value=!0;try{await g(`/admin/campaigns/${a}/${e}`,{method:"POST"}),_.success(e==="pause"?"Campagne mise en pause.":"Campagne reprise."),await D()}catch(p){_.error(S(p,"Action impossible"))}finally{u.value=!1}}async function Q(){try{const a=await g("/admin/marketing/campaigns");j.value=[...new Set(a.map(e=>e.group_name).filter(e=>!!e))]}catch{}}function W(a){C.value=!1,_.success("Campagne marketing créée, visible sur la page Marketing."),a?.id&&V(P(`/admin/marketing?campagne=${a.id}`))}function S(a,e){return a?.data?.message||e}function X(a){return{webinar_registrations:"Inscriptions webinaire",appointments:"Rendez-vous",list_followup:"Relance de liste"}[a]??a}function Y(a){return{email:"Email",sms:"SMS",wait:"Attente",end:"Fin",call:"Appel Flo"}[a]??a}function ee(a){return{draft:"Brouillon",scheduled:"Programmée",running:"En cours",paused:"En pause",done:"Terminée"}[a]??a}function te(a){return{draft:"bg-gray-100 text-gray-600 dark:bg-white/10 dark:text-white/70",scheduled:"bg-primary-600/10 text-primary-600 dark:bg-primary-400/15 dark:text-primary-300",running:"bg-success/10 text-success",paused:"bg-amber-100 text-amber-800 dark:bg-amber-500/15 dark:text-amber-300",done:"bg-gray-100 text-gray-500 dark:bg-white/10 dark:text-white/60"}[a]??"bg-gray-100 text-gray-600"}function F(a){return new Date(a).toLocaleString("fr-FR",{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit",timeZone:"Europe/Paris"})}return me(async()=>{await I().catch(()=>{}),await Promise.all([D(),g("/admin/campaigns/templates").then(a=>{T.value=a}).catch(()=>{}),k.value?Q():Promise.resolve()])}),(a,e)=>{const p=re,L=ie,E=le,se=ce,ae=xe;return n(),i("div",he,[s("div",ye,[e[6]||(e[6]=s("div",null,[s("h1",{class:"font-display text-2xl font-bold text-dark dark:text-white"},"Campagnes"),s("p",{class:"text-sm text-grey-text dark:text-white/60 mt-0.5"},"Objectif, audience, séquence d'étapes et suivi, en une page par campagne. Les campagnes en cours sont affichées en premier.")],-1)),s("div",fe,[h(k)?(n(),y(L,{key:0,variant:"ghost",size:"sm",disabled:u.value,onClick:e[0]||(e[0]=t=>w.value=!w.value)},{default:f(()=>[c(p,{name:"solar:magic-stick-3-linear",class:"h-4 w-4 mr-1.5"}),e[3]||(e[3]=l(" Depuis un modèle ",-1))]),_:1},8,["disabled"])):d("",!0),h(k)?(n(),y(L,{key:1,size:"sm",disabled:u.value,onClick:Z},{default:f(()=>[c(p,{name:"solar:add-circle-linear",class:"h-4 w-4 mr-1.5"}),e[4]||(e[4]=l(" Nouvelle campagne ",-1))]),_:1},8,["disabled"])):d("",!0),h(k)?(n(),y(L,{key:2,variant:"ghost",size:"sm",title:"Pub, partenaire, print, post : une clé de suivi utm sans séquence d'envoi.",onClick:e[1]||(e[1]=t=>C.value=!0)},{default:f(()=>[c(p,{name:"solar:volume-loud-linear",class:"h-4 w-4 mr-1.5"}),e[5]||(e[5]=l(" Campagne externe ",-1))]),_:1})):d("",!0),w.value?(n(),i("div",be,[(n(!0),i(m,null,$(T.value,t=>(n(),i("button",{key:t.key,type:"button",class:"w-full text-left rounded-md px-3 py-2 hover:bg-primary-50 dark:hover:bg-white/[0.05]",disabled:u.value,onClick:o=>J(t.key)},[s("span",we,r(t.name),1),s("span",Ce,r(t.description),1)],8,ve))),128)),T.value.length?d("",!0):(n(),i("p",Se,"Aucun modèle disponible."))])):d("",!0)])]),z.value?(n(),i("p",$e,"Impossible de charger les campagnes.")):d("",!0),R.value&&!v.value.length?(n(),y(E,{key:1,class:"text-center"},{default:f(()=>[e[7]||(e[7]=s("p",{class:"text-sm text-grey-text dark:text-white/60"},"Aucune campagne pour l'instant.",-1)),h(k)?(n(),i("p",Me,"Partez d'un modèle prêt à l'emploi ou créez une campagne vierge.")):(n(),i("p",Pe,"Seuls les opérateurs de campagne peuvent en créer."))]),_:1})):v.value.length?(n(),i("div",Te,[(n(!0),i(m,null,$(U.value,t=>(n(),y(E,{key:t.id,pad:4,class:"flex flex-col gap-3 cursor-pointer transition-colors hover:border-primary-300 dark:hover:border-primary-300/50",onClick:o=>b(t.id)},{default:f(()=>[s("div",ze,[s("div",Fe,[s("h2",Le,r(t.name),1),s("p",Re,[l(r(X(t.goal_type)),1),t.utm_campaign?(n(),i(m,{key:0},[e[8]||(e[8]=l(" · ",-1)),s("code",je,r(t.utm_campaign),1)],64)):d("",!0)])]),s("span",{class:N(["shrink-0 inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium",te(t.status)])},r(ee(t.status)),3)]),t.status==="paused"&&t.paused_reason?(n(),i("p",Ae,r(t.paused_reason),1)):d("",!0),s("div",null,[s("div",Be,[s("span",De,[(n(!0),i(m,null,$(H(t),o=>(n(),i("span",{key:o.key,class:N(["inline-flex items-center gap-1",o.count?"text-dark dark:text-white/85":"opacity-40"]),title:`${o.count} étape(s) ${o.label}`},[c(p,{name:o.icon,class:"h-3.5 w-3.5"},null,8,["name"]),s("span",Ee,r(o.count),1)],10,Oe))),128))]),s("span",Ne,[s("span",qe,r(t.progress.done),1),l(" / "+r(t.progress.total)+" étapes",1)])]),s("div",Ve,[s("div",{class:"h-full rounded-full bg-primary-400",style:q({width:G(t)+"%"})},null,4)]),s("p",Ie,[e[9]||(e[9]=s("span",{class:"text-grey-text dark:text-white/50"},"Prochaine :",-1)),t.next_step?(n(),i(m,{key:0},[l(r(t.next_step.label||Y(t.next_step.type))+" · "+r(F(t.next_step.when)),1)],64)):t.status==="done"?(n(),i(m,{key:1},[l("terminée")],64)):(n(),i(m,{key:2},[l("aucune étape à venir")],64))])]),s("p",{class:"text-xs text-dark dark:text-white/80",title:t.lists.map(o=>`${o.name} (${o.members_count})`).join(", ")},[e[10]||(e[10]=s("span",{class:"text-grey-text dark:text-white/50"},"Listes :",-1)),t.lists.length?(n(!0),i(m,{key:0},$(t.lists,(o,ne)=>(n(),i("span",{key:o.id},[l(r(ne?", ":"")+r(o.name)+" ",1),s("span",Ge,"("+r(o.members_count)+")",1)]))),128)):(n(),i(m,{key:1},[l("aucune")],64)),t.audience_count?(n(),i("span",He," · "+r(t.audie
1nce_count)+" contacts entrés",1)):d("",!0)],8,Ue),s("div",Ze,[s("div",Je,[s("div",Ke,[s("span",null,[s("span",Qe,r(t.registered),1),e[11]||(e[11]=l(" inscrit(s)",-1)),t.target_count?(n(),i(m,{key:0},[l(" / objectif "+r(t.target_count),1)],64)):d("",!0)]),t.target_count?(n(),i("span",We,r(B(t))+" %",1)):d("",!0)]),s("div",Xe,[s("div",{class:"h-full rounded-full bg-primary-600 dark:bg-primary-400",style:q({width:B(t)+"%"})},null,4)])]),s("p",Ye,[e[12]||(e[12]=l(" Sortis : ",-1)),s("span",et,r(t.exits.stopped??0),1),e[13]||(e[13]=l(" STOP / désinscrits · ",-1)),s("span",tt,r(t.exits.refused??0),1),e[14]||(e[14]=l(" refus · ",-1)),s("span",st,r((t.exits.done??0)+(t.exits.excluded??0)),1),e[15]||(e[15]=l(" terminés ",-1))]),s("p",at,[c(p,{name:"solar:phone-linear",class:"h-3.5 w-3.5 shrink-0"}),s("span",null,[s("span",nt,r(t.sent.calls),1),e[16]||(e[16]=l(" appels ",-1)),s("span",rt,"("+r(t.delivered.calls)+" décrochés)",1)])]),s("p",it,[c(p,{name:"solar:chat-round-line-linear",class:"h-3.5 w-3.5 shrink-0"}),s("span",null,[s("span",lt,r(t.sent.sms),1),e[17]||(e[17]=l(" SMS ",-1)),s("span",ot,"("+r(t.delivered.sms)+" délivrés)",1)])]),t.channels.call||t.sent.postcall_sms?(n(),i("p",dt,[c(p,{name:"solar:chat-round-dots-linear",class:"h-3.5 w-3.5 shrink-0"}),s("span",null,[s("span",ut,r(t.sent.postcall_sms),1),e[18]||(e[18]=l(" SMS de suite ",-1)),s("span",mt,"("+r(t.delivered.postcall_sms)+" délivrés)",1)])])):d("",!0),s("p",pt,[c(p,{name:"solar:letter-linear",class:"h-3.5 w-3.5 shrink-0"}),s("span",null,[s("span",ct,r(t.sent.emails),1),e[19]||(e[19]=l(" emails ",-1)),s("span",xt,"("+r(t.delivered.emails)+" partis)",1)])]),s("p",gt,[c(p,{name:"solar:cursor-linear",class:"h-3.5 w-3.5 shrink-0"}),s("span",null,[s("span",_t,r(t.clicks),1),e[20]||(e[20]=l(" clics humains",-1))])])]),s("div",kt,[s("p",ht,[t.sms_credits?(n(),i("span",yt,r(t.sms_credits)+" crédits SMS · ",1)):d("",!0),t.last_activity_at?(n(),i(m,{key:1},[l("activité "+r(F(t.last_activity_at)),1)],64)):t.starts_at?(n(),i(m,{key:2},[l("début "+r(F(t.starts_at)),1)],64)):(n(),i(m,{key:3},[l("non programmée")],64))]),s("div",ft,[s("button",{type:"button",class:"text-xs text-primary-600 dark:text-primary-300 font-medium hover:underline",onClick:M(o=>b(t.id),["stop"])},"Ouvrir",8,bt),h(k)?(n(),i(m,{key:0},[s("button",{type:"button",class:"text-xs text-primary-600 dark:text-primary-300 font-medium hover:underline",disabled:u.value,onClick:M(o=>K(t.id),["stop"])},"Dupliquer",8,vt),t.status==="running"?(n(),i("button",{key:0,type:"button",class:"text-xs text-amber-700 dark:text-amber-300 font-medium hover:underline",disabled:u.value,onClick:M(o=>O(t.id,"pause"),["stop"])},"Pause",8,wt)):t.status==="paused"?(n(),i("button",{key:1,type:"button",class:"text-xs text-success font-medium hover:underline",disabled:u.value,onClick:M(o=>O(t.id,"resume"),["stop"])},"Reprendre",8,Ct)):d("",!0)],64)):d("",!0)])])]),_:2},1032,["onClick"]))),128))])):d("",!0),s("p",St,[e[22]||(e[22]=l(" Besoin d'envoyer une invitation ponctuelle à une liste ? ",-1)),c(se,{to:h(P)("/admin/campagnes/envoi-manuel"),class:"text-primary-600 dark:text-primary-300 font-medium hover:underline"},{default:f(()=>[...e[21]||(e[21]=[l("Envoi manuel",-1)])]),_:1},8,["to"])]),C.value?(n(),y(ae,{key:3,"group-names":j.value,onClose:e[2]||(e[2]=t=>C.value=!1),onSaved:W},null,8,["group-names"])):d("",!0)])}}});export{At 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.