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