Files
secu-frontend/dist/assets/CustomersView-B4K9IT7m.js
OpenClaw 3ca75cc4f2 feat: Add all module frontend views
Views added:
- ShiftsView (Schichtplanung)
- PatrolsView (Wächterkontrolle)
- IncidentsView (Vorfallberichte)
- VehiclesView (Fahrzeuge)
- DocumentsView (Dokumente)
- CustomersView (Kunden/CRM)
- BillingView (Abrechnung)
- ObjectsView (enhanced with contacts, instructions)

Updated:
- Router with all new routes
- Sidebar with complete navigation
2026-03-12 21:23:01 +00:00

2 lines
6.2 KiB
JavaScript

import{d as K,q as U,m as x,c as l,a as t,F as y,x as g,t as a,e as m,b as u,v as r,r as c,o as n,n as C}from"./index-CWxNv9Fc.js";const M={class:"p-6"},A={class:"flex justify-between items-center mb-6"},B={class:"flex gap-6"},F={class:"w-1/2"},$={key:0,class:"text-center py-12"},D={key:1,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},E={key:2,class:"space-y-2"},L=["onClick"],N={class:"flex justify-between items-start"},z={class:"font-semibold"},I={class:"text-sm text-gray-500"},O={class:"mt-2 flex gap-4 text-xs text-gray-500"},S={key:0},T={key:1},q={class:"w-1/2"},P={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-400"},R={key:1,class:"bg-white rounded-lg shadow p-6"},W={class:"text-xl font-bold mb-4"},Z={class:"space-y-4"},G={class:"text-sm"},H={class:"text-sm"},J={key:0},Q={class:"text-sm font-semibold text-gray-500 mb-2"},X={class:"font-medium"},Y={key:0,class:"ml-2 text-green-600"},tt={key:1},et={class:"text-sm font-semibold text-gray-500 mb-2"},st={key:0,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50"},lt={class:"bg-white rounded-lg shadow-xl w-full max-w-lg p-6"},nt={class:"space-y-4"},at={class:"grid grid-cols-2 gap-4"},ot={class:"grid grid-cols-2 gap-4"},it={class:"flex justify-end space-x-2 mt-6"},mt=K({__name:"CustomersView",setup(dt){const v=c(!0),b=c([]),p=c(!1),o=c(null),i=c({company_name:"",contact_person:"",email:"",phone:"",address:"",city:"",postal_code:""});U(async()=>{await _()});async function _(){v.value=!0;try{const d=await x.get("/customers");b.value=d.data.customers||[]}catch(d){console.error(d)}v.value=!1}async function V(d){try{const e=await x.get(`/customers/${d}`);o.value=e.data}catch(e){console.error(e)}}async function j(){try{await x.post("/customers",i.value),p.value=!1,i.value={company_name:"",contact_person:"",email:"",phone:"",address:"",city:"",postal_code:""},await _()}catch(d){alert("Fehler: "+d.message)}}function f(d){return{active:{text:"Aktiv",class:"bg-green-100 text-green-700"},inactive:{text:"Inaktiv",class:"bg-gray-100 text-gray-700"},prospect:{text:"Interessent",class:"bg-blue-100 text-blue-700"}}[d]||{text:d,class:"bg-gray-100"}}return(d,e)=>{var k,h;return n(),l("div",M,[t("div",A,[e[9]||(e[9]=t("div",null,[t("h1",{class:"text-2xl font-bold"},"👥 Kunden / CRM"),t("p",{class:"text-gray-500"},"Kundenverwaltung & Verträge")],-1)),t("button",{onClick:e[0]||(e[0]=s=>p.value=!0),class:"btn btn-primary"},"+ Kunde")]),t("div",B,[t("div",F,[v.value?(n(),l("div",$,"Laden...")):b.value.length===0?(n(),l("div",D,[...e[10]||(e[10]=[t("p",{class:"text-4xl mb-4"},"👥",-1),t("p",null,"Keine Kunden vorhanden",-1)])])):(n(),l("div",E,[(n(!0),l(y,null,g(b.value,s=>{var w;return n(),l("div",{key:s.id,onClick:ut=>V(s.id),class:C(["bg-white rounded-lg shadow p-4 cursor-pointer hover:shadow-md transition-shadow",((w=o.value)==null?void 0:w.id)===s.id?"ring-2 ring-blue-500":""])},[t("div",N,[t("div",null,[t("h3",z,a(s.company_name),1),t("p",I,a(s.contact_person),1)]),t("span",{class:C(["px-2 py-1 text-xs rounded",f(s.status).class])},a(f(s.status).text),3)]),t("div",O,[s.active_contracts?(n(),l("span",S,"📄 "+a(s.active_contracts)+" Verträge",1)):m("",!0),s.object_count?(n(),l("span",T,"🏢 "+a(s.object_count)+" Objekte",1)):m("",!0)])],10,L)}),128))]))]),t("div",q,[o.value?(n(),l("div",R,[t("h2",W,a(o.value.company_name),1),t("div",Z,[t("div",null,[e[12]||(e[12]=t("h3",{class:"text-sm font-semibold text-gray-500 mb-2"},"Kontakt",-1)),t("p",null,a(o.value.contact_person),1),t("p",G,"📧 "+a(o.value.email||"-"),1),t("p",H,"📞 "+a(o.value.phone||"-"),1)]),t("div",null,[e[13]||(e[13]=t("h3",{class:"text-sm font-semibold text-gray-500 mb-2"},"Adresse",-1)),t("p",null,a(o.value.address),1),t("p",null,a(o.value.postal_code)+" "+a(o.value.city),1)]),(k=o.value.contracts)!=null&&k.length?(n(),l("div",J,[t("h3",Q,"Verträge ("+a(o.value.contracts.length)+")",1),(n(!0),l(y,null,g(o.value.contracts,s=>(n(),l("div",{key:s.id,class:"text-sm p-2 bg-gray-50 rounded mb-1"},[t("span",X,a(s.title||s.contract_number),1),s.monthly_value?(n(),l("span",Y,a(s.monthly_value)+"€/Monat",1)):m("",!0)]))),128))])):m("",!0),(h=o.value.objects)!=null&&h.length?(n(),l("div",tt,[t("h3",et,"Objekte ("+a(o.value.objects.length)+")",1),(n(!0),l(y,null,g(o.value.objects,s=>(n(),l("div",{key:s.id,class:"text-sm"}," 🏢 "+a(s.name),1))),128))])):m("",!0)])])):(n(),l("div",P,[...e[11]||(e[11]=[t("p",null,"Wähle einen Kunden aus",-1)])]))])]),p.value?(n(),l("div",st,[t("div",lt,[e[21]||(e[21]=t("h2",{class:"text-xl font-bold mb-4"},"Neuer Kunde",-1)),t("div",nt,[t("div",null,[e[14]||(e[14]=t("label",{class:"block text-sm font-medium mb-1"},"Firmenname *",-1)),u(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>i.value.company_name=s),class:"input"},null,512),[[r,i.value.company_name]])]),t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium mb-1"},"Ansprechpartner",-1)),u(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>i.value.contact_person=s),class:"input"},null,512),[[r,i.value.contact_person]])]),t("div",at,[t("div",null,[e[16]||(e[16]=t("label",{class:"block text-sm font-medium mb-1"},"E-Mail",-1)),u(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>i.value.email=s),type:"email",class:"input"},null,512),[[r,i.value.email]])]),t("div",null,[e[17]||(e[17]=t("label",{class:"block text-sm font-medium mb-1"},"Telefon",-1)),u(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>i.value.phone=s),class:"input"},null,512),[[r,i.value.phone]])])]),t("div",null,[e[18]||(e[18]=t("label",{class:"block text-sm font-medium mb-1"},"Adresse",-1)),u(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>i.value.address=s),class:"input"},null,512),[[r,i.value.address]])]),t("div",ot,[t("div",null,[e[19]||(e[19]=t("label",{class:"block text-sm font-medium mb-1"},"PLZ",-1)),u(t("input",{"onUpdate:modelValue":e[6]||(e[6]=s=>i.value.postal_code=s),class:"input"},null,512),[[r,i.value.postal_code]])]),t("div",null,[e[20]||(e[20]=t("label",{class:"block text-sm font-medium mb-1"},"Stadt",-1)),u(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>i.value.city=s),class:"input"},null,512),[[r,i.value.city]])])])]),t("div",it,[t("button",{onClick:e[8]||(e[8]=s=>p.value=!1),class:"btn"},"Abbrechen"),t("button",{onClick:j,class:"btn btn-primary"},"Erstellen")])])])):m("",!0)])}}});export{mt as default};