You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
4.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import{n as e,st as t}from"./axios-CiYFffbI.js";import{I as n,N as r,V as i,Y as a,_ as o,d as s,i as c,it as l,kt as u,l as d,nt as f,p,u as m,v as h,y as g,z as _}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as v,o as y}from"./index-DscUIWPJ.js";var b={class:`menu-tree-row`},x={class:`left`},S={class:`name`},C={class:`right`},w=y(g({__name:`Menus`,setup(g){let y=l(!1),w=l(!1),T=l(null),E=l([]),D=l(!1),O=l(null),k=f({name:``,path:``,icon:``,parent_id:0,sort:0,is_visible:!0}),A=d(()=>E.value.filter(e=>e.parent_id===0)),j=d(()=>O.value!==null),M=d(()=>{let e=new Map;E.value.forEach(t=>e.set(t.id,{key:t.id,title:t.name,row:t,children:[]}));let t=[];return E.value.forEach(n=>{let r=e.get(n.id);n.parent_id>0&&e.has(n.parent_id)?e.get(n.parent_id).children.push(r):t.push(r)}),t});function N(){O.value=null,k.name=``,k.path=``,k.icon=``,k.parent_id=0,k.sort=0,k.is_visible=!0}async function P(){y.value=!0;try{let{data:e}=await v.get(`/admin-menus/all`);E.value=e}catch(t){e.error(t?.response?.data?.message??`加载权限菜单失败`)}finally{y.value=!1}}function F(){N(),D.value=!0}function I(e){O.value=e.id,k.name=e.name||``,k.path=e.path||``,k.icon=e.icon||``,k.parent_id=e.parent_id||0,k.sort=e.sort||0,k.is_visible=!!e.is_visible,D.value=!0}async function L(){if(!k.name.trim())return e.warning(`请填写菜单名称`),!1;w.value=!0;try{let t={name:k.name.trim(),path:k.path.trim()||null,icon:k.icon.trim()||null,parent_id:Number(k.parent_id)||0,sort:Number(k.sort)||0,is_visible:!!k.is_visible};return j.value&&O.value?(await v.put(`/admin-menus/${O.value}`,t),e.success(`菜单更新成功`)):(await v.post(`/admin-menus`,t),e.success(`菜单新增成功`)),D.value=!1,await P(),!0}catch(t){return e.error(t?.response?.data?.message??`保存失败`),!1}finally{w.value=!1}}async function R(t){T.value=t.id;try{await v.delete(`/admin-menus/${t.id}`),e.success(`删除成功`),await P()}catch(t){e.error(t?.response?.data?.message??`删除失败`)}finally{T.value=null}}return r(P),(e,r)=>{let l=i(`a-button`),d=i(`a-space`),f=i(`a-tag`),g=i(`a-popconfirm`),v=i(`a-tree`),E=i(`a-spin`),O=i(`a-card`),N=i(`a-input`),z=i(`a-form-item`),B=i(`a-option`),V=i(`a-select`),H=i(`a-input-number`),U=i(`a-switch`),W=i(`a-form`),G=i(`a-modal`);return n(),p(c,null,[h(O,{title:`用户与权限 / 权限菜单`},{extra:a(()=>[h(d,null,{default:a(()=>[h(l,{onClick:P},{default:a(()=>[...r[7]||=[o(`刷新`,-1)]]),_:1}),h(l,{type:`primary`,onClick:F},{default:a(()=>[...r[8]||=[o(`新增菜单`,-1)]]),_:1})]),_:1})]),default:a(()=>[h(E,{loading:y.value},{default:a(()=>[h(v,{data:M.value,"default-expand-all":!0,"block-node":``},{title:a(e=>[m(`div`,b,[m(`div`,x,[m(`span`,S,u(e.row.name),1),h(f,{size:`small`},{default:a(()=>[o(u(e.row.path||`目录`),1)]),_:2},1024),h(f,{size:`small`,color:`arcoblue`},{default:a(()=>[o(u(e.row.icon||`-`),1)]),_:2},1024),h(f,{size:`small`},{default:a(()=>[o(u(`排序 ${e.row.sort}`),1)]),_:2},1024),h(f,{size:`small`,color:e.row.is_visible?`green`:`gray`},{default:a(()=>[o(u(e.row.is_visible?`可见`:`隐藏`),1)]),_:2},1032,[`color`])]),m(`div`,C,[h(l,{type:`text`,size:`small`,onClick:t(t=>I(e.row),[`stop`])},{default:a(()=>[...r[9]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),h(g,{content:`确定删除该菜单?`,onOk:t=>R(e.row)},{default:a(()=>[h(l,{type:`text`,size:`small`,status:`danger`,loading:T.value===e.row.id},{default:a(()=>[...r[10]||=[o(`删除`,-1)]]),_:1},8,[`loading`])]),_:2},1032,[`onOk`])])])]),_:1},8,[`data`])]),_:1},8,[`loading`])]),_:1}),h(G,{visible:D.value,"onUpdate:visible":r[6]||=e=>D.value=e,title:j.value?`编辑菜单`:`新增菜单`,width:`70%`,"confirm-loading":w.value,"on-before-ok":L},{default:a(()=>[h(W,{model:k,layout:`vertical`},{default:a(()=>[h(z,{label:`菜单名称`,required:``},{default:a(()=>[h(N,{modelValue:k.name,"onUpdate:modelValue":r[0]||=e=>k.name=e},null,8,[`modelValue`])]),_:1}),h(z,{label:`路由路径`},{default:a(()=>[h(N,{modelValue:k.path,"onUpdate:modelValue":r[1]||=e=>k.path=e,placeholder:`如 /system/menus目录菜单可留空`},null,8,[`modelValue`])]),_:1}),h(z,{label:`图标`},{default:a(()=>[h(N,{modelValue:k.icon,"onUpdate:modelValue":r[2]||=e=>k.icon=e,placeholder:`如 IconMenu`},null,8,[`modelValue`])]),_:1}),h(z,{label:`父级菜单`},{default:a(()=>[h(V,{modelValue:k.parent_id,"onUpdate:modelValue":r[3]||=e=>k.parent_id=e},{default:a(()=>[h(B,{value:0},{default:a(()=>[...r[11]||=[o(`顶级菜单`,-1)]]),_:1}),(n(!0),p(c,null,_(A.value,e=>(n(),s(B,{key:e.id,value:e.id},{default:a(()=>[o(u(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),h(z,{label:`排序`},{default:a(()=>[h(H,{modelValue:k.sort,"onUpdate:modelValue":r[4]||=e=>k.sort=e,min:0},null,8,[`modelValue`])]),_:1}),h(z,{label:`是否可见`},{default:a(()=>[h(U,{modelValue:k.is_visible,"onUpdate:modelValue":r[5]||=e=>k.is_visible=e},null,8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`visible`,`title`,`confirm-loading`])],64)}}}),[[`__scopeId`,`data-v-98deafc5`]]);export{w as default};