Some checks failed
Monorepo Pipeline / ⚡ Prioritize Release (push) Successful in 2s
Monorepo Pipeline / 🧹 Lint (push) Successful in 1m1s
Monorepo Pipeline / 🚀 Release (push) Has been cancelled
Monorepo Pipeline / 🧪 Test (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Directus (Base) (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been cancelled
Monorepo Pipeline / 🏗️ Build (push) Has been cancelled
2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
import{useApi as e,defineModule as a}from"@directus/extensions-sdk";import{defineComponent as l,ref as t,computed as n,onMounted as i,resolveComponent as s,resolveDirective as r,openBlock as d,createBlock as o,withCtx as u,createVNode as m,createElementBlock as c,Fragment as v,renderList as p,createTextVNode as f,toDisplayString as g,createCommentVNode as y,createElementVNode as _,withDirectives as b,nextTick as h}from"vue";const x={class:"content-wrapper"},w={key:0,class:"empty-state"},k={class:"header"},V={class:"header-left"},C={class:"title"},M={class:"subtitle"},F={class:"header-right"},N={class:"user-cell"},z={class:"user-name"},E={key:0,class:"status-date"},U={key:0,class:"drawer-content"},$={class:"form-section"},P={class:"field"},S={class:"drawer-actions"},Z={key:0,class:"drawer-content"},A={class:"form-section"},T={class:"field"},j={class:"field"},D={class:"field"},O={class:"field"},W={key:1,class:"field"},q={class:"drawer-actions"};var B=l({__name:"module",setup(a){const l=e(),B=t([]),K=t(null),L=t([]),G=t(!1),I=t(!1),H=t(null),J=t(null),Q=t(!1),R=t(!1),X=t({id:"",name:""}),Y=t(!1),ee=t(!1),ae=t({id:"",first_name:"",last_name:"",email:"",person:null,temporary_password:""}),le=[{text:"Name",value:"name",sortable:!0},{text:"E-Mail",value:"email",sortable:!0},{text:"Zuletzt eingeladen",value:"last_invited",sortable:!0}],te=t([]),ne=n(()=>te.value.map(e=>({text:`${e.first_name} ${e.last_name} (${e.email})`,value:e.id})));async function ie(e){K.value=e,G.value=!0;try{const a=await l.get("/items/client_users",{params:{filter:{company:{_eq:e.id}},fields:["*","person.*"],sort:"first_name"}});L.value=a.data.data}finally{G.value=!1}}function se(){R.value=!1,X.value={id:"",name:""},Q.value=!0}async function re(){K.value&&(X.value={id:K.value.id,name:K.value.name},R.value=!0,await h(),Q.value=!0)}async function de(){var e;if(X.value.name){I.value=!0;try{R.value?(await l.patch(`/items/companies/${X.value.id}`,{name:X.value.name}),J.value={type:"success",message:"Firma aktualisiert!"}):(await l.post("/items/companies",{name:X.value.name}),J.value={type:"success",message:"Firma angelegt!"}),Q.value=!1,await fetchCompanies(),(null==(e=K.value)?void 0:e.id)===X.value.id&&(K.value.name=X.value.name)}catch(e){J.value={type:"danger",message:e.message}}finally{I.value=!1}}}function oe(){ee.value=!1,ae.value={id:"",first_name:"",last_name:"",email:"",temporary_password:""},Y.value=!0}async function ue(){if(ae.value.email&&K.value){I.value=!0;try{ee.value?(await l.patch(`/items/client_users/${ae.value.id}`,{first_name:ae.value.first_name,last_name:ae.value.last_name,email:ae.value.email,person:ae.value.person}),J.value={type:"success",message:"Mitarbeiter aktualisiert!"}):(await l.post("/items/client_users",{first_name:ae.value.first_name,last_name:ae.value.last_name,email:ae.value.email,company:K.value.id,person:ae.value.person}),J.value={type:"success",message:"Mitarbeiter angelegt!"}),Y.value=!1,await ie(K.value)}catch(e){J.value={type:"danger",message:e.message}}finally{I.value=!1}}}function me(e){const a=(null==e?void 0:e.item)||e;a&&a.id&&async function(e){var a;ae.value={id:e.id||"",first_name:e.first_name||"",last_name:e.last_name||"",email:e.email||"",person:(null==(a=e.person)?void 0:a.id)||e.person||null,temporary_password:e.temporary_password||""},ee.value=!0,await h(),Y.value=!0}(a)}return i(()=>{!async function(){const[e,a]=await Promise.all([l.get("/items/companies",{params:{sort:"name",fields:["id","name"]}}),l.get("/items/people",{params:{sort:"last_name"}})]);B.value=e.data.data,te.value=a.data.data}()}),(e,a)=>{const t=s("v-icon"),n=s("v-list-item-icon"),i=s("v-text-overflow"),h=s("v-list-item-content"),te=s("v-list-item"),ce=s("v-divider"),ve=s("v-list"),pe=s("v-notice"),fe=s("v-button"),ge=s("v-info"),ye=s("v-avatar"),_e=s("v-chip"),be=s("v-table"),he=s("v-input"),xe=s("v-drawer"),we=s("v-select"),ke=s("private-view"),Ve=r("tooltip");return d(),o(ke,{title:"Customer Manager"},{navigation:u(()=>[m(ve,{nav:""},{default:u(()=>[m(te,{onClick:se,clickable:""},{default:u(()=>[m(n,null,{default:u(()=>[m(t,{name:"add",color:"var(--theme--primary)"})]),_:1}),m(h,null,{default:u(()=>[m(i,{text:"Neue Firma anlegen"})]),_:1})]),_:1}),m(ce),(d(!0),c(v,null,p(B.value,e=>{var a;return d(),o(te,{key:e.id,active:(null==(a=K.value)?void 0:a.id)===e.id,class:"company-item",clickable:"",onClick:a=>ie(e)},{default:u(()=>[m(n,null,{default:u(()=>[m(t,{name:"business"})]),_:1}),m(h,null,{default:u(()=>[m(i,{text:e.name},null,8,["text"])]),_:2},1024)]),_:2},1032,["active","onClick"])}),128))]),_:1})]),"title-outer:after":u(()=>[J.value?(d(),o(pe,{key:0,type:J.value.type,onClose:a[0]||(a[0]=e=>J.value=null),dismissible:""},{default:u(()=>[f(g(J.value.message),1)]),_:1},8,["type"])):y("v-if",!0)]),default:u(()=>[_("div",x,[K.value?(d(),c(v,{key:1},[_("header",k,[_("div",V,[_("h1",C,g(K.value.name),1),_("p",M,g(L.value.length)+" Kunden-Mitarbeiter",1)]),_("div",F,[b((d(),o(fe,{secondary:"",rounded:"",icon:"",onClick:re},{default:u(()=>[m(t,{name:"edit"})]),_:1})),[[Ve,"Firma bearbeiten",void 0,{bottom:!0}]]),m(fe,{primary:"",onClick:oe},{default:u(()=>[...a[15]||(a[15]=[f(" Mitarbeiter hinzufügen ",-1)])]),_:1})])]),m(be,{headers:le,items:L.value,loading:G.value,class:"clickable-table","fixed-header":"","onClick:row":me},{"item.name":u(({item:e})=>[_("div",N,[m(ye,{name:e.first_name,"x-small":""},null,8,["name"]),_("span",z,g(e.first_name)+" "+g(e.last_name),1)])]),"item.last_invited":u(({item:e})=>{return[e.last_invited?(d(),c("span",E,g((l=e.last_invited,new Date(l).toLocaleString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"}))),1)):(d(),o(_e,{key:1,"x-small":""},{default:u(()=>[...a[16]||(a[16]=[f("Noch nie",-1)])]),_:1}))];var l}),_:2},1032,["items","loading"])],64)):(d(),c("div",w,[m(ge,{title:"Firmen auswählen",icon:"business",center:""},{default:u(()=>[a[13]||(a[13]=f(" Wähle eine Firma in der Navigation aus oder ",-1)),m(fe,{"x-small":"",onClick:se},{default:u(()=>[...a[12]||(a[12]=[f("erstelle eine neue Firma",-1)])]),_:1}),a[14]||(a[14]=f(". ",-1))]),_:1})]))]),m(xe,{modelValue:Q.value,"onUpdate:modelValue":a[2]||(a[2]=e=>Q.value=e),title:R.value?"Firma bearbeiten":"Neue Firma anlegen",icon:"business",onCancel:a[3]||(a[3]=e=>Q.value=!1)},{default:u(()=>[Q.value?(d(),c("div",U,[_("div",$,[_("div",P,[a[17]||(a[17]=_("span",{class:"label"},"Firmenname",-1)),m(he,{modelValue:X.value.name,"onUpdate:modelValue":a[1]||(a[1]=e=>X.value.name=e),placeholder:"z.B. KLZ Cables",autofocus:""},null,8,["modelValue"])])]),_("div",S,[m(fe,{primary:"",block:"",loading:I.value,onClick:de},{default:u(()=>[...a[18]||(a[18]=[f("Speichern",-1)])]),_:1},8,["loading"])])])):y("v-if",!0)]),_:1},8,["modelValue","title"]),m(xe,{modelValue:Y.value,"onUpdate:modelValue":a[10]||(a[10]=e=>Y.value=e),title:ee.value?"Mitarbeiter bearbeiten":"Neuen Mitarbeiter anlegen",icon:"person",onCancel:a[11]||(a[11]=e=>Y.value=!1)},{default:u(()=>[Y.value?(d(),c("div",Z,[_("div",A,[_("div",T,[a[19]||(a[19]=_("span",{class:"label"},"Vorname",-1)),m(he,{modelValue:ae.value.first_name,"onUpdate:modelValue":a[4]||(a[4]=e=>ae.value.first_name=e),placeholder:"Vorname",autofocus:""},null,8,["modelValue"])]),_("div",j,[a[20]||(a[20]=_("span",{class:"label"},"Nachname",-1)),m(he,{modelValue:ae.value.last_name,"onUpdate:modelValue":a[5]||(a[5]=e=>ae.value.last_name=e),placeholder:"Nachname"},null,8,["modelValue"])]),_("div",D,[a[21]||(a[21]=_("span",{class:"label"},"E-Mail",-1)),m(he,{modelValue:ae.value.email,"onUpdate:modelValue":a[6]||(a[6]=e=>ae.value.email=e),placeholder:"E-Mail Adresse",type:"email"},null,8,["modelValue"])]),_("div",O,[a[22]||(a[22]=_("span",{class:"label"},"Zentrale Person (Verknüpfung)",-1)),m(we,{modelValue:ae.value.person,"onUpdate:modelValue":a[7]||(a[7]=e=>ae.value.person=e),items:ne.value,placeholder:"Person aus dem People Manager auswählen..."},null,8,["modelValue","items"])]),ee.value?(d(),o(ce,{key:0})):y("v-if",!0),ee.value?(d(),c("div",W,[a[23]||(a[23]=_("span",{class:"label"},"Temporäres Passwort",-1)),m(he,{modelValue:ae.value.temporary_password,"onUpdate:modelValue":a[8]||(a[8]=e=>ae.value.temporary_password=e),readonly:"",class:"password-input"},null,8,["modelValue"]),a[24]||(a[24]=_("p",{class:"field-note"},"Wird beim Senden der Zugangsdaten automatisch generiert.",-1))])):y("v-if",!0)]),_("div",q,[m(fe,{primary:"",block:"",loading:I.value,onClick:ue},{default:u(()=>[...a[25]||(a[25]=[f("Daten speichern",-1)])]),_:1},8,["loading"]),ee.value?(d(),c(v,{key:0},[m(ce),b((d(),o(fe,{secondary:"",block:"",loading:H.value===ae.value.id,onClick:a[9]||(a[9]=e=>async function(e){H.value=e.id;try{if(await l.post("/flows/trigger/33443f6b-cec7-4668-9607-f33ea674d501",[e.id]),J.value={type:"success",message:`Zugangsdaten für ${e.first_name} versendet. 📧`},await ie(K.value),Y.value&&ae.value.id===e.id){const a=L.value.find(a=>a.id===e.id);a&&(ae.value.temporary_password=a.temporary_password)}}catch(e){J.value={type:"danger",message:`Fehler: ${e.message}`}}finally{H.value=null}}(ae.value))},{default:u(()=>[m(t,{name:"send",left:""}),a[26]||(a[26]=f(" Zugangsdaten senden ",-1))]),_:1},8,["loading"])),[[Ve,"Generiert PW, speichert es und sendet E-Mail",void 0,{bottom:!0}]])],64)):y("v-if",!0)])])):y("v-if",!0)]),_:1},8,["modelValue","title"])]),_:1})}}}),K=[],L=[];!function(e,a){if(e&&"undefined"!=typeof document){var l,t=!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=K.indexOf(i);-1===s&&(s=K.push(i)-1,L[s]={}),l=L[s]&&L[s][t]?L[s][t]:L[s][t]=r()}else l=r();65279===e.charCodeAt(0)&&(e=e.substring(1)),l.styleSheet?l.styleSheet.cssText+=e:l.appendChild(document.createTextNode(e))}function r(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),a.attributes)for(var l=Object.keys(a.attributes),n=0;n<l.length;n++)e.setAttribute(l[n],a.attributes[l[n]]);var s="prepend"===t?"afterbegin":"beforeend";return i.insertAdjacentElement(s,e),e}}("\n.content-wrapper[data-v-0fa2d616] { padding: 32px; height: 100%; display: flex; flex-direction: column;\n}\n.company-item[data-v-0fa2d616] { cursor: pointer;\n}\n.header[data-v-0fa2d616] { margin-bottom: 24px; display: flex; justify-content: space-between; align-items: flex-end;\n}\n.header-right[data-v-0fa2d616] { display: flex; gap: 12px;\n}\n.title[data-v-0fa2d616] { font-size: 24px; font-weight: 800; margin-bottom: 4px;\n}\n.subtitle[data-v-0fa2d616] { color: var(--theme--foreground-subdued); font-size: 14px;\n}\n.empty-state[data-v-0fa2d616] { height: 100%; display: flex; align-items: center; justify-content: center;\n}\n.user-cell[data-v-0fa2d616] { display: flex; align-items: center; gap: 12px;\n}\n.user-name[data-v-0fa2d616] { font-weight: 600;\n}\n.status-date[data-v-0fa2d616] { font-size: 12px; color: var(--theme--foreground-subdued);\n}\n.drawer-content[data-v-0fa2d616] { padding: 24px; display: flex; flex-direction: column; gap: 32px;\n}\n.form-section[data-v-0fa2d616] { display: flex; flex-direction: column; gap: 20px;\n}\n.field[data-v-0fa2d616] { display: flex; flex-direction: column; gap: 8px;\n}\n.label[data-v-0fa2d616] { font-size: 12px; font-weight: 700; text-transform: uppercase; color: var(--theme--foreground-subdued); letter-spacing: 0.5px;\n}\n.field-note[data-v-0fa2d616] { font-size: 11px; color: var(--theme--foreground-subdued); margin-top: 4px;\n}\n.drawer-actions[data-v-0fa2d616] { margin-top: 24px; display: flex; flex-direction: column; gap: 12px;\n}\n.password-input[data-v-0fa2d616] textarea {\n\tfont-family: var(--family-monospace);\n\tfont-weight: 800;\n\tcolor: var(--theme--primary) !important;\n\tbackground: var(--theme--background-subdued) !important;\n}\n.clickable-table[data-v-0fa2d616] tbody tr { cursor: pointer; transition: background-color 0.2s ease;\n}\n.clickable-table[data-v-0fa2d616] tbody tr:hover { background-color: var(--theme--background-subdued) !important;\n}\n[data-v-0fa2d616] .v-list-item { cursor: pointer !important;\n}\n",{});var G=a({id:"customer-manager",name:"Customer Manager",icon:"supervisor_account",routes:[{path:"",component:((e,a)=>{const l=e.__vccOpts||e;for(const[e,t]of a)l[e]=t;return l})(B,[["__scopeId","data-v-0fa2d616"],["__file","module.vue"]])}]});export{G as default};
|