BookSystem/frontend/dist/assets/RoleManage-DlOeFBnz.js
jayhgq 83d84254f5 feat: 增强用户、角色和权限管理功能
- 在用户、角色和权限的API中添加模糊查询支持
- 更新CRUD选项以支持查询参数的转换
- 优化前端管理页面,提升用户体验
- 删除不再使用的旧资产文件以减小包体积
2026-05-09 13:13:45 +08:00

2 lines
4.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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