2 lines
8.6 KiB
JavaScript
2 lines
8.6 KiB
JavaScript
import{b as ae,c as le,f as te}from"./index-3f6a6d9a.js";import{G as oe,aB as se,aD as ne,r as h,Z as q,e as E,b as ue,ag as m,aq as ie,l as o,m as S,U as c,O as s,p as u,T as _,F as T,a7 as R,P as ce,M as i,I as de,u as re,R as d,S as v,aG as pe,aH as ve}from"./vue-5ea6dbbd.js";import{F as me,E as p}from"./element-a57cc571.js";import{_ as fe}from"./index-380a124d.js";import"./vxe-830e4310.js";const z=C=>(pe("data-v-23d40a43"),C=C(),ve(),C),_e={class:"app-container"},Se={class:"role-info"},ge={class:"permission-wrapper"},he={class:"menu-tree"},be=z(()=>u("h3",null,"菜单权限",-1)),ye={class:"permission-config"},De={class:"fun-permission"},Ie=z(()=>u("h3",null,"功能权限",-1)),Ce={key:0,class:"menu-title"},ke={class:"menu-title-header"},we={class:"menu-info-tags"},Ve={key:1,class:"fun-item"},xe={class:"switch-with-text"},Fe={class:"switch-label"},Ne={key:2,class:"empty-tip"},Pe={key:0,class:"data-permission"},Te=z(()=>u("h3",null,"数据权限配置",-1)),Re={class:"operation-buttons"},ze=oe({name:"RolePermission",__name:"RolePermission",setup(C){const B=se(),H=ne(),x=h(!1),g=h(!1),b=q({roleId:Number(B.query.roleId)||0,roleName:B.query.roleName||""}),k=h(0),L=[{label:"PC端",value:0},{label:"小程序端",value:1},{label:"H5端",value:2}],F=h([]),r=h(null),e=h(null),U=[{label:"所有",value:1},{label:"本人",value:2},{label:"本部门",value:3},{label:"本部门及子部门",value:4},{label:"指定部门",value:5},{label:"指定人员",value:6}],l=q({dataScope:void 0,deptDataScope:[],userDataScope:[],excludeField:""}),y=E({get:()=>l.excludeField?l.excludeField.split(",").map(a=>a.trim()).filter(a=>a):[],set:a=>{l.excludeField=a.join(",")}}),$=E(()=>!e.value||!e.value.usableConfig||e.value.usableConfig.length===0?U:U.filter(a=>e.value.usableConfig.includes(a.value))),w=()=>{if(!b.roleId){p.error("角色ID不能为空");return}x.value=!0;const a={roleId:b.roleId,clientType:k.value};ae(a).then(n=>{F.value=n.data}).catch(()=>{p.error("获取权限配置失败"),F.value=[]}).finally(()=>{x.value=!1})},G=a=>{r.value=a,a.funId>0?(e.value=a,l.dataScope=a.dataScope,l.deptDataScope=a.assignDataScope||[],l.userDataScope=a.assignDataScope||[],y.value=a.excludeField||[]):(e.value=null,A())},j=async()=>{if(!e.value)return;const a=e.value.isSelect;if(!a&&e.value.funBindId>0){g.value=!0;try{await le(e.value.funBindId),p.success("删除权限成功"),w()}catch{p.error("删除权限失败"),e.value.isSelect=!0}finally{g.value=!1}}a&&(l.dataScope=e.value.dataScope,l.deptDataScope=e.value.assignDataScope||[],l.userDataScope=e.value.assignDataScope||[],y.value=e.value.excludeField||[])},V=()=>{e.value&&l.dataScope!==void 0&&(e.value.dataScope=l.dataScope,l.dataScope===5?e.value.assignDataScope=l.deptDataScope:l.dataScope===6?e.value.assignDataScope=l.userDataScope:e.value.assignDataScope=[],e.value.excludeField=y.value)},A=()=>{l.dataScope=void 0,l.deptDataScope=[],l.userDataScope=[],l.excludeField=""},Z=async()=>{if(!b.roleId){p.error("角色ID不能为空");return}if(!e.value){p.warning("请先选择并配置功能权限");return}if(!e.value.isSelect){p.warning("请先启用功能权限");return}const a=e.value;if(a.usableConfig&&a.usableConfig.length>0&&!a.dataScope){p.warning(`功能 [${a.funName}] 必须配置数据权限`);return}if(a.dataScope===5&&(!a.assignDataScope||a.assignDataScope.length===0)){p.warning(`功能 [${a.funName}] 请输入至少一个部门ID`);return}if(a.dataScope===6&&(!a.assignDataScope||a.assignDataScope.length===0)){p.warning(`功能 [${a.funName}] 请输入至少一个人员ID`);return}g.value=!0;try{const n={roleId:b.roleId,funId:a.funId,dataScope:a.dataScope,excludeField:a.excludeField||[],clientType:k.value};n.dataScope===5?n.deptDataScope=a.assignDataScope||[]:n.dataScope===6&&(n.userDataScope=a.assignDataScope||[]),await te(n),p.success("当前配置保存成功"),w()}catch{p.error("保存失败,请重试")}finally{g.value=!1}},J=()=>{H.push("/role/list")},K=()=>{w(),A()};return ue(()=>{w()}),(a,n)=>{const N=m("el-option"),D=m("el-select"),I=m("el-form-item"),M=m("el-form"),Q=m("el-icon"),W=m("el-tree"),f=m("el-tag"),X=m("el-switch"),O=m("el-button"),Y=m("el-card"),ee=ie("loading");return o(),S("div",_e,[c(Y,{shadow:"never"},{default:s(()=>[u("div",Se,[u("h2",null,_(b.roleName)+" 权限配置",1),c(M,{inline:!0},{default:s(()=>[c(I,{label:"客户端类型"},{default:s(()=>[c(D,{modelValue:k.value,"onUpdate:modelValue":n[0]||(n[0]=t=>k.value=t),onChange:K},{default:s(()=>[(o(),S(T,null,R(L,t=>c(N,{key:t.value,label:t.label,value:t.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),u("div",ge,[u("div",he,[be,ce((o(),i(W,{data:F.value,props:{label:"menuName",children:"children"},"default-expand-all":!0,onNodeClick:G},{default:s(({node:t,data:P})=>[u("span",{class:de(["tree-node",P.isSelect?"is-active":""])},[P.funId>0&&P.isSelect?(o(),i(Q,{key:0},{default:s(()=>[c(re(me))]),_:1})):d("",!0),u("span",null,_(t.label),1)],2)]),_:1},8,["data"])),[[ee,x.value]])]),u("div",ye,[u("div",De,[Ie,r.value?(o(),S("div",Ce,[u("div",ke,[u("span",null,_(r.value.menuName),1),c(f,{type:r.value.menuType===0?"danger":"success",size:"small"},{default:s(()=>[v(_(r.value.menuType===0?"菜单":"按钮"),1)]),_:1},8,["type"])]),u("div",we,[r.value.path?(o(),i(f,{key:0,size:"small",type:"info"},{default:s(()=>[v("路径: "+_(r.value.path),1)]),_:1})):d("",!0),r.value.icon?(o(),i(f,{key:1,size:"small",type:"info"},{default:s(()=>[v("图标: "+_(r.value.icon),1)]),_:1})):d("",!0),r.value.isTenant?(o(),i(f,{key:2,size:"small",type:"warning"},{default:s(()=>[v("租户")]),_:1})):d("",!0),r.value.isHide?(o(),i(f,{key:3,size:"small",type:"info"},{default:s(()=>[v("隐藏")]),_:1})):d("",!0)])])):d("",!0),e.value?(o(),S("div",Ve,[u("div",xe,[u("span",Fe,_(e.value.funName),1),c(X,{modelValue:e.value.isSelect,"onUpdate:modelValue":n[1]||(n[1]=t=>e.value.isSelect=t),disabled:g.value,onChange:j},null,8,["modelValue","disabled"])]),e.value.describe?(o(),i(f,{key:0,size:"small",type:"info"},{default:s(()=>[v(_(e.value.describe),1)]),_:1})):d("",!0),e.value.isSelect&&e.value.usableConfig&&e.value.usableConfig.length>0&&!e.value.dataScope?(o(),i(f,{key:1,size:"small",type:"danger"},{default:s(()=>[v(" 未配置数据权限 ")]),_:1})):d("",!0),e.value.isSelect&&e.value.dataScope===5&&(!e.value.assignDataScope||e.value.assignDataScope.length===0)?(o(),i(f,{key:2,size:"small",type:"danger"},{default:s(()=>[v(" 未输入部门ID ")]),_:1})):d("",!0),e.value.isSelect&&e.value.dataScope===6&&(!e.value.assignDataScope||e.value.assignDataScope.length===0)?(o(),i(f,{key:3,size:"small",type:"danger"},{default:s(()=>[v(" 未输入人员ID ")]),_:1})):d("",!0)])):(o(),S("div",Ne,_(r.value?"该菜单没有功能权限":"请选择菜单"),1))]),e.value&&e.value.isSelect?(o(),S("div",Pe,[Te,c(M,{model:l,"label-width":"120px","label-position":"left"},{default:s(()=>[e.value&&e.value.usableConfig&&e.value.usableConfig.length>0?(o(),i(I,{key:0,label:"数据权限类型"},{default:s(()=>[c(D,{modelValue:l.dataScope,"onUpdate:modelValue":n[2]||(n[2]=t=>l.dataScope=t),placeholder:"请选择数据权限类型",onChange:V},{default:s(()=>[(o(!0),S(T,null,R($.value,t=>(o(),i(N,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})):d("",!0),l.dataScope===5?(o(),i(I,{key:1,label:"指定部门ID"},{default:s(()=>[c(D,{modelValue:l.deptDataScope,"onUpdate:modelValue":n[3]||(n[3]=t=>l.deptDataScope=t),multiple:"",filterable:"","allow-create":"","default-first-option":"",placeholder:"请输入部门ID并按回车",onChange:V,clearable:""},null,8,["modelValue"])]),_:1})):d("",!0),l.dataScope===6?(o(),i(I,{key:2,label:"指定人员ID"},{default:s(()=>[c(D,{modelValue:l.userDataScope,"onUpdate:modelValue":n[4]||(n[4]=t=>l.userDataScope=t),multiple:"",filterable:"","allow-create":"","default-first-option":"",placeholder:"请输入人员ID并按回车",onChange:V,clearable:""},null,8,["modelValue"])]),_:1})):d("",!0),e.value&&e.value.fieldConfig&&e.value.fieldConfig.length>0?(o(),i(I,{key:3,label:"排除字段"},{default:s(()=>[c(D,{modelValue:y.value,"onUpdate:modelValue":n[5]||(n[5]=t=>y.value=t),multiple:"",placeholder:"请选择排除字段",onChange:V,clearable:""},{default:s(()=>[(o(!0),S(T,null,R(e.value.fieldConfig,t=>(o(),i(N,{key:t,label:t,value:t},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})):d("",!0)]),_:1},8,["model"])])):d("",!0)])]),u("div",Re,[c(O,{type:"primary",onClick:Z,loading:g.value,disabled:!e.value||!e.value.isSelect},{default:s(()=>[v(" 保存当前配置 ")]),_:1},8,["loading","disabled"]),c(O,{onClick:J},{default:s(()=>[v("取消")]),_:1})])]),_:1})])}}});const qe=fe(ze,[["__scopeId","data-v-23d40a43"]]);export{qe as default};
|