import{R as w,d as S,e as h,f as A}from"./api.Ckio_22N.js";import{R as D}from"./RoleMenuTreeStores.Dj-SlS5F.js";import{R as T}from"./RoleMenuBtnStores.Ds74f0Jk.js";import{R as B,a as F}from"./RoleMenuFieldStores.1tuZt4kb.js";import{X as P,E as b}from"./index.BCN4iGDw.js";import{a as x,r as p,q as E,aj as H,J as X,o as j}from"./vue.D1BjjNmv.js";const L=x({__name:"RoleMenuTree",setup(q){const c=w(),g=D(),y=T(),v=B(),k=F(),i=p(),o=p([]),m=p([]),M={children:"children",label:"name",value:"id"};let d=!1;const C=n=>{const r=[],e=[...n];for(;e.length;){const l=e.pop();if(l&&(l.id!==void 0&&l.id!==null&&r.push(l.id),Array.isArray(l.children)&&l.children.length))for(const u of l.children)e.push(u)}return r},_=async(n,r)=>{var l,u;if(d)return;await h({roleId:c.roleId,menuId:n.id,isCheck:r}).then(t=>{b({message:t.msg,type:"success"})});const e=(u=(l=i==null?void 0:i.value)==null?void 0:l.getNode)==null?void 0:u.call(l,n);if(e&&e.level===1&&Array.isArray(n.children)&&n.children.length){const t=C(n.children);if(t.length){d=!0;try{for(const a of t)a!=null&&i.value.setChecked(a,r,!1);await Promise.all(t.filter(a=>a!=null).map(a=>h({roleId:c.roleId,menuId:a,isCheck:r})))}finally{d=!1}}}if(r&&e){const t=[];let a=e.parent;for(;a&&a.data;)t.push(a.data),a=a.parent;const f=t.filter(s=>s&&s.id!==void 0&&s.id!==null);if(f.length){d=!0;try{for(const s of f)i.value.setChecked(s.id,!0,!1);await Promise.all(f.map(s=>h({roleId:c.roleId,menuId:s.id,isCheck:!0})))}finally{d=!1}}}},I=async n=>{if(n.is_catalog)y.setState([]),v.setState([]);else{g.setRoleMenuTree(n);const{data:r}=await A({roleId:c.roleId,menuId:n.id});y.setState(r.menu_btn),v.setState(r.menu_field)}k.$reset()},R=(n,r)=>n.filter(e=>e.id!==r).map(e=>{var l;return Array.isArray(e==null?void 0:e.children)&&((l=e==null?void 0:e.children)==null?void 0:l.length)>0?{...e,children:R(e==null?void 0:e.children,r)}:e});return E(async()=>{o.value=await S({roleId:c.roleId}),o.value=o.value.filter(n=>!n.name.includes("商户列表")&&!n.name.includes("商户账号")),o.value=R(o.value,9),m.value=P.toTreeArray(o.value).filter(n=>n.isCheck).map(n=>n.id)}),(n,r)=>{const e=H("el-tree");return j(),X(e,{ref_key:"treeRef",ref:i,data:o.value,props:M,"default-checked-keys":m.value,onCheckChange:_,onNodeClick:I,"node-key":"id","check-strictly":"","highlight-current":"","show-checkbox":"","default-expand-all":""},null,8,["data","default-checked-keys"])}}});export{L as default};