1 line
5.1 KiB
JavaScript
1 line
5.1 KiB
JavaScript
import{D as e,E as t,On as n,_ as r,b as i,bt as a,ct as o,g as s,gn as c,k as l,mt as u,o as d,qt as f,tr as p,v as m,vn as h,y as g}from"./runtime-core.esm-bundler-DkysjgTd.js";import{t as _}from"./objectSpread2-BmonrgTA.js";import{n as v}from"./objectWithoutProperties-BjoYlK0I.js";import{t as y}from"./use-access-ObRBpYsT.js";import{t as b}from"./table-EWhwMmEC.js";import{n as x,t as S}from"./form-CZK1ilUa.js";import{E as C,_ as w,a as T,m as E}from"./console-CQVAqHCG.js";import{a as D}from"./config-provider-D1kcLCP5.js";import{t as O}from"./alert-CkUknOsQ.js";import{t as k}from"./popconfirm-BqMuKaMZ.js";import{t as A}from"./button-B2y2NpJm.js";import{t as j}from"./card-ZuLu6CvW.js";import{r as ee,t as te}from"./checkbox-DbdxvqS7.js";import{t as M}from"./tag-BFecLZmQ.js";import{t as N}from"./input-DgEff0DC.js";import{t as P}from"./modal-Ju-U4s3Q.js";var F={class:`p-5`},I={class:`mb-1 text-sm font-medium text-gray-600`},L={class:`flex flex-wrap gap-x-6 gap-y-1`},R={class:`ml-1 text-xs text-gray-400`},z=l({__name:`roles`,setup(l){let{hasAccessByCodes:z}=y(),B=s(()=>z([`role:write`])),V=h(!1),H=h([]),U=h([]),W=h(!1),G=h(!1),K=c({code:``,name:``,permissions:[]}),q=s(()=>{let e=new Map;for(let n of U.value){var t;let r=(t=e.get(n.group_name))==null?[]:t;r.push(n),e.set(n.group_name,r)}return[...e.entries()].map(([e,t])=>({group:e,items:t}))});function J(){return Y.apply(this,arguments)}function Y(){return Y=v(function*(){V.value=!0;try{H.value=(yield w()).roles,B.value&&(U.value=(yield E()).permissions)}finally{V.value=!1}}),Y.apply(this,arguments)}function X(){G.value=!0,Object.assign(K,{code:``,name:``,permissions:[]}),W.value=!0}function Z(e){G.value=!1,Object.assign(K,{code:e.code,name:e.name,permissions:[...e.permissions]}),W.value=!0}function ne(){return Q.apply(this,arguments)}function Q(){return Q=v(function*(){if(!K.code){D.warning(`角色编码不能为空`);return}H.value=(yield C(_({},K))).roles,W.value=!1,D.success(`已保存,权限立即生效(无需重启,也无需重新登录)`)}),Q.apply(this,arguments)}function re(e){return $.apply(this,arguments)}function $(){return $=v(function*(e){H.value=(yield T(e.code)).roles,D.success(`已删除`)}),$.apply(this,arguments)}let ie=[{title:`编码`,dataIndex:`code`,key:`code`,width:140},{title:`名称`,dataIndex:`name`,key:`name`,width:140},{title:`权限`,key:`permissions`},{title:`在用人数`,dataIndex:`user_count`,key:`user_count`,width:90},{title:`操作`,key:`action`,width:140}];return o(J),(o,s)=>(u(),i(`div`,F,[e(n(O),{class:`mb-4`,type:`info`,"show-icon":``,message:`权限存在数据库里,不在代码里`,description:`改完立刻生效——不用重启服务,用户也不用重新登录。管理员角色不可削权(削了就没人能加回来),内置角色和仍有人在用的角色不可删除。`}),e(n(j),{title:`角色与权限`},{extra:f(()=>[B.value?(u(),m(n(A),{key:0,type:`primary`,onClick:X},{default:f(()=>[...s[4]||(s[4]=[t(`新增角色`,-1)])]),_:1})):g(``,!0)]),default:f(()=>[e(n(b),{columns:ie,"data-source":H.value,loading:V.value,"row-key":`code`,size:`small`,pagination:!1},{bodyCell:f(({column:o,record:c})=>[o.key===`code`?(u(),i(d,{key:0},[r(`code`,null,p(c.code),1),c.builtin?(u(),m(n(M),{key:0,class:`ml-2`,color:`blue`},{default:f(()=>[...s[5]||(s[5]=[t(`内置`,-1)])]),_:1})):g(``,!0)],64)):o.key===`permissions`?(u(!0),i(d,{key:1},a(c.permissions,e=>(u(),m(n(M),{key:e,class:`mb-1`},{default:f(()=>[t(p(e),1)]),_:2},1024))),128)):o.key===`action`?(u(),i(d,{key:2},[e(n(A),{type:`link`,size:`small`,disabled:!B.value,onClick:e=>Z(c)},{default:f(()=>[...s[6]||(s[6]=[t(` 编辑 `,-1)])]),_:1},8,[`disabled`,`onClick`]),e(n(k),{title:`确定删除这个角色?`,onConfirm:e=>re(c)},{default:f(()=>[e(n(A),{type:`link`,size:`small`,danger:``,disabled:!B.value||c.builtin||c.user_count>0},{default:f(()=>[...s[7]||(s[7]=[t(` 删除 `,-1)])]),_:1},8,[`disabled`])]),_:2},1032,[`onConfirm`])],64)):g(``,!0)]),_:1},8,[`data-source`,`loading`])]),_:1}),e(n(P),{open:W.value,"onUpdate:open":s[3]||(s[3]=e=>W.value=e),title:G.value?`新增角色`:`编辑角色`,width:`640px`,onOk:ne},{default:f(()=>[e(n(S),{model:K,layout:`vertical`,class:`pt-2`},{default:f(()=>[e(n(x),{label:`角色编码(字母数字,创建后不可改)`},{default:f(()=>[e(n(N),{value:K.code,"onUpdate:value":s[0]||(s[0]=e=>K.code=e),disabled:!G.value,placeholder:`reviewer`},null,8,[`value`,`disabled`])]),_:1}),e(n(x),{label:`角色名称`},{default:f(()=>[e(n(N),{value:K.name,"onUpdate:value":s[1]||(s[1]=e=>K.name=e),placeholder:`审核员`},null,8,[`value`])]),_:1}),e(n(x),{label:`权限`},{default:f(()=>[e(n(ee),{value:K.permissions,"onUpdate:value":s[2]||(s[2]=e=>K.permissions=e),class:`w-full`},{default:f(()=>[(u(!0),i(d,null,a(q.value,e=>(u(),i(`div`,{key:e.group,class:`mb-3`},[r(`div`,I,p(e.group),1),r(`div`,L,[(u(!0),i(d,null,a(e.items,e=>(u(),m(n(te),{key:e.code,value:e.code},{default:f(()=>[t(p(e.name)+` `,1),r(`code`,R,p(e.code),1)]),_:2},1032,[`value`]))),128))])]))),128))]),_:1},8,[`value`]),s[8]||(s[8]=r(`p`,{class:`mt-1 text-xs text-gray-500`},` 提交的是最终状态:取消勾选就是收回该权限。 `,-1))]),_:1})]),_:1},8,[`model`])]),_:1},8,[`open`,`title`])]))}});export{z as default}; |