roleManageAdd-H2WFBKI1.js 6.3 KB

1
  1. import{d as le,r as m,a as S,o as oe,T as re,f as u,i as a,w as s,s as ae,p as g,q as se,v as h,m as y,F as A,x,E as z,a4 as D,y as M,l as R,h as G,_ as te}from"./index-DrwGqDEP.js";import{b as de,c as ce,f as ie}from"./auth-BvE0Y7x2.js";import{g as ue}from"./menus-C17TqQjG.js";import{c as he}from"./setting-BY0b_v3N.js";const pe={class:"permission-container"},fe={key:0,class:"el-icon-arrow-down"},me={key:0,class:"role-dropdown__list"},ge={class:"role-dropdown__label"},ve={key:0,class:"el-icon-arrow-right"},_e={key:0,class:"role-dropdown__list"},ke={class:"role-dropdown__label"},ye=le({__name:"roleManageAdd",setup(be){const b=ae(),j=se();m(!0);const H=m([]),J=m([]),v=S({data_scope:"ALL",role_name:"",dept_ids:"",role_describe:""}),K=S({role_name:[{required:!0,message:"请输入角色名称!",trigger:"blur"},{min:1,max:10,message:"长度在 1 到 10 个字符",trigger:"blur"}]}),t=m([]),U=m(!1),E=m(!1),O=m(!1),k=m(b.query.id);console.log("role_id:",b.query);let Q=function l(e,n){const o=[];for(let r=0;r<e.length;r++)if(e[r].parent_id===n){const p={id:e[r].id,parent_id:e[r].parent_id,name:e[r].name,create_time:e[r].create_time,remark:e[r].remark,sn:e[r].sn,sort:e[r].sort,type:e[r].type,region_ids:e[r].region_ids,children:l(e,e[r].id)};o.push(p)}return o};const q=()=>{he({page_no:1,page_size:1e3}).then(l=>{H.value=Q(l,"0");const e=[],n=o=>{o.forEach(r=>{e.push(r),r.children&&r.children.length>0&&n(r.children)})};n(l),J.value=e,v.dept_ids.length===e.length&&(O.value=!0)})},_=l=>Array.isArray(l.children)&&l.children.length!==0,W=l=>{E.value=!1,t.value=P(t.value,l)},V=(l,e)=>{l.children&&l.children.length&&(l.children=P(l.children,l.checked)),w(t.value),F(t.value)},P=(l,e)=>{const n=[...l];return n.map(o=>{o.checked=e,o.children&&o.children.length&&(o.children=P(o.children,e))}),n},C=l=>{if(!Array.isArray(l))return!1;const e=l.length,n=l.filter(o=>o.checked).length;return n!==0&&e!==n},w=l=>{const e=l||t.value;if(!Array.isArray(e))return console.warn("permissions is not an array:",e),[];const n=[];e.forEach(p=>{n.push(p),p.children&&n.push(...w(p.children))});const o=n.length,r=n.filter(p=>p.checked).length;return U.value=o===r,E.value=r!==0&&o!==r,n},F=l=>{(l||t.value).forEach(n=>{if(n.children&&n.children.length){F(n.children),n.children.length;const o=n.children.filter(r=>r.checked).length;n.checked=!!o}})},I=m(),X=()=>{I.value.validate(l=>{if(l){let e={...v,menus:t.value};const n=()=>{z.success("保存成功!"),j.push({name:"roleManage"})};k.value==="0"?ce(e).then(()=>n()):ie(k.value,e).then(()=>n())}else return z.error("表单填写有误,请检查!"),!1})},T=()=>{ue().then(l=>{k.value!=="0"?de(k.value).then(e=>{const n=N(e.menus);t.value=$(l,n),Array.isArray(t.value)?w():console.warn("Invalid permissions data:",t.value),q()}):(t.value=l,Array.isArray(t.value)?w():console.warn("Invalid permissions data:",t.value),q())})},N=l=>{const e=[];return l.forEach(n=>{n.checked&&e.push(n.identifier),n.children&&n.children.length&&e.push(...N(n.children))}),e},$=(l,e)=>{const n=[];return l.forEach(o=>{e.includes(o.identifier)||o.hidden?o.checked=!0:o.checked=!1,o.children&&(o.children=$(o.children,e)),n.push(o)}),n};return oe(()=>{T()}),re(()=>b.query.id,()=>{k.value=b.query.id,T()}),(l,e)=>{const n=g("el-input"),o=g("el-form-item"),r=g("el-checkbox"),p=g("el-col"),L=g("el-popover"),Y=g("el-row"),Z=g("el-button"),ee=g("el-form");return h(),u("div",pe,[a(ee,{model:v,rules:K,ref_key:"permissionFormRef",ref:I,"label-width":"200px",class:"demo-ruleForm"},{default:s(()=>[a(o,{label:"角色名称",prop:"role_name"},{default:s(()=>[a(n,{modelValue:v.role_name,"onUpdate:modelValue":e[0]||(e[0]=d=>v.role_name=d)},null,8,["modelValue"])]),_:1}),a(o,{label:"角色描述",prop:"role_describe"},{default:s(()=>[a(n,{modelValue:v.role_describe,"onUpdate:modelValue":e[1]||(e[1]=d=>v.role_describe=d)},null,8,["modelValue"])]),_:1}),a(o,{label:"角色权限",prop:"permission"},{default:s(()=>[a(r,{indeterminate:E.value,modelValue:U.value,"onUpdate:modelValue":e[2]||(e[2]=d=>U.value=d),onChange:W},{default:s(()=>[y("全部选择")]),_:1},8,["indeterminate","modelValue"]),(h(!0),u(A,null,x(t.value,d=>(h(),u("div",{key:d.identifier,class:"level_1"},[a(Y,{gutter:20},{default:s(()=>[a(p,{span:4},{default:s(()=>[a(r,{modelValue:d.checked,"onUpdate:modelValue":c=>d.checked=c,label:d.title,indeterminate:C(d.children),onChange:c=>V(d,"")},null,8,["modelValue","onUpdate:modelValue","label","indeterminate","onChange"])]),_:2},1024),a(p,{span:20},{default:s(()=>[(h(!0),u(A,null,x(d.children,c=>(h(),u("div",{key:c.identifier,class:"checkbox-dropdown"},[a(L,{placement:"bottom",trigger:"hover","open-delay":300,disabled:!_(c),"append-to-body":!1},{reference:s(()=>[a(r,{modelValue:c.checked,"onUpdate:modelValue":i=>c.checked=i,indeterminate:C(c.children),onClick:e[3]||(e[3]=D(()=>{},["stop"])),onChange:i=>V(c,d)},{default:s(()=>[y(M(c.title)+" ",1),_(c)?(h(),u("i",fe)):R("",!0)]),_:2},1032,["modelValue","onUpdate:modelValue","indeterminate","onChange"])]),default:s(()=>[_(c)?(h(),u("div",me,[(h(!0),u(A,null,x(c.children,i=>(h(),u("div",{class:"role-dropdown",key:i.identifier},[a(L,{placement:"right",trigger:"hover","open-delay":200,disabled:!_(i),"append-to-body":!1},{reference:s(()=>[G("div",ge,[a(r,{modelValue:i.checked,"onUpdate:modelValue":f=>i.checked=f,indeterminate:C(i.children),onClick:e[4]||(e[4]=D(()=>{},["stop"])),onChange:f=>V(i,c)},{default:s(()=>[y(M(i.title)+" ",1),_(i)?(h(),u("i",ve)):R("",!0)]),_:2},1032,["modelValue","onUpdate:modelValue","indeterminate","onChange"])])]),default:s(()=>[_(i)?(h(),u("div",_e,[(h(!0),u(A,null,x(i.children,(f,ne)=>(h(),u("div",{class:"role-dropdown",key:ne},[a(L,{placement:"right",trigger:"hover","open-delay":200,disabled:!_(f),"append-to-body":!1},{reference:s(()=>[G("div",ke,[a(r,{modelValue:f.checked,"onUpdate:modelValue":B=>f.checked=B,indeterminate:C(f.children),onClick:e[5]||(e[5]=D(()=>{},["stop"])),onChange:B=>V(f,i)},{default:s(()=>[y(M(f.title),1)]),_:2},1032,["modelValue","onUpdate:modelValue","indeterminate","onChange"])])]),_:2},1032,["disabled"])]))),128))])):R("",!0)]),_:2},1032,["disabled"])]))),128))])):R("",!0)]),_:2},1032,["disabled"])]))),128))]),_:2},1024)]),_:2},1024)]))),128))]),_:1}),a(o,{label:""},{default:s(()=>[a(Z,{type:"primary",size:"small",style:{"margin-top":"15px"},onClick:X},{default:s(()=>[y("保存设置")]),_:1})]),_:1})]),_:1},8,["model","rules"])])}}}),xe=te(ye,[["__scopeId","data-v-47116be7"]]);export{xe as default};