Merge remote-tracking branch 'origin/master'

This commit is contained in:
2026-02-14 11:44:15 +03:00
parent 1d15b619f9
commit 406d9e8ce5
73 changed files with 531 additions and 8 deletions

1
ui/dist/spa/js/806.28103cee.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";(globalThis["webpackChunkbaggisowtfaresystem"]=globalThis["webpackChunkbaggisowtfaresystem"]||[]).push([[806],{2806:(e,a,l)=>{l.r(a),l.d(a,{default:()=>G});var s=l(1347),t=l(4187),o=l(7763),i=l(455),r=l(3022),n=l(705),d=(l(939),l(7008),l(7049),l(2986));const u=(0,n.nY)("userDetail",{state:()=>({sendingPasswordMail:!1,lastPasswordMailSentAt:null,hasPassword:!1,loading:!1,saving:!1,error:null,form:{id:null,code:"",full_name:"",email:"",mobile:"",is_active:!0,address:"",roles:[],departments:[],piyasalar:[],nebim_users:[]},roleOptions:[],departmentOptions:[],piyasaOptions:[],nebimUserOptions:[]}),actions:{resetForm(){this.form={id:null,code:"",full_name:"",email:"",mobile:"",is_active:!0,address:"",roles:[],departments:[],piyasalar:[],nebim_users:[]},this.error=null,this.hasPassword=!1,this.lastPasswordMailSentAt=null},async adminResetPassword(e,a){await(0,d.bE)(`/users/${e}/admin-reset-password`,a),this.hasPassword=!0},async sendPasswordMail(e){this.sendingPasswordMail=!0,this.error=null;try{await(0,d.bE)(`/users/${e}/send-password-mail`,{}),this.lastPasswordMailSentAt=(new Date).toLocaleString("tr-TR")}catch(e){throw this.error="Parola maili gönderilemedi",e}finally{this.sendingPasswordMail=!1}},buildPayload(){return{code:this.form.code,full_name:this.form.full_name,email:this.form.email,mobile:this.form.mobile,is_active:this.form.is_active,address:this.form.address,roles:this.form.roles,departments:this.form.departments?[{code:this.form.departments}]:[],piyasalar:(this.form.piyasalar||[]).map(e=>({code:e})),nebim_users:(this.form.nebim_users||[]).map(e=>{const a=(this.nebimUserOptions||[]).find(a=>a.value===e);return{username:e,user_group_code:a?.user_group_code||""}})}},async fetchUser(e){this.loading=!0,this.error=null;try{const a=await(0,d.Jt)(`/users/${e}`);this.form.id=a.id,this.form.code=a.code||"",this.form.full_name=a.full_name||"",this.form.email=a.email||"",this.form.mobile=a.mobile||"",this.form.is_active=!!a.is_active,this.form.address=a.address||"",this.form.roles=a.roles||[],this.form.departments=(a.departments||[]).map(e=>e.code),this.form.piyasalar=(a.piyasalar||[]).map(e=>e.code),this.form.nebim_users=(a.nebim_users||[]).map(e=>e.username),this.hasPassword=!!a.has_password}catch(e){throw this.error="Kullanıcı bilgileri alınamadı",e}finally{this.loading=!1}},async saveUser(e){this.saving=!0,this.error=null;try{console.log("🟦 saveUser() START",e);const a=this.buildPayload();console.log("📤 PUT payload",a),await(0,d.yJ)(`/users/${e}`,a),console.log("✅ PUT OK → REFETCH USER"),await this.fetchUser(e),console.log("🔄 USER REFRESHED",{hasPassword:this.hasPassword,roles:this.form.roles,departments:this.form.departments})}catch(e){throw console.error("❌ saveUser FAILED",e),this.error="Kullanıcı güncellenemedi",e}finally{this.saving=!1}},async createUser(){this.saving=!0,this.error=null;try{console.log("🟢 createUser() START");const e=this.buildPayload();console.log("📤 POST payload",e);const a=await(0,d.bE)("/users",e);console.log("✅ CREATE OK response",a);const l=a?.id;if(!l)throw new Error("CREATE response id yok");return console.log("🔁 FETCH NEW USER id=",l),await this.fetchUser(l),l}catch(e){throw console.error("❌ createUser FAILED",e),this.error="Kullanıcı oluşturulamadı",e}finally{this.saving=!1}},async fetchLookups(){const[e,a,l,s]=await Promise.all([d.Ay.get("/lookups/roles"),d.Ay.get("/lookups/departments"),d.Ay.get("/lookups/piyasalar"),d.Ay.get("/lookups/nebim-users")]);this.roleOptions=e?.data||e||[],this.departmentOptions=a?.data||a||[],this.piyasaOptions=l?.data||l||[],this.nebimUserOptions=s?.data||s||[]}}});var m=l(588);const c={class:"sticky-stack"},p={class:"filter-bar row q-col-gutter-md q-mb-sm"},v={class:"col-3"},b={class:"col-4"},g={class:"col-2 flex items-end"},h={class:"save-toolbar"},f={class:"text-subtitle2 text-weight-bold"},y={class:"q-pa-md"},k={class:"text-caption q-mt-xs"},w={class:"text-weight-medium q-ml-xs"},_={key:0,class:"text-caption q-mt-xs text-grey-7"},R={class:"row items-center"},x={class:"row q-col-gutter-md"},E={class:"col-4"},L={class:"col-4"},P={class:"col-4"},A={class:"col-6"},U={class:"col-3"},V={class:"col-3"},q={class:"col-12"},F={__name:"UserDetail",setup(e){const{canRead:a,canWrite:l,canUpdate:d}=(0,m.J)(),F=a("user"),X=l("user"),T=d("user"),O=(0,r.A)(),S=(0,i.lq)(),W=(0,i.rd)(),Q=u(),{form:C,loading:D,saving:K,roleOptions:M,departmentOptions:z,piyasaOptions:$,nebimUserOptions:I,sendingPasswordMail:N,lastPasswordMailSentAt:Y}=(0,n.bP)(Q),B=(0,s.EW)(()=>S.meta.mode||"edit"),G=(0,s.EW)(()=>"new"===B.value),H=(0,s.EW)(()=>"edit"===B.value),J=(0,s.EW)(()=>"view"===B.value),j=(0,s.EW)(()=>G.value?X.value:H.value?T.value:F.value),Z=(0,s.EW)(()=>G.value?X.value:T.value),ee=(0,s.EW)(()=>H.value||J.value?Number(S.params.id):null),ae=(0,s.EW)(()=>Q.hasPassword),le=(0,s.EW)(()=>G.value?"Yeni Kullanıcı":"Kullanıcı Düzenleme"),se=(0,s.EW)(()=>G.value?"KAYDET":"GÜNCELLE"),te=e=>!e||/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)||"Geçerli bir e-posta giriniz",oe=e=>!e||/^\+\d{10,15}$/.test(e.replace(/_/g,""))||"Telefon +90XXXXXXXXXX formatında olmalı",ie=(0,s.EW)(()=>!G.value&&(!!ee.value&&(!!C.value.is_active&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test((C.value.email||"").trim()))));async function re(){if(Z.value)try{let e;console.log("🟢 onSave() START",{mode:B.value}),C.value.mobile&&(C.value.mobile=C.value.mobile.replace(/_/g,"").trim()),G.value?(e=await Q.createUser(),console.log("➡️ CREATE → EDIT MODE id=",e),W.replace({name:"user-edit",params:{id:e}})):(await Q.saveUser(ee.value),W.push({name:"user-list"})),O.notify({type:"positive",message:"İşlem başarılı"})}catch(e){console.error("❌ onSave ERROR",e),O.notify({type:"negative",message:Q.error||"İşlem başarısız"})}else O.notify({type:"negative",message:"Kaydetme yetkiniz yok"})}function ne(){W.push({name:"user-list"})}function de(){O.dialog({title:"Parola maili gönderilsin mi?",message:`${C.value.email} adresine parola oluşturma/sıfırlama bağlantısı gönderilecek.`,cancel:!0,persistent:!0}).onOk(async()=>{await ue()})}async function ue(){try{await Q.sendPasswordMail(ee.value),O.notify({type:"positive",message:"Parola maili gönderildi"})}catch{O.notify({type:"negative",message:Q.error||"Mail gönderilemedi"})}}return(0,s.wB)(()=>ee.value,async e=>{j.value&&(await Q.fetchLookups(),e?await Q.fetchUser(e):Q.resetForm())},{immediate:!0}),(e,a)=>{const l=(0,s.g2)("q-spinner"),i=(0,s.g2)("q-inner-loading"),r=(0,s.g2)("q-input"),n=(0,s.g2)("q-toggle"),d=(0,s.g2)("q-badge"),u=(0,s.g2)("q-btn"),m=(0,s.g2)("q-card-section"),X=(0,s.g2)("q-card"),O=(0,s.g2)("q-checkbox"),S=(0,s.g2)("q-item-section"),W=(0,s.g2)("q-item"),Q=(0,s.g2)("q-select"),B=(0,s.g2)("q-page");return j.value?((0,s.uX)(),(0,s.Wv)(B,{key:0,class:"user-detail-page"},{default:(0,s.k6)(()=>[(0,s.bF)(i,{showing:(0,t.R1)(D)},{default:(0,s.k6)(()=>[(0,s.bF)(l,{size:"48px"})]),_:1},8,["showing"]),(0,s.Lk)("div",c,[(0,s.Lk)("div",p,[(0,s.Lk)("div",v,[a[10]||(a[10]=(0,s.Lk)("div",{class:"text-caption text-grey-7 q-mb-xs"},"Kullanıcı Kodu",-1)),(0,s.bF)(r,{modelValue:(0,t.R1)(C).code,"onUpdate:modelValue":a[0]||(a[0]=e=>(0,t.R1)(C).code=e),dense:"",filled:""},null,8,["modelValue"])]),(0,s.Lk)("div",b,[a[11]||(a[11]=(0,s.Lk)("div",{class:"text-caption text-grey-7 q-mb-xs"},"Ad Soyad",-1)),(0,s.bF)(r,{modelValue:(0,t.R1)(C).full_name,"onUpdate:modelValue":a[1]||(a[1]=e=>(0,t.R1)(C).full_name=e),dense:"",filled:""},null,8,["modelValue"])]),(0,s.Lk)("div",g,[(0,s.bF)(n,{modelValue:(0,t.R1)(C).is_active,"onUpdate:modelValue":a[2]||(a[2]=e=>(0,t.R1)(C).is_active=e),label:"Aktif",color:"primary"},null,8,["modelValue"])]),(0,s.bF)(d,{color:ae.value?"positive":"grey",class:"q-ml-sm"},{default:(0,s.k6)(()=>[(0,s.eW)((0,o.v_)(ae.value?"Parola Var":"Parola Yok"),1)]),_:1},8,["color"])]),(0,s.Lk)("div",h,[(0,s.Lk)("div",f,(0,o.v_)(le.value),1),(0,s.Lk)("div",null,[Z.value?((0,s.uX)(),(0,s.Wv)(u,{key:0,label:se.value,color:"primary",icon:"save",loading:(0,t.R1)(K),onClick:re},null,8,["label","loading"])):(0,s.Q3)("",!0),(0,t.R1)(F)?((0,s.uX)(),(0,s.Wv)(u,{key:1,label:"LİSTEYE DÖN",flat:"",icon:"arrow_back",class:"q-ml-sm",onClick:ne})):(0,s.Q3)("",!0)])])]),(0,s.Lk)("div",y,[(0,s.bF)(X,{flat:"",bordered:"",class:"q-mb-md"},{default:(0,s.k6)(()=>[(0,s.bF)(m,{class:"row items-center justify-between"},{default:(0,s.k6)(()=>[(0,s.Lk)("div",null,[a[13]||(a[13]=(0,s.Lk)("div",{class:"text-subtitle2 text-weight-bold"},"Parola İşlemleri",-1)),a[14]||(a[14]=(0,s.Lk)("div",{class:"text-caption text-grey-7"}," Kullanıcıya parola oluşturma / sıfırlama bağlantısı e-posta ile gönderilir. ",-1)),(0,s.Lk)("div",k,[a[12]||(a[12]=(0,s.Lk)("span",{class:"text-grey-7"},"E-posta:",-1)),(0,s.Lk)("span",w,(0,o.v_)((0,t.R1)(C).email||"-"),1)]),(0,t.R1)(Y)?((0,s.uX)(),(0,s.CE)("div",_," Son gönderim: "+(0,o.v_)((0,t.R1)(Y)),1)):(0,s.Q3)("",!0)]),(0,s.Lk)("div",R,[(0,t.R1)(T)?((0,s.uX)(),(0,s.Wv)(u,{key:0,label:"PAROLA MAİLİ GÖNDER",color:"primary",icon:"mail",disable:!ie.value,loading:(0,t.R1)(N),onClick:de},null,8,["disable","loading"])):(0,s.Q3)("",!0)])]),_:1})]),_:1}),(0,s.bF)(X,{flat:"",bordered:""},{default:(0,s.k6)(()=>[(0,s.bF)(m,null,{default:(0,s.k6)(()=>[(0,s.Lk)("div",x,[(0,s.Lk)("div",E,[a[15]||(a[15]=(0,s.Lk)("div",{class:"text-caption text-grey-7 q-mb-xs"},"E-Posta",-1)),(0,s.bF)(r,{modelValue:(0,t.R1)(C).email,"onUpdate:modelValue":a[3]||(a[3]=e=>(0,t.R1)(C).email=e),dense:"",filled:"",type:"email",rules:[te],"lazy-rules":""},null,8,["modelValue","rules"])]),(0,s.Lk)("div",L,[a[16]||(a[16]=(0,s.Lk)("div",{class:"text-caption text-grey-7 q-mb-xs"},"Telefon",-1)),(0,s.bF)(r,{modelValue:(0,t.R1)(C).mobile,"onUpdate:modelValue":a[4]||(a[4]=e=>(0,t.R1)(C).mobile=e),dense:"",filled:"",placeholder:"+90XXXXXXXXXX",mask:"+#############","fill-mask":"",rules:[oe],"lazy-rules":""},null,8,["modelValue","rules"])]),(0,s.Lk)("div",P,[a[17]||(a[17]=(0,s.Lk)("div",{class:"text-caption text-grey-7 q-mb-xs"},"Adres",-1)),(0,s.bF)(r,{modelValue:(0,t.R1)(C).address,"onUpdate:modelValue":a[5]||(a[5]=e=>(0,t.R1)(C).address=e),type:"textarea",dense:"",filled:"",autogrow:""},null,8,["modelValue"])]),(0,s.Lk)("div",A,[a[18]||(a[18]=(0,s.Lk)("div",{class:"text-caption text-grey-7 q-mb-xs"},"Roller",-1)),(0,s.bF)(Q,{modelValue:(0,t.R1)(C).roles,"onUpdate:modelValue":a[6]||(a[6]=e=>(0,t.R1)(C).roles=e),options:(0,t.R1)(M),"option-label":"label","option-value":"value","emit-value":"","map-options":"",multiple:"","use-input":"","use-chips":"",dense:"",filled:"",behavior:"menu"},{option:(0,s.k6)(e=>[(0,s.bF)(W,(0,s.v6)(e.itemProps,{clickable:""}),{default:(0,s.k6)(()=>[(0,s.bF)(S,{avatar:""},{default:(0,s.k6)(()=>[(0,s.bF)(O,{"model-value":e.selected,"onUpdate:modelValue":a=>e.toggleOption(e.opt)},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),(0,s.bF)(S,null,{default:(0,s.k6)(()=>[(0,s.eW)((0,o.v_)(e.opt.label),1)]),_:2},1024)]),_:2},1040)]),_:1},8,["modelValue","options"])]),(0,s.Lk)("div",U,[a[19]||(a[19]=(0,s.Lk)("div",{class:"text-caption text-grey-7 q-mb-xs"},"Departman",-1)),(0,s.bF)(Q,{modelValue:(0,t.R1)(C).departments,"onUpdate:modelValue":a[7]||(a[7]=e=>(0,t.R1)(C).departments=e),options:(0,t.R1)(z),"option-label":"label","option-value":"value","emit-value":"","map-options":"","use-input":"",dense:"",filled:""},null,8,["modelValue","options"])]),(0,s.Lk)("div",V,[a[20]||(a[20]=(0,s.Lk)("div",{class:"text-caption text-grey-7 q-mb-xs"},"Piyasalar",-1)),(0,s.bF)(Q,{modelValue:(0,t.R1)(C).piyasalar,"onUpdate:modelValue":a[8]||(a[8]=e=>(0,t.R1)(C).piyasalar=e),options:(0,t.R1)($),"option-label":"label","option-value":"value","emit-value":"","map-options":"",multiple:"","use-input":"","use-chips":"",dense:"",filled:"",behavior:"menu"},{option:(0,s.k6)(e=>[(0,s.bF)(W,(0,s.v6)(e.itemProps,{clickable:""}),{default:(0,s.k6)(()=>[(0,s.bF)(S,{avatar:""},{default:(0,s.k6)(()=>[(0,s.bF)(O,{"model-value":e.selected,"onUpdate:modelValue":a=>e.toggleOption(e.opt)},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),(0,s.bF)(S,null,{default:(0,s.k6)(()=>[(0,s.eW)((0,o.v_)(e.opt.label),1)]),_:2},1024)]),_:2},1040)]),_:1},8,["modelValue","options"])]),(0,s.Lk)("div",q,[a[21]||(a[21]=(0,s.Lk)("div",{class:"text-caption text-grey-7 q-mb-xs"},"Nebim Kullanıcıları",-1)),(0,s.bF)(Q,{modelValue:(0,t.R1)(C).nebim_users,"onUpdate:modelValue":a[9]||(a[9]=e=>(0,t.R1)(C).nebim_users=e),options:(0,t.R1)(I),"option-label":"label","option-value":"value","emit-value":"","map-options":"","use-input":"",dense:"",filled:""},null,8,["modelValue","options"])])])]),_:1})]),_:1})])]),_:1})):((0,s.uX)(),(0,s.Wv)(B,{key:1,class:"q-pa-md flex flex-center"},{default:(0,s.k6)(()=>[...a[22]||(a[22]=[(0,s.Lk)("div",{class:"text-negative text-subtitle1"}," Bu module erisim yetkiniz yok. ",-1)])]),_:1}))}}};var X=l(5013),T=l(8356),O=l(6356),S=l(6067),W=l(5725),Q=l(8155),C=l(2677),D=l(3341),K=l(222),M=l(6941),z=l(2589),$=l(4958),I=l(8349),N=l(272),Y=l.n(N);const B=F,G=B;Y()(F,"components",{QPage:X.A,QInnerLoading:T.A,QSpinner:O.A,QInput:S.A,QToggle:W.A,QBadge:Q.A,QBtn:C.A,QCard:D.A,QCardSection:K.A,QSelect:M.A,QItem:z.A,QItemSection:$.A,QCheckbox:I.A})}}]);