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