Some checks failed
Monorepo Pipeline / 🧪 Quality Assurance (push) Failing after 11s
Monorepo Pipeline / 🚀 Release (push) Has been skipped
Monorepo Pipeline / 🐳 Build Directus (Base) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been skipped
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been skipped
2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
import{useApi as e,defineModule as a}from"@directus/extensions-sdk";import{defineComponent as t,ref as l,computed as n,onMounted as i,resolveComponent as s,resolveDirective as o,openBlock as d,createBlock as r,withCtx as u,createVNode as c,createElementBlock as v,Fragment as p,renderList as m,createTextVNode as f,toDisplayString as g,createCommentVNode as y,createElementVNode as b,withDirectives as h}from"vue";var _=Object.defineProperty,x=Object.getOwnPropertySymbols,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,V=(e,a,t)=>a in e?_(e,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[a]=t;const A={class:"content-wrapper"},C={key:0,class:"empty-state"},$={class:"header"},U={class:"header-left"},F={class:"title"},O={class:"subtitle"},P=["href"],E={class:"header-right"},S={class:"sections"},j={class:"main-info"},L={class:"form-grid"},z={class:"field"},q={key:1,class:"value text-subdued"},B={class:"field"},N={class:"value"},D={class:"field full"},M={class:"value text-block"},I={key:0,class:"ai-observations"},T={class:"metrics"},K={class:"page-title"},G={class:"page-url"},R={class:"drawer-content"},W={class:"form-section"},H={class:"field"},J={class:"field"},Q={class:"field"},X={class:"field"},Y={class:"field"},Z={class:"field"},ee={class:"drawer-actions"};var ae=t({__name:"module",setup(a){const t=e(),_=l([]),ae=l(null),te=l(!1),le=l(!1),ne=l(!1),ie=l(!1),se=l(!1),oe=l(null),de=l({company_name:"",website_url:"",contact_name:"",contact_email:"",contact_person:null,briefing:"",status:"new"}),re=l([]),ue=n(()=>re.value.map(e=>({text:`${e.first_name} ${e.last_name}`,value:e.id})));function ce(e){const a=re.value.find(a=>a.id===e);return a?`${a.first_name} ${a.last_name}`:e}const ve=n(()=>_.value.find(e=>e.id===ae.value));async function pe(){const[e,a]=await Promise.all([t.get("/items/leads",{params:{sort:"-date_created"}}),t.get("/items/people",{params:{sort:"last_name"}})]);_.value=e.data.data,re.value=a.data.data,!ae.value&&_.value.length>0&&(ae.value=_.value[0].id)}async function me(){if(ae.value){te.value=!0;try{await t.post(`/acquisition/audit/${ae.value}`),oe.value={type:"success",message:"Audit erfolgreich gestartet!"},await pe()}catch(e){oe.value={type:"danger",message:`Fehler beim Audit: ${e.message}`}}finally{te.value=!1}}}async function fe(){if(ae.value){ne.value=!0;try{await t.post(`/acquisition/audit-email/${ae.value}`),oe.value={type:"success",message:"Audit E-Mail versendet!"},await pe()}catch(e){oe.value={type:"danger",message:`Fehler beim Versenden: ${e.message}`}}finally{ne.value=!1}}}async function ge(){if(ae.value){le.value=!0;try{await t.post(`/acquisition/estimate/${ae.value}`),oe.value={type:"success",message:"Angebot (PDF) wurde generiert!"},await pe()}catch(e){oe.value={type:"danger",message:`Fehler bei PDF Generierung: ${e.message}`}}finally{le.value=!1}}}async function ye(){if(ae.value){ne.value=!0;try{await t.post(`/acquisition/estimate-email/${ae.value}`),oe.value={type:"success",message:"Angebot erfolgreich versendet!"},await pe()}catch(e){oe.value={type:"danger",message:`Fehler beim Versenden: ${e.message}`}}finally{ne.value=!1}}}function be(){var e;(null==(e=ve.value)?void 0:e.audit_pdf_path)&&window.open(`${window.location.origin}/assets/${ve.value.audit_pdf_path}`,"_blank")}async function he(){if(de.value.company_name){se.value=!0;try{const e=((e,a)=>{for(var t in a||(a={}))w.call(a,t)&&V(e,t,a[t]);if(x)for(var t of x(a))k.call(a,t)&&V(e,t,a[t]);return e})({id:crypto.randomUUID()},de.value);await t.post("/items/leads",e),oe.value={type:"success",message:"Lead erfolgreich registriert!"},ie.value=!1,await pe(),ae.value=e.id,de.value={company_name:"",website_url:"",contact_name:"",contact_email:"",contact_person:null,briefing:"",status:"new"}}catch(e){oe.value={type:"danger",message:`Fehler beim Speichern: ${e.message}`}}finally{se.value=!1}}}function _e(e){switch(e){case"new":return"fiber_new";case"auditing":return"hourglass_empty";case"audit_ready":return"check_circle";case"contacted":return"mail_outline";default:return"help_outline"}}function xe(e){switch(e){case"new":return"var(--theme--primary)";case"auditing":return"var(--theme--warning)";case"audit_ready":return"var(--theme--success)";case"contacted":return"var(--theme--secondary)";default:return"var(--theme--foreground-subdued)"}}return i(pe),(e,a)=>{const t=s("v-icon"),l=s("v-list-item-icon"),n=s("v-text-overflow"),i=s("v-list-item-content"),x=s("v-list-item"),w=s("v-divider"),k=s("v-list"),V=s("v-notice"),re=s("v-button"),pe=s("v-info"),we=s("v-table"),ke=s("v-input"),Ve=s("v-textarea"),Ae=s("v-select"),Ce=s("v-drawer"),$e=s("private-view"),Ue=o("tooltip");return d(),r($e,{title:"Acquisition Manager"},{navigation:u(()=>[c(k,{nav:""},{default:u(()=>[c(x,{onClick:a[0]||(a[0]=e=>ie.value=!0),clickable:""},{default:u(()=>[c(l,null,{default:u(()=>[c(t,{name:"add",color:"var(--theme--primary)"})]),_:1}),c(i,null,{default:u(()=>[c(n,{text:"Neuen Lead anlegen"})]),_:1})]),_:1}),c(w),(d(!0),v(p,null,m(_.value,e=>(d(),r(x,{key:e.id,active:ae.value===e.id,class:"lead-item",clickable:"",onClick:a=>{return t=e.id,void(ae.value=t);var t}},{default:u(()=>[c(l,null,{default:u(()=>[c(t,{name:_e(e.status),color:xe(e.status)},null,8,["name","color"])]),_:2},1024),c(i,null,{default:u(()=>[c(n,{text:e.company_name},null,8,["text"])]),_:2},1024)]),_:2},1032,["active","onClick"]))),128))]),_:1})]),"title-outer:after":u(()=>[oe.value?(d(),r(V,{key:0,type:oe.value.type,onClose:a[1]||(a[1]=e=>oe.value=null),dismissible:""},{default:u(()=>[f(g(oe.value.message),1)]),_:1},8,["type"])):y("v-if",!0)]),default:u(()=>{var e;return[b("div",A,[c(V,{type:"success",style:{"margin-bottom":"16px"}},{default:u(()=>[f(" DEBUG: Module Version 1.1.0 - Native Build - "+g((new Date).toISOString()),1)]),_:1}),ve.value?(d(),v(p,{key:1},[b("header",$,[b("div",U,[b("h1",F,g(ve.value.company_name),1),b("p",O,[c(t,{name:"language","x-small":""}),b("a",{href:ve.value.website_url,target:"_blank",class:"url-link"},g(ve.value.website_url.replace(/^https?:\/\//,"")),9,P),f(" · Status: "+g(ve.value.status.toUpperCase()),1)])]),b("div",E,["new"===ve.value.status?(d(),r(re,{key:0,secondary:"",loading:te.value,onClick:me},{default:u(()=>[c(t,{name:"settings_suggest",left:""}),a[15]||(a[15]=f(" Audit starten ",-1))]),_:1},8,["loading"])):y("v-if",!0),"audit_ready"===ve.value.status?(d(),v(p,{key:1},[c(re,{secondary:"",loading:ne.value,onClick:fe},{default:u(()=>[c(t,{name:"mail",left:""}),a[16]||(a[16]=f(" Audit E-Mail ",-1))]),_:1},8,["loading"]),c(re,{loading:le.value,onClick:ge},{default:u(()=>[c(t,{name:"picture_as_pdf",left:""}),a[17]||(a[17]=f(" PDF Erstellen ",-1))]),_:1},8,["loading"])],64)):y("v-if",!0),ve.value.audit_pdf_path?h((d(),r(re,{key:2,secondary:"",icon:"",onClick:be},{default:u(()=>[c(t,{name:"open_in_new"})]),_:1})),[[Ue,"PDF öffnen",void 0,{bottom:!0}]]):y("v-if",!0),ve.value.audit_pdf_path?(d(),r(re,{key:3,primary:"",loading:ne.value,onClick:ye},{default:u(()=>[c(t,{name:"send",left:""}),a[18]||(a[18]=f(" Angebot senden ",-1))]),_:1},8,["loading"])):y("v-if",!0)])]),b("div",S,[b("div",j,[b("div",L,[b("div",z,[a[19]||(a[19]=b("span",{class:"label"},"Kontaktperson",-1)),ve.value.contact_person?(d(),v("div",{key:0,class:"value person-link",onClick:a[3]||(a[3]=e=>{return a=ve.value.contact_person,void(oe.value={type:"info",message:`Navigiere zu Person: ${a}`});var a})},g(ce(ve.value.contact_person)),1)):(d(),v("div",q,"Keine Person verknüpft"))]),b("div",B,[a[20]||(a[20]=b("span",{class:"label"},"E-Mail (Legacy)",-1)),b("div",N,g(ve.value.contact_email||"—"),1)]),b("div",D,[a[21]||(a[21]=b("span",{class:"label"},"Briefing / Fokus",-1)),b("div",M,g(ve.value.briefing||"Kein Briefing hinterlegt."),1)])])]),c(w),ve.value.ai_state?(d(),v("div",I,[a[22]||(a[22]=b("h3",{class:"section-title"},"AI Observations & Estimation",-1)),b("div",T,[c(pe,{label:"Projekt-Modus",value:ve.value.ai_state.projectType||"Unbekannt"},null,8,["value"]),c(pe,{label:"Seitenanzahl",value:(null==(e=ve.value.ai_state.sitemap)?void 0:e.length)||"0"},null,8,["value"])]),ve.value.ai_state.sitemap?(d(),r(we,{key:0,headers:[{text:"Seite",value:"title"},{text:"URL",value:"url"}],items:ve.value.ai_state.sitemap,class:"observation-table"},{"item.title":u(({item:e})=>[b("span",K,g(e.title),1)]),"item.url":u(({item:e})=>[b("span",G,g(e.url),1)]),_:2},1032,["items"])):y("v-if",!0)])):y("v-if",!0)])],64)):(d(),v("div",C,[c(pe,{title:"Lead auswählen",icon:"auto_awesome",center:""},{default:u(()=>[a[13]||(a[13]=f(" Wähle einen Lead in der Navigation aus oder ",-1)),c(re,{"x-small":"",onClick:a[2]||(a[2]=e=>ie.value=!0)},{default:u(()=>[...a[12]||(a[12]=[f("registriere einen neuen Lead",-1)])]),_:1}),a[14]||(a[14]=f(". ",-1))]),_:1})]))]),c(Ce,{modelValue:ie.value,"onUpdate:modelValue":a[10]||(a[10]=e=>ie.value=e),title:"Neuen Lead registrieren",icon:"person_add",onCancel:a[11]||(a[11]=e=>ie.value=!1)},{default:u(()=>[b("div",R,[b("div",W,[b("div",H,[a[23]||(a[23]=b("span",{class:"label"},"Firma",-1)),c(ke,{modelValue:de.value.company_name,"onUpdate:modelValue":a[4]||(a[4]=e=>de.value.company_name=e),placeholder:"z.B. Schmidt GmbH",autofocus:""},null,8,["modelValue"])]),b("div",J,[a[24]||(a[24]=b("span",{class:"label"},"Website URL",-1)),c(ke,{modelValue:de.value.website_url,"onUpdate:modelValue":a[5]||(a[5]=e=>de.value.website_url=e),placeholder:"https://..."},null,8,["modelValue"])]),b("div",Q,[a[25]||(a[25]=b("span",{class:"label"},"Ansprechpartner",-1)),c(ke,{modelValue:de.value.contact_name,"onUpdate:modelValue":a[6]||(a[6]=e=>de.value.contact_name=e),placeholder:"Vorname Nachname"},null,8,["modelValue"])]),b("div",X,[a[26]||(a[26]=b("span",{class:"label"},"E-Mail Adresse",-1)),c(ke,{modelValue:de.value.contact_email,"onUpdate:modelValue":a[7]||(a[7]=e=>de.value.contact_email=e),placeholder:"email@beispiel.de",type:"email"},null,8,["modelValue"])]),b("div",Y,[a[27]||(a[27]=b("span",{class:"label"},"Briefing / Fokus",-1)),c(Ve,{modelValue:de.value.briefing,"onUpdate:modelValue":a[8]||(a[8]=e=>de.value.briefing=e),placeholder:"Besonderheiten für das Audit..."},null,8,["modelValue"])]),b("div",Z,[a[28]||(a[28]=b("span",{class:"label"},"Kontaktperson (Optional)",-1)),c(Ae,{modelValue:de.value.contact_person,"onUpdate:modelValue":a[9]||(a[9]=e=>de.value.contact_person=e),items:ue.value,placeholder:"Person auswählen..."},null,8,["modelValue","items"])])]),b("div",ee,[c(re,{primary:"",block:"",loading:se.value,onClick:he},{default:u(()=>[...a[29]||(a[29]=[f("Lead speichern",-1)])]),_:1},8,["loading"])])])]),_:1},8,["modelValue"])]}),_:1})}}}),te=[],le=[];!function(e,a){if(e&&"undefined"!=typeof document){var t,l=!0===a.prepend?"prepend":"append",n=!0===a.singleTag,i="string"==typeof a.container?document.querySelector(a.container):document.getElementsByTagName("head")[0];if(n){var s=te.indexOf(i);-1===s&&(s=te.push(i)-1,le[s]={}),t=le[s]&&le[s][l]?le[s][l]:le[s][l]=o()}else t=o();65279===e.charCodeAt(0)&&(e=e.substring(1)),t.styleSheet?t.styleSheet.cssText+=e:t.appendChild(document.createTextNode(e))}function o(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),a.attributes)for(var t=Object.keys(a.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],a.attributes[t[n]]);var s="prepend"===l?"afterbegin":"beforeend";return i.insertAdjacentElement(s,e),e}}("\n.content-wrapper[data-v-6a55edd7] { padding: 32px; height: 100%; display: flex; flex-direction: column; overflow-y: auto;\n}\n.lead-item[data-v-6a55edd7] { cursor: pointer;\n}\n.header[data-v-6a55edd7] { margin-bottom: 24px; display: flex; justify-content: space-between; align-items: flex-end;\n}\n.header-right[data-v-6a55edd7] { display: flex; gap: 12px;\n}\n.title[data-v-6a55edd7] { font-size: 24px; font-weight: 800; margin-bottom: 4px; color: var(--theme--foreground);\n}\n.subtitle[data-v-6a55edd7] { color: var(--theme--foreground-subdued); font-size: 14px; display: flex; align-items: center; gap: 8px;\n}\n.url-link[data-v-6a55edd7] { color: inherit; text-decoration: none; border-bottom: 1px solid transparent;\n}\n.url-link[data-v-6a55edd7]:hover { border-bottom-color: currentColor;\n}\n.empty-state[data-v-6a55edd7] { height: 100%; display: flex; align-items: center; justify-content: center;\n}\n.sections[data-v-6a55edd7] { display: flex; flex-direction: column; gap: 32px;\n}\n.form-grid[data-v-6a55edd7] { display: grid; grid-template-columns: 1fr 1fr; gap: 24px;\n}\n.field[data-v-6a55edd7] { display: flex; flex-direction: column; gap: 8px;\n}\n.field.full[data-v-6a55edd7] { grid-column: span 2;\n}\n.label[data-v-6a55edd7] { font-size: 11px; font-weight: 700; text-transform: uppercase; color: var(--theme--foreground-subdued); letter-spacing: 0.5px;\n}\n.value[data-v-6a55edd7] { font-size: 15px; color: var(--theme--foreground);\n}\n.text-block[data-v-6a55edd7] { line-height: 1.6; white-space: pre-wrap; background: var(--theme--background-subdued); padding: 16px; border-radius: 8px;\n}\n.ai-observations[data-v-6a55edd7] { display: flex; flex-direction: column; gap: 16px;\n}\n.section-title[data-v-6a55edd7] { font-size: 16px; font-weight: 700; color: var(--theme--foreground); margin-bottom: 8px;\n}\n.metrics[data-v-6a55edd7] { display: flex; gap: 32px; margin-bottom: 16px;\n}\n.observation-table[data-v-6a55edd7] { border: 1px solid var(--theme--border); border-radius: 8px; overflow: hidden;\n}\n.page-title[data-v-6a55edd7] { font-weight: 600;\n}\n.page-url[data-v-6a55edd7] { font-family: var(--family-monospace); font-size: 12px; color: var(--theme--foreground-subdued);\n}\n.drawer-content[data-v-6a55edd7] { padding: 24px; display: flex; flex-direction: column; gap: 32px;\n}\n.form-section[data-v-6a55edd7] { display: flex; flex-direction: column; gap: 20px;\n}\n.drawer-actions[data-v-6a55edd7] { margin-top: 24px; display: flex; flex-direction: column; gap: 12px;\n}\n[data-v-6a55edd7] .v-list-item { cursor: pointer !important;\n}\n",{});var ne=((e,a)=>{const t=e.__vccOpts||e;for(const[e,l]of a)t[e]=l;return t})(ae,[["__scopeId","data-v-6a55edd7"],["__file","module.vue"]]),ie=a({id:"acquisition-manager",name:"Acquisition",icon:"auto_awesome",routes:[{path:"",component:ne},{path:":id",component:ne,props:!0}]});export{ie as default};
|