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
5.9 KiB

1 month ago
import{C as e,Ct as t,D as n,E as r,G as i,I as a,T as o,X as s,Xt as c,Y as l,at as u,b as d,d as f,ht as p,m,ot as h,tn as g,x as _}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as v,l as y,s as b}from"./index-CgtDRRqt.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{r as S}from"./admin-list-CBoToEFo.js";import{r as C}from"./menus-Cwr8a0Xv.js";import{a as w,i as T,n as E,r as D,t as O}from"./roles-DnmcoXuW.js";var k={class:`list-page`},A={class:`page-header`},j={class:`list-filter-bar`},M={class:`table-row-actions`},N={class:`list-pager`},P=b(n({__name:`index`,setup(n){let b=p(!1),P=p([]),F=p({current_page:1,per_page:20,total:0}),I=p(``),L=p(1),R=p([]),z=p(!1),B=p(null),V=p({code:``,name:``,remark:``,sort:0,status:1}),H=p();function U(e){return e.map(e=>({id:e.id,label:e.title,children:e.children?.length?U(e.children):void 0}))}async function W(){b.value=!0;try{let e=await T({page:L.value,page_size:F.value.per_page,keyword:I.value||void 0});P.value=e.items,F.value=e.meta}finally{b.value=!1}}async function G(){R.value=U(await C())}async function K(){B.value=null,V.value={code:``,name:``,remark:``,sort:0,status:1},await G(),z.value=!0,await a(),H.value?.setCheckedKeys([],!1)}async function q(e){e.code===`super_admin`&&y.warning(`超级管理员角色请谨慎修改菜单分配`),B.value=e.id,await G();let t=await D(e.id);V.value={code:t.code,name:t.name,remark:t.remark||``,sort:t.sort,status:t.status},z.value=!0,await a(),H.value?.setCheckedKeys(t.menu_ids,!1)}async function J(){let e=H.value?.getCheckedKeys(!1)||[];B.value?await w(B.value,{name:V.value.name,remark:V.value.remark||null,sort:V.value.sort,status:V.value.status,menu_ids:e}):await O({code:V.value.code,name:V.value.name,remark:V.value.remark||null,sort:V.value.sort,status:V.value.status,menu_ids:e}),y.success(`已保存`),z.value=!1,await W()}async function Y(e){if(e.code===`super_admin`){y.warning(`不能删除预置超级管理员`);return}await v.confirm(`确定删除角色「${e.name}」?`,`提示`,{type:`warning`}),await E(e.id),y.success(`已删除`),await W()}function X(){L.value=1,W()}function Z(){I.value=``,L.value=1,W()}return x(W),(n,a)=>{let p=l(`el-button`),v=l(`el-input`),y=l(`el-table-column`),x=l(`el-table`),C=l(`el-pagination`),w=l(`el-card`),T=l(`el-form-item`),E=l(`el-input-number`),D=l(`el-switch`),O=l(`el-form`),U=l(`el-tree`),G=l(`el-dialog`),Q=s(`loading`);return i(),e(m,null,[d(`div`,k,[d(`div`,A,[a[11]||=d(`h1`,{class:`page-title`},`角色管理`,-1),r(p,{type:`primary`,size:`small`,class:`btn-create`,onClick:K},{default:u(()=>[...a[10]||=[o(`新增角色`,-1)]]),_:1})]),r(w,{shadow:`never`,class:`admin-list-card`},{default:u(()=>[d(`div`,j,[r(v,{modelValue:I.value,"onUpdate:modelValue":a[0]||=e=>I.value=e,placeholder:`名称/编码`,clearable:``,class:`filter-search`,onKeyup:f(X,[`enter`])},null,8,[`modelValue`]),r(p,{type:`primary`,onClick:X},{default:u(()=>[...a[12]||=[o(`搜索`,-1)]]),_:1}),r(p,{onClick:Z},{default:u(()=>[...a[13]||=[o(`重置`,-1)]]),_:1})]),h((i(),_(x,{data:P.value,"row-key":`id`},{default:u(()=>[r(y,{prop:`code`,label:`编码`,width:`160`}),r(y,{prop:`name`,label:`名称`,width:`160`}),r(y,{prop:`remark`,label:`备注`,"min-width":`200`,"show-overflow-tooltip":``}),r(y,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(y,{label:`状态`,width:`90`,align:`center`},{default:u(({row:e})=>[d(`span`,{class:c([`status-badge`,t(S)(e.status)])},g(e.status===1?`启用`:`停用`),3)]),_:1}),r(y,{label:`操作`,width:`160`,fixed:`right`},{default:u(({row:e})=>[d(`div`,M,[r(p,{class:`btn-action-secondary`,onClick:t=>q(e)},{default:u(()=>[...a[14]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(p,{class:`btn-action-secondary`,disabled:e.code===`super_admin`,onClick:t=>Y(e)},{default:u(()=>[...a[15]||=[o(` 删除 `,-1)]]),_:1},8,[`disabled`,`onClick`])])]),_:1})]),_:1},8,[`data`])),[[Q,b.value]]),d(`div`,N,[r(C,{"current-page":L.value,"onUpdate:currentPage":a[1]||=e=>L.value=e,layout:`total, prev, pager, next`,total:F.value.total,"page-size":F.value.per_page,onCurrentChange:W},null,8,[`current-page`,`tot