menu-DW6gPtmz.js 9.6 KB

1
  1. import{_ as ge}from"./index-BcFWfTET.js";import{I as R,a7 as he,aa as ke,S as ye,G as Ie,ac as we,t as Ce,R as be,D as xe,ad as Ae,M as Ue,B as Me,ae as Te,$ as Se,n as Le,a0 as Oe,a8 as Be,a9 as De,V as ze,W as Re,v as Ve,w as qe}from"./antd-B7v2hwFR.js";import{u as Ne,y as $e,z as je,a as H,B as Fe,C as Ee}from"./index-CL6hUm94.js";import{s as V,r as K,f as C,c as W,w as Pe,o as Ge,a9 as U,a5 as v,aa as a,k as t,u as o,a2 as M,ae as T,a3 as S,G as c,ai as J,ad as Q,H as X,F as He,aj as Ke}from"./vue-DApy1uhY.js";import"./context-BAOSbWj-.js";const We={key:0,flex:"","gap-2":""},Je=["onClick"],Qe=["onClick"],Xe=["onClick"],Ye={key:1,"gap-2":""},Ze={style:{"margin-left":"5px"}},st={__name:"menu",setup(et){const Y=Object.keys(R).filter(l=>!(l==="default"||l==="getTwoToneColor"||l==="setTwoToneColor"||l==="createFromIconfontCN")),g=Ne(),L=V([{title:"#",dataIndex:"id",width:150},{title:"菜单标题",dataIndex:"title",width:150},{title:"组件路径",dataIndex:"component",width:200},{title:"路由标识",dataIndex:"name"},{title:"路由",dataIndex:"path",width:100},{title:"重定向地址",dataIndex:"redirect",width:200},{title:"url",dataIndex:"url",width:200},{title:"权重",dataIndex:"weight",width:80},{title:"更新时间",dataIndex:"updatedAt",width:200},{title:"操作",dataIndex:"action",width:200}]),Z={title:[{required:!0,message:"please enter title"}],component:[{required:!0,message:"please enter component"}],parentId:[{required:!0,message:"please enter parentId"}],name:[{required:!0,message:"Please enter name"}],url:[{required:!0,message:"please enter url"}],path:[{required:!0,message:"Please select an path"}]},b=V(!1),O=V([]),s=K({id:0,parentId:0,weight:0,parentTitle:"根菜单",path:"",name:"",title:"",component:"",locale:"",icon:"",redirect:"",url:"",keepAlive:!1,hideInMenu:!1}),q=()=>{Object.assign(s,{id:0,parentId:0,weight:0,parentTitle:"根菜单",path:"",name:"",title:"",component:"",locale:"",icon:"",redirect:"",url:"",keepAlive:!1,hideInMenu:!1})},y=C(["large"]),ee=C([{key:"large",label:"默认",title:"默认"},{key:"middle",label:"中等",title:"中等"},{key:"small",label:"紧凑",title:"紧凑"}]),I=C(!1),te=W(()=>L.value.map(l=>l.dataIndex==="action"?{label:l.title,value:l.dataIndex,disabled:!0}:{label:l.title,value:l.dataIndex})),ae=l=>{const e=new Map;l.forEach(d=>e.set(d.id,{...d}));const i=[];return l.forEach(d=>{const h=e.get(d.id);if(h.key=h.id,d.parentId===0||!e.has(d.parentId))i.push(h);else{const m=e.get(d.parentId);m&&(m.children||(m.children=[]),m.children.push(h))}}),i},B=C(!1),f=W(()=>L.value.map(l=>l.dataIndex)),u=K({indeterminate:!1,checkAll:!0,checkList:f.value});async function x(){if(!b.value){b.value=!0;try{const{data:l}=await $e({});O.value=ae(l.list)??[]}catch(l){console.log(l)}finally{b.value=!1}}}async function N(){await x()}async function ne(){const l=g.loading("提交中......");try{let e={};s.weight=Number(s.weight),s.id>0?e=await Fe({...s}):e=await Ee({...s}),e.code===0&&(await x(),await H().generateDynamicRoutes(),I.value=!1,s.id>0?g.success("更新成功"):g.success("创建成功"))}catch(e){console.log(e)}finally{l()}}async function $(l){q(),l.id&&(s.parentId=l.id,s.parentTitle=l.title),I.value=!0}async function le(l){q(),Object.assign(s,l);let e=O.value.find(i=>i.id===l.parentId);s.parentTitle=e?e.title:"根菜单",I.value=!0}async function oe(l){if(l.children&&l.children.length>0){g.error("存在子节点,不允许删除");return}const e=g.loading("删除中......");try{(await je({id:l.id})).code===0&&(await x(),await H().generateDynamicRoutes(),g.success("删除成功"))}catch(i){console.log(i)}finally{e()}}function se(){I.value=!1,N()}function ie(l){y.value[0]=l.key}function A(l){return L.value.filter(e=>!!l.includes(e.dataIndex))}const w=C(A(f.value));function de(l){Object.assign(u,{checkList:l.target.checked?f.value:[],indeterminate:!0}),w.value=l.target.checked?A(f.value):w.value.filter(e=>e.dataIndex==="action")}Pe(()=>u.checkList,l=>{u.indeterminate=!!l.length&&l.length<f.value.length,u.checkAll=l.length===f.value.length});function ue(){u.checkList=f.value,w.value=A(f.value)}function re(l){const e=A(l);w.value=e}return Ge(()=>{x()}),(l,e)=>{const i=Ie,d=Ce,h=Ue,m=xe,pe=Se,ce=Te,j=he,F=ye,fe=ke,_=Re,r=ze,p=De,E=Be,k=qe,D=Ve,_e=Oe,ve=Le,me=ge;return v(),U(me,null,{default:a(()=>[t(j,{title:"菜单列表"},{extra:a(()=>[t(F,{size:"middle"},{default:a(()=>[t(i,{type:"primary",onClick:$},{icon:a(()=>[t(o(we))]),default:a(()=>[e[15]||(e[15]=c(" 添加根菜单 "))]),_:1}),t(d,{title:"刷新"},{default:a(()=>[t(o(be),{onClick:N})]),_:1}),t(d,{title:"密度"},{default:a(()=>[t(m,{trigger:"click"},{overlay:a(()=>[t(h,{"selected-keys":o(y),"onUpdate:selectedKeys":e[0]||(e[0]=n=>X(y)?y.value=n:null),items:o(ee),onClick:ie},null,8,["selected-keys","items"])]),default:a(()=>[t(o(Ae))]),_:1})]),_:1}),t(d,{title:"列设置"},{default:a(()=>[t(m,{open:o(B),"onUpdate:open":e[3]||(e[3]=n=>X(B)?B.value=n:null),trigger:"click"},{overlay:a(()=>[t(j,null,{title:a(()=>[t(pe,{checked:o(u).checkAll,"onUpdate:checked":e[1]||(e[1]=n=>o(u).checkAll=n),indeterminate:o(u).indeterminate,onChange:de},{default:a(()=>e[16]||(e[16]=[c(" 列选择 ")])),_:1},8,["checked","indeterminate"])]),extra:a(()=>[t(i,{type:"link",onClick:ue},{default:a(()=>e[17]||(e[17]=[c(" 重置 ")])),_:1})]),default:a(()=>[t(ce,{value:o(u).checkList,"onUpdate:value":e[2]||(e[2]=n=>o(u).checkList=n),options:o(te),style:{display:"flex","flex-direction":"column"},onChange:re},null,8,["value","options"])]),_:1})]),default:a(()=>[t(o(Me))]),_:1},8,["open"])]),_:1})]),_:1})]),default:a(()=>[t(fe,{loading:o(b),columns:o(w),pagination:!1,"data-source":o(O),size:o(y)[0],"expand-column-width":100},{bodyCell:a(n=>{var z,P;return[((z=n==null?void 0:n.column)==null?void 0:z.dataIndex)==="action"?(v(),M("div",We,[n!=null&&n.record.parentId?T("",!0):(v(),M("a",{key:0,onClick:G=>$(n==null?void 0:n.record)}," 添加子菜单 ",8,Je)),S("a",{onClick:G=>le(n==null?void 0:n.record)}," 编辑 ",8,Qe),S("a",{"c-error":"",onClick:G=>oe(n==null?void 0:n.record)}," 删除 ",8,Xe)])):T("",!0),((P=n==null?void 0:n.column)==null?void 0:P.dataIndex)==="title"?(v(),M("div",Ye,[n.record.icon?(v(),U(J(R[n.record.icon]),{key:0})):T("",!0),c(" "+Q(n.record.title),1)])):T("",!0)]}),_:1},8,["loading","columns","data-source","size"])]),_:1}),t(ve,{title:o(s).id>0?"编辑":"添加"+(o(s).parentId>0?"子菜单":"菜单"),width:720,open:o(I),"body-style":{paddingBottom:"80px"},"footer-style":{textAlign:"right"},onClose:se},{extra:a(()=>[t(F,null,{default:a(()=>[t(i,{onClick:l.onClose},{default:a(()=>e[23]||(e[23]=[c("取消")])),_:1},8,["onClick"]),t(i,{type:"primary",onClick:ne},{default:a(()=>e[24]||(e[24]=[c("提交")])),_:1})]),_:1})]),default:a(()=>[t(_e,{model:o(s),rules:Z,layout:"vertical"},{default:a(()=>[t(E,{gutter:16},{default:a(()=>[t(p,{span:12},{default:a(()=>[t(r,{label:"组件路径",name:"component"},{default:a(()=>[t(_,{value:o(s).component,"onUpdate:value":e[4]||(e[4]=n=>o(s).component=n),placeholder:"例:/dashboard/analysis"},null,8,["value"])]),_:1})]),_:1}),t(p,{span:12},{default:a(()=>[t(r,{label:"路由地址",name:"path"},{default:a(()=>[t(_,{value:o(s).path,"onUpdate:value":e[5]||(e[5]=n=>o(s).path=n),placeholder:"例:/dashboard/analysis"},null,8,["value"])]),_:1})]),_:1})]),_:1}),t(E,{gutter:16},{default:a(()=>[t(p,{span:12},{default:a(()=>[t(r,{label:"菜单标题",name:"title"},{default:a(()=>[t(_,{value:o(s).title,"onUpdate:value":e[6]||(e[6]=n=>o(s).title=n),placeholder:"例:分析页"},null,8,["value"])]),_:1})]),_:1}),t(p,{span:12},{default:a(()=>[t(r,{label:"路由标识",name:"name"},{default:a(()=>[t(_,{value:o(s).name,"onUpdate:value":e[7]||(e[7]=n=>o(s).name=n),placeholder:"例:DashboardAnalysis"},null,8,["value"])]),_:1})]),_:1}),t(p,{span:12},{default:a(()=>[t(r,{label:"父级菜单",name:"parentId"},{default:a(()=>[t(_,{disabled:"",value:o(s).parentTitle,"onUpdate:value":e[8]||(e[8]=n=>o(s).parentTitle=n)},null,8,["value"]),t(_,{style:{display:"none"},value:o(s).parentId,"onUpdate:value":e[9]||(e[9]=n=>o(s).parentId=n)},null,8,["value"])]),_:1})]),_:1}),t(p,{span:12},{default:a(()=>[t(r,{label:"图标",name:"icon"},{default:a(()=>[t(D,{value:o(s).icon,"onUpdate:value":e[10]||(e[10]=n=>o(s).icon=n)},{default:a(()=>[t(k,{value:""},{default:a(()=>e[18]||(e[18]=[S("span",{style:{"margin-left":"5px"}},"无图标",-1)])),_:1}),(v(!0),M(He,null,Ke(o(Y),(n,z)=>(v(),U(k,{value:n},{default:a(()=>[(v(),U(J(R[n]))),S("span",Ze,Q(n),1)]),_:2},1032,["value"]))),256))]),_:1},8,["value"])]),_:1})]),_:1}),t(p,{span:12},{default:a(()=>[t(r,{label:"是否保活",name:"keepAlive"},{default:a(()=>[t(D,{value:o(s).keepAlive,"onUpdate:value":e[11]||(e[11]=n=>o(s).keepAlive=n),placeholder:""},{default:a(()=>[t(k,{value:!0},{default:a(()=>e[19]||(e[19]=[c("是")])),_:1}),t(k,{value:!1},{default:a(()=>e[20]||(e[20]=[c("否")])),_:1})]),_:1},8,["value"])]),_:1})]),_:1}),t(p,{span:12},{default:a(()=>[t(r,{label:"是否隐藏",name:"hideInMenu"},{default:a(()=>[t(D,{value:o(s).hideInMenu,"onUpdate:value":e[12]||(e[12]=n=>o(s).hideInMenu=n),placeholder:""},{default:a(()=>[t(k,{value:!0},{default:a(()=>e[21]||(e[21]=[c("是")])),_:1}),t(k,{value:!1},{default:a(()=>e[22]||(e[22]=[c("否")])),_:1})]),_:1},8,["value"])]),_:1})]),_:1}),t(p,{span:12},{default:a(()=>[t(r,{label:"排序权重",name:"weight"},{default:a(()=>[t(_,{type:"number",value:o(s).weight,"onUpdate:value":e[13]||(e[13]=n=>o(s).weight=n),placeholder:"权重越大越靠前"},null,8,["value"])]),_:1})]),_:1}),t(p,{span:12},{default:a(()=>[t(r,{label:"多语言标识",name:"locale"},{default:a(()=>[t(_,{value:o(s).locale,"onUpdate:value":e[14]||(e[14]=n=>o(s).locale=n),placeholder:"置空则使用菜单标题"},null,8,["value"])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title","open"])]),_:1})}}};export{st as default};