1import{_ as A}from"./BmJPZ_Bp.js";import{e as I,f as U,h as M,j as N,c as u,a as s,k as l,t as n,l as b,D as R,w as d,q as m,o,d as z,n as B,p as P,y as V,s as H}from"./BnI3597d.js";import{u as L}from"./4bw899IF.js";const E={class:"animate-fade-in space-y-4"},F={key:0,class:"text-sm text-red-600"},J={key:0},W={key:1},G={class:"whitespace-nowrap"},K={class:"block max-w-xs truncate"},O=["href"],Q={key:1,class:"text-slate-400"},X={class:"flex justify-end gap-2 whitespace-nowrap"},Y=["disabled","onClick"],Z=["disabled","onClick"],le=I({__name:"persetujuan-izin",setup(ee){const{token:w,user:h,apiFetch:y,fetchMe:D}=U(),{activeSchoolId:i}=L(),j=M(),v=m([]),x=m(!0),r=m(null),c=m(""),p=m(""),C=[{key:"applies_to",label:"Untuk"},{key:"leave_type_name",label:"Jenis"},{key:"start_date",label:"Tanggal"},{key:"reason",label:"Alasan"},{key:"attachmentDownloadUrl",label:"Lampiran"},{key:"actions",label:"",align:"right"}],T=H(()=>p.value?v.value.filter(e=>e.applies_to===p.value):v.value);function _(e){const t=e;return t?.data?.error?.message??t?.message??"Terjadi kesalahan, silakan coba lagi"}async function k(){const e=await y(`/schools/${i.value}/leave-requests?status=pending`);v.value=e.leaveRequests}async function q(e){r.value=e;try{await y(`/schools/${i.value}/leave-requests/${e}/approve`,{method:"PATCH"}),await k()}catch(t){c.value=_(t)}finally{r.value=null}}async function S(e){const t=prompt("Alasan penolakan?");if(t){r.value=e;try{await y(`/schools/${i.value}/leave-requests/${e}/reject`,{method:"PATCH",body:{rejectionNote:t}}),await k()}catch(f){c.value=_(f)}finally{r.value=null}}}function g(e){return new Date(e).toLocaleDateString("id-ID",{day:"numeric",month:"short",year:"numeric"})}return N(async()=>{if(!w.value)return j.push("/login");try{if(h.value||await D(),h.value?.userType==="employee")i.value=h.value.schoolId??"";else if(h.value?.userType==="customer"){const e=await y("/auth/my-schools");e.schools.some(t=>t.id===i.value)||(i.value=e.schools[0]?.id??"")}else{c.value="Halaman ini hanya untuk pegawai/admin sekolah.";return}await k()}catch(e){c.value=_(e)}finally{x.value=!1}}),(e,t)=>{const f=A;return o(),u("div",E,[t[3]||(t[3]=s("div",{class:"card"},[s("h1",{class:"text-xl font-bold text-slate-900 dark:text-slate-50"},"Persetujuan Izin"),s("p",{class:"mt-1 text-sm text-slate-500 dark:text-slate-400"}," Wali kelas hanya melihat izin siswa di kelasnya; admin sekolah melihat semua. ")],-1)),l(c)?(o(),u("p",F,n(l(c)),1)):b("",!0),l(x)?b("",!0):(o(),R(f,{key:1,columns:C,rows:l(T),"search-keys":["student_name","employee_name","leave_type_name","reason"],"search-placeholder":"Cari nama atau alasan...","empty-text":"Tidak ada pengajuan izin yang menunggu."},{filters:d(()=>[B(s("select",{"onUpdate:modelValue":t[0]||(t[0]=a=>P(p)?p.value=a:null),class:"rounded-xl border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},[...t[1]||(t[1]=[s("option",{value:""},"Semua",-1),s("option",{value:"student"},"Siswa",-1),s("option",{value:"employee"},"Pegawai",-1)])],512),[[V,l(p)]])]),"cell-applies_to":d(({row:a})=>[a.applies_to==="student"?(o(),u("span",J,n(a.student_name)+" ("+n(a.class_name)+")",1)):(o(),u("span",W,[z(n(a.employee_name)+" ",1),t[2]||(t[2]=s("span",{class:"text-xs text-slate-400"},"(pegawai)",-1))]))]),"cell-start_date":d(({row:a})=>[s("span",G,n(g(a.start_date))+" - "+n(g(a.end_date)),1)]),"cell-reason":d(({row:a})=>[s("span",K,n(a.reason),1)]),"cell-attachmentDownloadUrl":d(({row:a})=>[a.attachmentDownloadUrl?(o(),u("a",{key:0,href:a.attachmentDownloadUrl,target:"_blank",class:"text-primary-600 hover:underline"},"Lihat",8,O)):(o(),u("span",Q,"-"))]),"cell-actions":d(({row:a})=>[s("div",X,[s("button",{type:"button",class:"rounded-lg bg-green-500 px-3 py-1 text-xs font-medium text-white transition-all hover:bg-green-600 active:scale-95 disabled:opacity-50",disabled:l(r)===a.id,onClick:$=>q(a.id)},"Setujui",8,Y),s("button",{type:"button",class:"rounded-lg bg-red-500 px-3 py-1 text-xs font-medium text-white transition-all hover:bg-red-600 active:scale-95 disabled:opacity-50",disabled:l(r)===a.id,onClick:$=>S(a.id)},"Tolak",8,Z)])]),_:1},8,["rows"]))])}}});
1export{le as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.