Files
Lucky_Wheel/apps/admin/dist/assets/RoleMatrixView-DnZPtSF6.js

2 lines
9.3 KiB
JavaScript

import{d as de,u as re,l as ce,c as g,a as s,e as r,b as o,w as n,x as S,h as x,n as P,r as p,o as c,f as R,G as ue,F as V,z as B,a2 as Y,t as u,y as L,g as me,$ as j,O as J,H as pe,T as ve,W as _e,Y as fe,B as C,K as ge,_ as ye}from"./index-BOpodV_K.js";import{t as F}from"./farsi-number-stB7JMN0.js";import{S as he}from"./SaveOutlined-DTv_knTi.js";const ke={class:"roles-matrix-page"},xe={class:"page-header-title"},be={key:0,class:"page-actions"},Se={class:"roles-list"},Re=["onClick"],Ce={class:"role-item-header"},we={class:"role-title"},Ie={class:"role-code"},ze={class:"role-desc"},Ae={class:"role-footer"},Me={class:"user-count"},Pe={class:"matrix-header"},De={style:{margin:"0","font-size":"16px"}},Ne={style:{color:"#2563eb"}},Oe={style:{"font-size":"12px",color:"#64748b"}},Ue={key:0,class:"super-admin-notice"},Ee={class:"modules-grid"},Te={class:"module-header"},$e={class:"module-title"},Ve={class:"count-label"},Be={class:"perms-list"},Le=["onClick"],Fe={class:"perm-name"},qe={class:"perm-code"},Ge={key:0,class:"perm-desc"},He=de({__name:"RoleMatrixView",setup(We){const w=re(),U=x(!1),E=x(!1),b=x([]),q=x([]),y=x(null),D=x(!1),T=x(!1),i=me({code:"",name:"",description:"",permissionIds:[]}),d=x([]),I=x(!1),v=j(()=>b.value.find(l=>l.id===y.value)||null),K={campaigns:"مدیریت کمپین‌ها",prizes:"مدیریت جوایز",users:"کاربران سامانه",chances:"تنظیم دستی شانس‌ها",spins:"تاریخچه چرخش‌ها",winners:"مدیریت برندگان و کدهای هدیه",sms:"لاگ و ارسال پیامک",audit:"لاگ بازرسی (Audit)",reports:"گزارش‌ها و KPI",admins:"مدیریت مدیران و همکاران",roles:"مدیریت نقش‌ها و دسترسی‌ها",workspaces:"فضاهای کاری سازمانی"},G=j(()=>{const l={};return q.value.forEach(e=>{const a=e.module||"other";l[a]||(l[a]=[]),l[a].push(e)}),l});async function N(){var l,e;U.value=!0;try{const[a,m]=await Promise.all([P.get("/admin/roles"),P.get("/admin/permissions")]);b.value=Array.isArray(a.data)?a.data:((l=a.data)==null?void 0:l.data)||[],q.value=Array.isArray(m.data)?m.data:((e=m.data)==null?void 0:e.data)||[],!y.value&&b.value.length>0?O(b.value[0].id):y.value&&O(y.value)}finally{U.value=!1}}function O(l){y.value=l;const e=b.value.find(a=>a.id===l);e?d.value=e.permissions?e.permissions.map(a=>{var m;return a.permissionId||((m=a.permission)==null?void 0:m.id)}):[]:d.value=[],I.value=!1}function Q(l){var a,m;if((a=v.value)!=null&&a.isSystem&&((m=v.value)==null?void 0:m.code)==="SUPER_ADMIN"){C.warning("مجوزهای نقش مدیر ارشد به صورت ذاتی کامل و غیرقابل تغییر است.");return}const e=d.value.indexOf(l);e>-1?d.value.splice(e,1):d.value.push(l),I.value=!0}function X(l){var z,A;if((z=v.value)!=null&&z.isSystem&&((A=v.value)==null?void 0:A.code)==="SUPER_ADMIN")return;const a=(G.value[l]||[]).map(f=>f.id);a.every(f=>d.value.includes(f))?d.value=d.value.filter(f=>!a.includes(f)):a.forEach(f=>{d.value.includes(f)||d.value.push(f)}),I.value=!0}async function Z(){if(y.value){E.value=!0;try{await P.patch(`/admin/roles/${y.value}`,{permissionIds:d.value}),C.success("مجوزهای نقش با موفقیت به‌روزرسانی شد."),I.value=!1,N()}finally{E.value=!1}}}function ee(){i.code="",i.name="",i.description="",i.permissionIds=[],D.value=!0}async function se(){var l,e;if(!i.name.trim()){C.error("نام فارسی نقش الزامی است.");return}if(!i.code.trim()){C.error("کد انگلیسی نقش الزامی است.");return}T.value=!0;try{const a=await P.post("/admin/roles",{name:i.name.trim(),code:i.code.trim().toUpperCase(),description:((l=i.description)==null?void 0:l.trim())||void 0,permissionIds:i.permissionIds});C.success("نقش جدید با موفقیت ایجاد شد."),D.value=!1,await N(),(e=a.data)!=null&&e.id&&O(a.data.id)}finally{T.value=!1}}function ae(l){ge.confirm({title:"حذف نقش سفارشی",content:`آیا از حذف نقش «${l.name}» اطمینان دارید؟`,okText:"حذف نقش",okType:"danger",cancelText:"انصراف",onOk:async()=>{try{await P.delete(`/admin/roles/${l.id}`),C.success("نقش با موفقیت حذف شد."),y.value=null,N()}catch{}}})}return ce(()=>{N()}),(l,e)=>{const a=p("a-button"),m=p("a-tag"),z=p("a-card"),A=p("a-col"),f=p("a-checkbox"),te=p("a-row"),le=p("a-spin"),H=p("a-input"),$=p("a-form-item"),oe=p("a-textarea"),ne=p("a-form"),ie=p("a-modal");return c(),g("div",ke,[s("div",xe,[e[5]||(e[5]=s("div",null,[s("h1",{class:"title"},"مدیریت نقش‌ها و ماتریس مجوزها"),s("p",{class:"subtitle"},"تعریف نقش‌های سازمانی و انتساب دانه‌بندی‌شده مجوزهای دسترسی به ماژول‌های سامانه")],-1)),r(w).can("roles:manage")?(c(),g("div",be,[o(a,{type:"primary",size:"large",onClick:ee},{icon:n(()=>[o(r(ue))]),default:n(()=>[e[4]||(e[4]=R(" تعریف نقش جدید ",-1))]),_:1})])):S("",!0)]),o(le,{spinning:U.value},{default:n(()=>[o(te,{gutter:20},{default:n(()=>[o(A,{xs:24,md:8,lg:7},{default:n(()=>[o(z,{bordered:!1,class:"roles-sidebar-card",title:"نقش‌های سامانه"},{default:n(()=>[s("div",Se,[(c(!0),g(V,null,B(b.value,t=>{var h;return c(),g("div",{key:t.id,class:J(["role-item",{"is-active":t.id===y.value}]),onClick:k=>O(t.id)},[s("div",Ce,[s("div",we,[o(r(Y),{style:pe({color:t.isSystem?"#7c3aed":"#2563eb",marginLeft:"6px"})},null,8,["style"]),s("strong",null,u(t.name),1)]),t.isSystem?(c(),L(m,{key:0,color:"purple",size:"small"},{default:n(()=>[...e[6]||(e[6]=[R("سیستمی",-1)])]),_:1})):S("",!0)]),s("div",Ie,u(t.code),1),s("div",ze,u(t.description||"بدون توضیح"),1),s("div",Ae,[s("span",Me,[o(r(ve),{style:{"margin-left":"4px"}}),R(" "+u(r(F)(((h=t._count)==null?void 0:h.admins)??0))+" مدیر منتسب ",1)]),!t.isSystem&&r(w).can("roles:manage")?(c(),L(a,{key:0,type:"text",danger:"",size:"small",onClick:_e(k=>ae(t),["stop"])},{default:n(()=>[o(r(fe))]),_:1},8,["onClick"])):S("",!0)])],10,Re)}),128))])]),_:1})]),_:1}),o(A,{xs:24,md:16,lg:17},{default:n(()=>[o(z,{bordered:!1,class:"matrix-card"},{title:n(()=>{var t,h,k,M;return[s("div",Pe,[s("div",null,[s("h3",De,[e[7]||(e[7]=R(" ماتریس دسترسی‌های: ",-1)),s("span",Ne,u(((t=v.value)==null?void 0:t.name)||"انتخاب کنید"),1)]),s("span",Oe,u((h=v.value)==null?void 0:h.code)+" "+u((k=v.value)!=null&&k.isSystem?"• نقش سیستمی پایه":"• نقش سفارشی"),1)]),r(w).can("roles:manage")&&!((M=v.value)!=null&&M.isSystem)?(c(),L(a,{key:0,type:"primary",loading:E.value,disabled:!I.value,onClick:Z},{icon:n(()=>[o(r(he))]),default:n(()=>[e[8]||(e[8]=R(" ذخیره تغییرات مجوزها ",-1))]),_:1},8,["loading","disabled"])):S("",!0)])]}),default:n(()=>{var t;return[((t=v.value)==null?void 0:t.code)==="SUPER_ADMIN"?(c(),g("div",Ue,[o(r(Y),{style:{"font-size":"20px",color:"#7c3aed"}}),e[9]||(e[9]=s("div",null,[s("strong",null,"نقش مدیر ارشد سامانه (Super Admin)"),s("p",{style:{margin:"4px 0 0",color:"#6b7280","font-size":"13px"}}," تمامی مجوزهای سامانه به صورت خودکار و دائمی برای مدیر ارشد فعال است و نیازی به تغییر دستی ندارد. ")],-1))])):S("",!0),s("div",Ee,[(c(!0),g(V,null,B(G.value,(h,k)=>{var M;return c(),g("div",{key:k,class:"module-perm-block"},[s("div",Te,[s("div",$e,[s("h4",null,u(K[k]||k),1),s("span",Ve," ("+u(r(F)(h.filter(_=>d.value.includes(_.id)).length))+" از "+u(r(F)(h.length))+") ",1)]),o(a,{type:"link",size:"small",disabled:((M=v.value)==null?void 0:M.code)==="SUPER_ADMIN"||!r(w).can("roles:manage"),onClick:_=>X(k)},{default:n(()=>[...e[10]||(e[10]=[R(" تغییر انتخاب همه ",-1)])]),_:1},8,["disabled","onClick"])]),s("div",Be,[(c(!0),g(V,null,B(h,_=>{var W;return c(),g("div",{key:_.id,class:J(["perm-checkbox-item",{"is-checked":d.value.includes(_.id)}]),onClick:Ye=>Q(_.id)},[o(f,{checked:d.value.includes(_.id),disabled:((W=v.value)==null?void 0:W.code)==="SUPER_ADMIN"||!r(w).can("roles:manage")},{default:n(()=>[s("strong",Fe,u(_.name),1)]),_:2},1032,["checked","disabled"]),s("div",qe,u(_.code),1),_.description?(c(),g("div",Ge,u(_.description),1)):S("",!0)],10,Le)}),128))])])}),128))])]}),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"]),o(ie,{open:D.value,"onUpdate:open":e[3]||(e[3]=t=>D.value=t),title:"تعریف نقش سازمانی جدید",okText:"ایجاد نقش",cancelText:"انصراف",confirmLoading:T.value,onOk:se},{default:n(()=>[o(ne,{layout:"vertical",style:{"margin-top":"16px"}},{default:n(()=>[o($,{label:"نام فارسی نقش",required:""},{default:n(()=>[o(H,{value:i.name,"onUpdate:value":e[0]||(e[0]=t=>i.name=t),placeholder:"مثال: سرپرست بازاریابی",size:"large"},null,8,["value"])]),_:1}),o($,{label:"کد انگلیسی نقش (فقط حروف بزرگ و خط زیر)",required:""},{default:n(()=>[o(H,{value:i.code,"onUpdate:value":e[1]||(e[1]=t=>i.code=t),placeholder:"MARKETING_SUPERVISOR",dir:"ltr",size:"large"},null,8,["value"])]),_:1}),o($,{label:"توضیحات و شرح اختیارات"},{default:n(()=>[o(oe,{value:i.description,"onUpdate:value":e[2]||(e[2]=t=>i.description=t),placeholder:"شرح وظایف و اختیارات این نقش...",rows:3},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirmLoading"])])}}}),Qe=ye(He,[["__scopeId","data-v-8ff85784"]]);export{Qe as default};