You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
2.9 KiB
1 line
2.9 KiB
import{n as e}from"./axios-Cze8nXLL.js";import{At as t,I as n,N as r,V as i,X as a,_ as o,at as s,d as c,f as l,i as u,l as d,p as f,v as p,y as m,z as h}from"./runtime-core.esm-bundler-CP0MNZrl.js";import{n as g}from"./index-qyPO_3-6.js";var _=m({__name:`Roles`,setup(m){let _=s(!1),v=s(!1),y=s(!1),b=s([]),x=s([]),S=s(`super_admin`),C=s([]),w=d(()=>{let e=new Map;b.value.forEach(t=>e.set(t.id,{key:t.id,title:t.name,children:[]}));let t=[];return b.value.forEach(n=>{let r=e.get(n.id);n.parent_id>0&&e.has(n.parent_id)?e.get(n.parent_id).children.push(r):t.push(r)}),t}),T=d(()=>x.value.find(e=>e.role===S.value));async function E(){let{data:e}=await g.get(`/me`);y.value=e?.role===`super_admin`}async function D(){_.value=!0;try{let{data:e}=await g.get(`/role-menu-permissions`);b.value=e.menus||[],x.value=e.roles||[];let t=x.value[0];t&&(S.value=t.role,C.value=[...t.menu_ids||[]])}catch(t){e.error(t?.response?.data?.message??`加载角色菜单权限失败`)}finally{_.value=!1}}function O(e){S.value=e,C.value=[...x.value.find(t=>t.role===e)?.menu_ids||[]]}function k(e){C.value=e.map(e=>Number(e))}async function A(){if(y.value){v.value=!0;try{await g.put(`/role-menu-permissions/${S.value}`,{menu_ids:C.value});let t=x.value.find(e=>e.role===S.value);t&&(t.menu_ids=[...C.value]),e.success(`角色菜单权限保存成功`)}catch(t){e.error(t?.response?.data?.message??`保存失败`)}finally{v.value=!1}}}return r(async()=>{await E(),await D()}),(e,r)=>{let s=i(`a-alert`),d=i(`a-button`),m=i(`a-space`),g=i(`a-card`),b=i(`a-tree`),E=i(`a-spin`);return n(),c(g,{title:`用户与权限 / 角色管理(菜单权限)`},{default:a(()=>[p(s,{style:{"margin-bottom":`12px`}},{default:a(()=>[...r[0]||=[o(` 当前仅控制“每个角色可查看哪些菜单”;接口级细粒度权限后续可继续扩展。 `,-1)]]),_:1}),y.value?l(``,!0):(n(),c(s,{key:0,type:`info`,style:{"margin-bottom":`12px`}},{default:a(()=>[...r[1]||=[o(` 当前为只读模式,仅超级管理员可以修改角色菜单权限。 `,-1)]]),_:1})),p(E,{loading:_.value},{default:a(()=>[p(m,{align:`start`,fill:``},{default:a(()=>[p(g,{title:`角色列表`,size:`small`,style:{width:`220px`}},{default:a(()=>[p(m,{direction:`vertical`,fill:``},{default:a(()=>[(n(!0),f(u,null,h(x.value,e=>(n(),c(d,{key:e.role,type:S.value===e.role?`primary`:`secondary`,long:``,onClick:t=>O(e.role)},{default:a(()=>[o(t(e.label),1)]),_:2},1032,[`type`,`onClick`]))),128))]),_:1})]),_:1}),p(g,{title:`${T.value?.label||``} - 菜单权限`,size:`small`,style:{flex:`1`}},{extra:a(()=>[p(d,{type:`primary`,disabled:!y.value,loading:v.value,onClick:A},{default:a(()=>[...r[2]||=[o(`保存当前角色`,-1)]]),_:1},8,[`disabled`,`loading`])]),default:a(()=>[p(b,{checkable:``,"block-node":``,data:w.value,"checked-keys":C.value,"default-expand-all":!0,onCheck:k},null,8,[`data`,`checked-keys`])]),_:1},8,[`title`])]),_:1})]),_:1},8,[`loading`])]),_:1})}}});export{_ as default}; |