1 line
7.4 KiB
JavaScript
1 line
7.4 KiB
JavaScript
import{$ as e,H as t,L as n,O as r,P as i,V as a,Wt as o,_ as s,d as c,et as l,f as u,lt as d,p as f,st as p,u as m,v as h}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{l as g,o as _,s as v,t as y}from"./index-Mgun2LFs.js";import"./request-DG5cMCYw.js";import{permissionApi as b,roleApi as x}from"./system-C6kRQZ54.js";var S={class:`p-6 space-y-4`},ee={class:`bg-white rounded-2xl border border-gray-100 shadow-sm p-4 flex items-center flex-wrap gap-3`},C={class:`bg-white rounded-2xl border border-gray-100 shadow-sm`},w={class:`flex items-center justify-between px-5 py-4 border-b border-gray-50`},T={class:`px-2`},E={class:`px-5 py-3 border-t border-gray-50`},te={style:{"min-height":`200px`,"max-height":`480px`,"overflow-y":`auto`}},D=y({__name:`index`,setup(y){let D=d([]),O=d(0),k=d(!1),A=p({keyword:``}),j=p({page:1,page_size:20}),M=d(!1),N=d(`新增角色`),P=d(!1),F=d(!1),I=d(null),L=p({id:null,name:``,code:``,description:``,status:1}),R={name:[{required:!0,message:`请输入角色名称`,trigger:`blur`}]};function z(){return`role_`+Date.now().toString(36)}let B=d(!1),V=d(!1),H=d(null),U=d([]),W=d(null),G=d(``),K=d([]),q={label:`name`,children:`children`};async function J(){k.value=!0;try{let e=await x.getList({...A,...j});D.value=e.data?.list||[],O.value=e.data?.total||0}catch{}finally{k.value=!1}}async function Y(){try{let e=(await b.getList({page_size:500})).data;Array.isArray(e)?U.value=e:U.value=X(e?.list||e?.data||[])}catch{}}function X(e,t=0){return e.filter(e=>(e.parent_id??0)===t).map(t=>({...t,children:X(e,t.id)}))}function Z(){j.page=1,J()}function ne(){A.keyword=``,Z()}function re(){F.value=!1,N.value=`新增角色`,Object.assign(L,{id:null,name:``,code:z(),description:``,status:1}),M.value=!0}async function ie(e){F.value=!0,N.value=`编辑角色`;let t=(await x.getDetail(e.id)).data;Object.assign(L,{id:t.id,name:t.name,code:t.code,description:t.description||``,status:t.status}),M.value=!0}async function ae(){I.value&&await I.value.validate(async e=>{if(e){P.value=!0;try{F.value?(await x.update(L.id,L),v.success(`角色更新成功`)):(await x.create(L),v.success(`角色创建成功`)),M.value=!1,J()}catch{}finally{P.value=!1}}})}async function Q(e){await _.confirm(`确定删除角色「${e.name}」吗?`,`删除确认`,{confirmButtonText:`确定删除`,cancelButtonText:`取消`,type:`warning`,confirmButtonClass:`el-button--danger`}),await x.delete(e.id),v.success(`删除成功`),J()}async function oe(e){W.value=e.id,G.value=e.name,B.value=!0,V.value=!0;try{U.value.length===0&&await Y(),K.value=((await x.getDetail(e.id)).data?.permissions||[]).map(e=>e.id),await r(),H.value&&H.value.setCheckedKeys(K.value,!0)}catch{}finally{V.value=!1}}async function se(){if(!H.value)return;let e=H.value.getCheckedKeys(!1),t=H.value.getHalfCheckedKeys(),n=[...e,...t];try{await x.assignPermissions(W.value,n),v.success(`权限分配成功`),B.value=!1}catch{}}function ce(e){j.page=e,J()}function le(e){j.page_size=e,j.page=1,J()}return i(()=>{J(),Y()}),(r,i)=>{let d=a(`Search`),p=a(`el-icon`),_=a(`el-input`),v=a(`el-button`),y=a(`el-table-column`),b=a(`el-tag`),x=a(`el-table`),z=a(`el-pagination`),W=a(`el-form-item`),K=a(`el-radio`),J=a(`el-radio-group`),Y=a(`el-form`),X=a(`el-dialog`),ue=a(`el-tree`),de=a(`el-empty`),$=t(`loading`);return n(),f(`div`,S,[m(`div`,ee,[h(_,{modelValue:A.keyword,"onUpdate:modelValue":i[0]||=e=>A.keyword=e,placeholder:`搜索角色名称/标识`,style:{width:`240px`},clearable:``,onKeydown:g(Z,[`enter`])},{prefix:e(()=>[h(p,null,{default:e(()=>[h(d)]),_:1})]),_:1},8,[`modelValue`]),h(v,{type:`primary`,icon:`Search`,onClick:Z},{default:e(()=>[...i[11]||=[s(`查询`,-1)]]),_:1}),h(v,{icon:`Refresh`,onClick:ne},{default:e(()=>[...i[12]||=[s(`重置`,-1)]]),_:1})]),m(`div`,C,[m(`div`,w,[i[14]||=m(`div`,{class:`flex items-center gap-3`},null,-1),h(v,{type:`primary`,icon:`Plus`,onClick:re},{default:e(()=>[...i[13]||=[s(`新增角色`,-1)]]),_:1})]),m(`div`,T,[l((n(),c(x,{data:D.value,style:{width:`100%`}},{default:e(()=>[h(y,{prop:`name`,label:`角色名称`,"min-width":`140`}),h(y,{prop:`code`,label:`角色标识`,"min-width":`140`}),h(y,{prop:`description`,label:`描述`,"min-width":`200`,"show-overflow-tooltip":``}),h(y,{prop:`user_count`,label:`用户数`,width:`90`,align:`center`}),h(y,{label:`状态`,width:`90`,align:`center`},{default:e(({row:t})=>[h(b,{type:t.status===1?`success`:`danger`,size:`small`},{default:e(()=>[s(o(t.status===1?`启用`:`禁用`),1)]),_:2},1032,[`type`])]),_:1}),h(y,{prop:`created_at`,label:`创建时间`,"min-width":`160`}),h(y,{label:`操作`,width:`200`,fixed:`right`,align:`center`},{default:e(({row:t})=>[h(v,{size:`small`,type:`primary`,text:``,onClick:e=>ie(t)},{default:e(()=>[...i[15]||=[s(`编辑`,-1)]]),_:1},8,[`onClick`]),h(v,{size:`small`,type:`warning`,text:``,onClick:e=>oe(t)},{default:e(()=>[...i[16]||=[s(`分配权限`,-1)]]),_:1},8,[`onClick`]),h(v,{size:`small`,type:`danger`,text:``,onClick:e=>Q(t)},{default:e(()=>[...i[17]||=[s(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[$,k.value]])]),m(`div`,E,[h(z,{"current-page":j.page,"onUpdate:currentPage":i[1]||=e=>j.page=e,"page-size":j.page_size,"onUpdate:pageSize":i[2]||=e=>j.page_size=e,total:O.value,"page-sizes":[10,20,50],layout:`total, sizes, prev, pager, next, jumper`,background:``,onCurrentChange:ce,onSizeChange:le},null,8,[`current-page`,`page-size`,`total`])])]),h(X,{modelValue:M.value,"onUpdate:modelValue":i[8]||=e=>M.value=e,title:N.value,width:`480px`,"destroy-on-close":``},{footer:e(()=>[h(v,{onClick:i[7]||=e=>M.value=!1},{default:e(()=>[...i[21]||=[s(`取消`,-1)]]),_:1}),h(v,{type:`primary`,loading:P.value,onClick:ae},{default:e(()=>[s(o(F.value?`保存修改`:`确认创建`),1)]),_:1},8,[`loading`])]),default:e(()=>[h(Y,{ref_key:`formRef`,ref:I,model:L,rules:R,"label-width":`90px`},{default:e(()=>[h(W,{label:`角色名称`,prop:`name`},{default:e(()=>[h(_,{modelValue:L.name,"onUpdate:modelValue":i[3]||=e=>L.name=e,placeholder:`请输入角色名称`},null,8,[`modelValue`])]),_:1}),F.value?(n(),c(W,{key:0,label:`角色标识`},{default:e(()=>[h(_,{modelValue:L.code,"onUpdate:modelValue":i[4]||=e=>L.code=e,disabled:``},null,8,[`modelValue`]),i[18]||=m(`div`,{class:`form-tip`},`角色标识由系统自动生成,不可修改`,-1)]),_:1})):u(``,!0),h(W,{label:`描述`,prop:`description`},{default:e(()=>[h(_,{modelValue:L.description,"onUpdate:modelValue":i[5]||=e=>L.description=e,type:`textarea`,rows:3,placeholder:`请输入角色描述(选填)`},null,8,[`modelValue`])]),_:1}),h(W,{label:`状态`,prop:`status`},{default:e(()=>[h(J,{modelValue:L.status,"onUpdate:modelValue":i[6]||=e=>L.status=e},{default:e(()=>[h(K,{value:1},{default:e(()=>[...i[19]||=[s(`启用`,-1)]]),_:1}),h(K,{value:0},{default:e(()=>[...i[20]||=[s(`禁用`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`,`title`]),h(X,{modelValue:B.value,"onUpdate:modelValue":i[10]||=e=>B.value=e,title:`分配权限 - ${G.value}`,width:`520px`,"destroy-on-close":``},{footer:e(()=>[h(v,{onClick:i[9]||=e=>B.value=!1},{default:e(()=>[...i[22]||=[s(`取消`,-1)]]),_:1}),h(v,{type:`primary`,onClick:se},{default:e(()=>[...i[23]||=[s(`保存权限`,-1)]]),_:1})]),default:e(()=>[l((n(),f(`div`,te,[h(ue,{ref_key:`permTreeRef`,ref:H,data:U.value,props:q,"show-checkbox":``,"node-key":`id`,"default-expand-all":``,"check-strictly":``},null,8,[`data`]),!V.value&&U.value.length===0?(n(),c(de,{key:0,description:`暂无权限数据`})):u(``,!0)])),[[$,V.value]])]),_:1},8,[`modelValue`,`title`])])}}},[[`__scopeId`,`data-v-54fa926d`]]);export{D as default}; |