index.59175bcb.js 4.2 KB

1
  1. import{g as W}from"./index.es.d2375c1e.js";import{w as j,P as A}from"./elementPlus.8e650391.js";import{_ as T}from"./index.vue_vue_type_script_setup_true_name_svgIcon_lang.e691ccda.js";import{l as G,m as H,a as K}from"./api.324ccf7b.js";import{w}from"./index.59c4c6ab.js";import{d as X,r as _,w as Y,ai as i,aq as Z,o as c,c as C,U as a,u as D,D as ee,a as y,O as n,S as M,J as te,T as b,P as v,M as k,F as ae,ah as ne,ae as oe}from"./vue.86c1cb21.js";import{_ as le}from"./_plugin-vue_export-helper.c27b6911.js";const se={class:"menu-tree-com"},ie={class:"mtc-head"},re={key:0,class:"text-center font-black font-normal"},ce={key:1,class:"text-center font-black text-red-700 font-normal"},de={class:"mtc-tags"},ue=X({__name:"index",props:{treeData:{default:()=>[]}},emits:["treeClick","deleteDept","updateDept"],setup(fe,{expose:V,emit:B}){const E=W(ne),S={children:"children",label:"name",icon:"icon",isLeaf:(t,e)=>!e.data.is_catalog},g=_(),h=B;let u=_(""),f=_(!1),l=_({}),z=_(null);Y(u,t=>{g.value.filter(t)});const U=(t,e)=>t?oe(e).name.indexOf(t)!==-1:!0,P=(t,e)=>{t.level!==0&&G({parent:t.data.id}).then(r=>{e(r.data)})},$=(t,e)=>{l.value=t,z.value=e,h("treeClick",t)},L=t=>{if(t==="update"){if(!l.value.id){w("请选择菜单!");return}h("updateDept",t,l.value)}else h("updateDept",t)},F=()=>{if(!l.value.id){w("请选择菜单!");return}h("deleteDept",l.value.id,()=>{l.value={}})},N=async t=>{var s;if(!l.value.id){w("请选择菜单!");return}if(f.value)return;const e=((s=z.value)==null?void 0:s.parent.childNodes)||[],r=e.findIndex(m=>m.data.id===l.value.id),x=e.find(m=>m.data.id===l.value.id);if(t==="up"){if(r===0)return;e.splice(r-1,0,x),e.splice(r+1,1),f.value=!0,await H({menu_id:l.value.id}),f.value=!1}t==="down"&&(e.splice(r+2,0,x),e.splice(r,1),f.value=!0,await K({menu_id:l.value.id}),f.value=!1)};return V({treeRef:g}),(t,e)=>{const r=i("el-input"),x=i("Menu"),s=i("el-icon"),m=i("QuestionFilled"),d=i("el-tooltip"),R=i("Plus"),I=i("Edit"),O=i("Top"),Q=i("Bottom"),q=i("Delete"),p=Z("auth");return c(),C(ae,null,[a(r,{modelValue:D(u),"onUpdate:modelValue":e[0]||(e[0]=o=>ee(u)?u.value=o:u=o),"prefix-icon":D(j),placeholder:"请输入菜单名称"},null,8,["modelValue","prefix-icon"]),y("div",se,[y("div",ie,[a(s,{size:"16",color:"#606266",class:"mtc-head-icon"},{default:n(()=>[a(x)]),_:1}),e[6]||(e[6]=M(" 菜单列表 ")),a(d,{effect:"dark",placement:"right",content:"1.红色菜单代表状态禁用; 2.添加菜单,如果是目录,组件地址为空即可; 3.添加根节点菜单,父级ID为空即可; 4.支持拖拽菜单;"},{default:n(()=>[a(s,{size:"16",color:"var(--el-color-primary)",class:"mtc-tooltip"},{default:n(()=>[a(m)]),_:1})]),_:1})]),a(D(A),{ref_key:"treeRef",ref:g,data:t.treeData,props:S,"filter-node-method":U,load:P,lazy:"",indent:45,onNodeClick:$,"highlight-current":""},{default:n(({node:o,data:J})=>[a(D(E),{node:o,showLabelLine:!1,indent:32},{default:n(()=>[J.status?(c(),C("span",re,[a(T,{name:o.data.icon,color:"var(--el-color-primary)",style:te([o.data.icon.startsWith("el")?{top:"2px"}:{}])},null,8,["name","style"]),M("  "+b(o.label),1)])):(c(),C("span",ce,[a(T,{name:o.data.icon},null,8,["name"]),M(" "+b(o.label),1)]))]),_:2},1032,["node"])]),_:1},8,["data"]),y("div",de,[a(d,{effect:"dark",content:"新增"},{default:n(()=>[v((c(),k(s,{size:"16",onClick:e[1]||(e[1]=o=>L("create")),class:"mtc-tags-icon"},{default:n(()=>[a(R)]),_:1})),[[p,"menu:Create"]])]),_:1}),a(d,{effect:"dark",content:"编辑"},{default:n(()=>[v((c(),k(s,{size:"16",onClick:e[2]||(e[2]=o=>L("update")),class:"mtc-tags-icon"},{default:n(()=>[a(I)]),_:1})),[[p,"menu:Update"]])]),_:1}),a(d,{effect:"dark",content:"上移"},{default:n(()=>[v((c(),k(s,{size:"16",onClick:e[3]||(e[3]=o=>N("up")),class:"mtc-tags-icon"},{default:n(()=>[a(O)]),_:1})),[[p,"menu:MoveUp"]])]),_:1}),a(d,{effect:"dark",content:"下移"},{default:n(()=>[v((c(),k(s,{size:"16",onClick:e[4]||(e[4]=o=>N("down")),class:"mtc-tags-icon"},{default:n(()=>[a(Q)]),_:1})),[[p,"menu:MoveDown"]])]),_:1}),a(d,{effect:"dark",content:"删除"},{default:n(()=>[v((c(),k(s,{size:"16",onClick:e[5]||(e[5]=o=>F()),class:"mtc-tags-icon"},{default:n(()=>[a(q)]),_:1})),[[p,"menu:Delete"]])]),_:1})])])],64)}}});const De=le(ue,[["__scopeId","data-v-92629fa2"]]);export{De as default};