- Added vue-i18n with language switcher in header - Flag icons with language codes dropdown - RTL support for Arabic - Translated all navigation, auth, and module labels - Language preference saved to localStorage
2 lines
6.7 KiB
JavaScript
2 lines
6.7 KiB
JavaScript
import{d as N,q as M,m as _,c as l,a as t,F as r,x as u,t as a,p as h,e as p,b as v,v as g,r as c,n as f,o as n}from"./index-CgM2qJ96.js";const U={class:"p-6"},$={class:"flex justify-between items-center mb-6"},z={class:"flex gap-6"},F={class:"w-1/2"},L={key:0,class:"text-center py-12"},S={key:1,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},E={key:2,class:"space-y-2"},T=["onClick"],q={class:"flex justify-between items-start"},H={class:"font-semibold"},I={class:"text-sm text-gray-500"},P={class:"text-sm text-gray-400"},W={key:0,class:"mt-2 text-xs text-gray-500"},Z={class:"w-1/2"},G={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-400"},J={key:1,class:"bg-white rounded-lg shadow p-6"},Q={class:"text-xl font-bold mb-1"},R={class:"text-gray-500 mb-4"},X={class:"space-y-6"},Y={class:"text-sm font-semibold text-gray-500 mb-2 flex items-center"},tt={class:"ml-2 text-xs bg-gray-100 px-2 py-0.5 rounded"},et={key:0,class:"space-y-2"},st={class:"font-medium"},lt={class:"text-gray-400 font-normal"},nt={class:"text-gray-600"},at={key:1,class:"text-sm text-gray-400"},ot={class:"text-sm font-semibold text-gray-500 mb-2 flex items-center"},it={class:"ml-2 text-xs bg-gray-100 px-2 py-0.5 rounded"},dt={key:0,class:"space-y-2"},rt={class:"font-medium"},ut={class:"text-gray-600"},ct={key:1,class:"text-sm text-gray-400"},mt={key:0},pt={class:"flex flex-wrap gap-2"},vt=["href"],gt={key:1},xt={class:"flex flex-wrap gap-2"},yt={key:0,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50"},bt={class:"bg-white rounded-lg shadow-xl w-full max-w-md p-6"},_t={class:"space-y-4"},ht={class:"grid grid-cols-2 gap-4"},ft={class:"flex justify-end space-x-2 mt-6"},Ot=N({__name:"ObjectsView",setup(kt){const x=c(!0),y=c([]),o=c(null),m=c(!1),d=c({name:"",address:"",city:"",postal_code:"",customer_id:""});M(async()=>{await k()});async function k(){x.value=!0;try{const i=await _.get("/objects");y.value=i.data.objects||[]}catch(i){console.error(i)}x.value=!1}async function D(i){try{const e=await _.get(`/objects/${i}`);o.value=e.data}catch(e){console.error(e)}}async function K(){try{await _.post("/objects",d.value),m.value=!1,d.value={name:"",address:"",city:"",postal_code:"",customer_id:""},await k()}catch(i){alert("Fehler: "+i.message)}}function b(i){return{active:{text:"Aktiv",class:"bg-green-100 text-green-700",icon:"🟢"},inactive:{text:"Inaktiv",class:"bg-gray-100 text-gray-700",icon:"⚪"},pending:{text:"Ausstehend",class:"bg-yellow-100 text-yellow-700",icon:"🟡"}}[i]||{text:i,class:"bg-gray-100",icon:""}}return(i,e)=>{var w,C,O,A,V,j;return n(),l("div",U,[t("div",$,[e[6]||(e[6]=t("div",null,[t("h1",{class:"text-2xl font-bold"},"🏢 Objektverwaltung"),t("p",{class:"text-gray-500"},"Standorte, Kontakte & Anweisungen")],-1)),t("button",{onClick:e[0]||(e[0]=s=>m.value=!0),class:"btn btn-primary"},"+ Objekt")]),t("div",z,[t("div",F,[x.value?(n(),l("div",L,"Laden...")):y.value.length===0?(n(),l("div",S,[...e[7]||(e[7]=[t("p",{class:"text-4xl mb-4"},"🏢",-1),t("p",null,"Keine Objekte vorhanden",-1)])])):(n(),l("div",E,[(n(!0),l(r,null,u(y.value,s=>{var B;return n(),l("div",{key:s.id,onClick:wt=>D(s.id),class:f(["bg-white rounded-lg shadow p-4 cursor-pointer hover:shadow-md transition-shadow",((B=o.value)==null?void 0:B.id)===s.id?"ring-2 ring-blue-500":""])},[t("div",q,[t("div",null,[t("h3",H,a(s.name),1),t("p",I,a(s.address),1),t("p",P,a(s.postal_code)+" "+a(s.city),1)]),t("span",{class:f(["px-2 py-1 text-xs rounded",b(s.status).class])},a(b(s.status).icon)+" "+a(b(s.status).text),3)]),s.customer_name?(n(),l("div",W," 👤 "+a(s.customer_name),1)):p("",!0)],10,T)}),128))]))]),t("div",Z,[o.value?(n(),l("div",J,[t("h2",Q,a(o.value.name),1),t("p",R,a(o.value.address)+", "+a(o.value.postal_code)+" "+a(o.value.city),1),t("div",X,[t("div",null,[t("h3",Y,[e[9]||(e[9]=h(" 📞 Ansprechpartner ",-1)),t("span",tt,a(((w=o.value.contacts)==null?void 0:w.length)||0),1)]),(C=o.value.contacts)!=null&&C.length?(n(),l("div",et,[(n(!0),l(r,null,u(o.value.contacts,s=>(n(),l("div",{key:s.id,class:"p-2 bg-gray-50 rounded text-sm"},[t("div",st,[h(a(s.name)+" ",1),t("span",lt,a(s.role),1)]),t("div",nt,"📞 "+a(s.phone)+" · 📧 "+a(s.email),1)]))),128))])):(n(),l("p",at,"Keine Kontakte hinterlegt"))]),t("div",null,[t("h3",ot,[e[10]||(e[10]=h(" 📋 Anweisungen ",-1)),t("span",it,a(((O=o.value.instructions)==null?void 0:O.length)||0),1)]),(A=o.value.instructions)!=null&&A.length?(n(),l("div",dt,[(n(!0),l(r,null,u(o.value.instructions,s=>(n(),l("div",{key:s.id,class:f(["p-2 rounded text-sm",s.priority==="critical"?"bg-red-50 border-l-4 border-red-500":s.priority==="high"?"bg-orange-50 border-l-4 border-orange-500":"bg-gray-50"])},[t("div",rt,a(s.title),1),t("p",ut,a(s.content),1)],2))),128))])):(n(),l("p",ct,"Keine Anweisungen hinterlegt"))]),(V=o.value.documents)!=null&&V.length?(n(),l("div",mt,[e[11]||(e[11]=t("h3",{class:"text-sm font-semibold text-gray-500 mb-2"},"📁 Dokumente",-1)),t("div",pt,[(n(!0),l(r,null,u(o.value.documents,s=>(n(),l("a",{key:s.id,href:s.file_url,target:"_blank",class:"px-2 py-1 bg-blue-50 text-blue-700 rounded text-sm hover:bg-blue-100"},a(s.file_name||"Dokument"),9,vt))),128))])])):p("",!0),(j=o.value.checkpoints)!=null&&j.length?(n(),l("div",gt,[e[12]||(e[12]=t("h3",{class:"text-sm font-semibold text-gray-500 mb-2"},"📍 Checkpoints",-1)),t("div",xt,[(n(!0),l(r,null,u(o.value.checkpoints,s=>(n(),l("span",{key:s.id,class:"px-2 py-1 bg-gray-100 rounded text-sm"},a(s.name),1))),128))])])):p("",!0)])])):(n(),l("div",G,[...e[8]||(e[8]=[t("p",null,"Wähle ein Objekt aus",-1)])]))])]),m.value?(n(),l("div",yt,[t("div",bt,[e[17]||(e[17]=t("h2",{class:"text-xl font-bold mb-4"},"Neues Objekt",-1)),t("div",_t,[t("div",null,[e[13]||(e[13]=t("label",{class:"block text-sm font-medium mb-1"},"Name *",-1)),v(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>d.value.name=s),class:"input",placeholder:"z.B. Hauptgebäude Musterstraße"},null,512),[[g,d.value.name]])]),t("div",null,[e[14]||(e[14]=t("label",{class:"block text-sm font-medium mb-1"},"Adresse",-1)),v(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>d.value.address=s),class:"input"},null,512),[[g,d.value.address]])]),t("div",ht,[t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium mb-1"},"PLZ",-1)),v(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>d.value.postal_code=s),class:"input"},null,512),[[g,d.value.postal_code]])]),t("div",null,[e[16]||(e[16]=t("label",{class:"block text-sm font-medium mb-1"},"Stadt",-1)),v(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>d.value.city=s),class:"input"},null,512),[[g,d.value.city]])])])]),t("div",ft,[t("button",{onClick:e[5]||(e[5]=s=>m.value=!1),class:"btn"},"Abbrechen"),t("button",{onClick:K,class:"btn btn-primary"},"Erstellen")])])])):p("",!0)])}}});export{Ot as default};
|