import{z as $,n as c,f as K,A as L,g as U,p as h,w as f,r as g,i as u,d as k,B as F,q as j,c as R,b as w,a as B,x as C,C as Y,F as G,D as Q,E as V,o as i,G as J,H as W,_ as X}from"./index-BtuGmbJn.js";import{t as Z}from"./list-query-4ZZvVtjn.js";function ee(D){return()=>({crudOptions:{pagination:{show:!1},search:{show:!0,options:{layout:"inline"},expand:!1},request:{transformQuery:({form:s})=>Z(s,["name"]),pageRequest:async s=>{const{data:t}=await c.post("/roles/search",s);return t},transformRes:({res:s})=>{const t=Array.isArray(s)?s:[];return{currentPage:1,pageSize:Math.max(t.length,1),total:t.length,records:t}},addRequest:async({form:s})=>{await c.post("/roles/",s)},editRequest:async({form:s,row:t})=>{t&&await c.put(`/roles/${t.id}`,s)},delRequest:async({row:s})=>{s&&await c.delete(`/roles/${s.id}`)}},rowHandle:{width:300,buttons:{view:{show:!1},viewPerm:{text:"查看",order:1,click:({row:s})=>{s&&D.onView(s)}},assignPerm:{text:"分配权限",order:2,click:({row:s})=>{s&&D.onAssign(s)}},edit:{text:"编辑",order:10},remove:{text:"删除",order:20}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},name:{title:"角色名称",key:"name",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"必填"}]}},creator:{title:"创建人",key:"creator",type:"text"},createtime:{title:"创建时间",key:"createtime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:s,row:t,key:p}){!t||s==null||(t[p]=$(s).format("YYYY-MM-DD HH:mm:ss"))}},updatetime:{title:"更新时间",key:"updatetime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:s,row:t,key:p}){!t||s==null||(t[p]=$(s).format("YYYY-MM-DD HH:mm:ss"))}}}}})}const se={key:0,class:"dlg-role"},te={key:1,class:"perm-tags"},oe={key:0,class:"dlg-role"},ae=K({__name:"RoleManage",setup(D){const s=u(!1),t=u(!1),p=u(null),y=u([]),v=u(null),b=u([]),x=u(),P=u(!1),T={label:"label",children:"children"};function A(o){return o.map(e=>{var n;return{id:e.id,label:`${e.name}(${e.code})`,children:(n=e.children)!=null&&n.length?A(e.children):void 0}})}async function E(){const{data:o}=await c.get("/permissions/tree");b.value=A(o??[])}async function H(o){p.value=o,s.value=!0;try{const{data:e}=await c.get(`/permissions/role/${o.id}`);y.value=e.permissions??[]}catch{V.error("加载权限失败"),y.value=[]}}function O(o){v.value=o,t.value=!0}async function z(){var e,n,m,a,d;const o=v.value;if(o)try{console.log(`Loading permissions for role id: ${o.id}`);const r=await c.get(`/permissions/role/${o.id}`);console.log("Response data:",r.data);const _=(r.data.permissions??[]).map(q=>q.id);console.log("Permission IDs:",_),await J(),(e=x.value)==null||e.setCheckedKeys(_)}catch(r){console.error("Error loading role permissions:",r),W(r)&&(console.error("Response status:",(n=r.response)==null?void 0:n.status),console.error("Response data:",(m=r.response)==null?void 0:m.data),console.error("Request URL:",(a=r.request)==null?void 0:a.url)),V.error("加载角色权限失败"),(d=x.value)==null||d.setCheckedKeys([])}}async function N(){var e,n,m;const o=v.value;if(o){P.value=!0;try{const a=((e=x.value)==null?void 0:e.getCheckedKeys(!1))??[];await c.post("/permissions/assign",{role_id:o.id,permission_ids:a}),V.success("保存成功"),t.value=!1,M.doRefresh()}catch(a){const d=(m=(n=a==null?void 0:a.response)==null?void 0:n.data)==null?void 0:m.detail;V.error(typeof d=="string"?d:"保存失败")}finally{P.value=!1}}}const{crudBinding:S,crudRef:I,crudExpose:M}=L({createCrudOptions:ee({onView:H,onAssign:O})});return U(async()=>{await E(),M.doRefresh()}),(o,e)=>{const n=g("fs-crud"),m=g("el-tag"),a=g("el-empty"),d=g("el-dialog"),r=g("el-tree"),_=g("el-button"),q=g("fs-page");return i(),h(q,null,{default:f(()=>[k(n,F({ref_key:"crudRef",ref:I},j(S)),null,16),k(d,{modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=l=>s.value=l),title:"查看角色权限",width:"560px","destroy-on-close":"",onClosed:e[1]||(e[1]=l=>y.value=[])},{default:f(()=>[p.value?(i(),R("p",se,[e[4]||(e[4]=w(" 角色:",-1)),B("strong",null,C(p.value.name),1)])):Y("",!0),y.value.length?(i(),R("div",te,[(i(!0),R(G,null,Q(y.value,l=>(i(),h(m,{key:l.id,class:"perm-tag",type:"info"},{default:f(()=>[w(C(l.name)+"("+C(l.code)+") ",1)]),_:2},1024))),128))])):(i(),h(a,{key:2,description:"暂未分配权限","image-size":72}))]),_:1},8,["modelValue"]),k(d,{modelValue:t.value,"onUpdate:modelValue":e[3]||(e[3]=l=>t.value=l),title:"分配权限",width:"640px","destroy-on-close":"",onOpen:z},{footer:f(()=>[k(_,{onClick:e[2]||(e[2]=l=>t.value=!1)},{default:f(()=>[...e[6]||(e[6]=[w("取消",-1)])]),_:1}),k(_,{type:"primary",loading:P.value,onClick:N},{default:f(()=>[...e[7]||(e[7]=[w(" 保存 ",-1)])]),_:1},8,["loading"])]),default:f(()=>[v.value?(i(),R("p",oe,[e[5]||(e[5]=w(" 角色:",-1)),B("strong",null,C(v.value.name),1)])):Y("",!0),b.value.length?(i(),h(r,{key:1,ref_key:"permTreeRef",ref:x,class:"perm-tree",data:b.value,"show-checkbox":"","node-key":"id",props:T,"default-expand-all":"","check-strictly":!1},null,8,["data"])):(i(),h(a,{key:2,description:"暂无权限数据","image-size":64}))]),_:1},8,["modelValue"])]),_:1})}}}),le=X(ae,[["__scopeId","data-v-0e80fdd4"]]);export{le as default};