Files
yuezi-saas/frontend/dist/assets/menus-BZ5cS0TV.js
T

1 line
8.5 KiB
JavaScript

import{$ as e,H as t,L as n,P as r,U as i,V as a,Wt as o,_ as s,d as c,et as l,f as u,i as d,lt as f,p,st as m,u as h,v as g,z as _}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{o as v,s as y}from"./index-DK5nh4op.js";import"./request-BcX6wdRT.js";import{menuApi as b}from"./system-cE3W4r-W.js";var x={class:`p-6 space-y-4`},ee={class:`bg-white rounded-2xl border border-gray-100 shadow-sm`},S={class:`flex items-center justify-between px-5 py-4 border-b border-gray-50`},C={class:`flex items-center gap-3`},w={class:`px-2`},T={style:{display:`flex`,"align-items":`center`,gap:`6px`}},E={style:{display:`flex`,"align-items":`center`,gap:`8px`}},D={__name:`index`,setup(D){let O=f([]),k=f(!1),A=f(!1),j=f(`新增菜单`),M=f(!1),N=f(!1),P=f(null),F=m({id:null,parent_id:null,title:``,name:``,icon:``,path:``,component:``,type:1,sort:0,visible:1,status:1,redirect:``}),I={title:[{required:!0,message:`请输入菜单名称`,trigger:`blur`}],path:[{validator:(e,t,n)=>{F.type!==3&&!t?n(Error(`请输入路由路径`)):n()},trigger:`blur`}]},L=[{label:`目录`,value:1},{label:`菜单`,value:2},{label:`按钮`,value:3}],R=[`House`,`User`,`Setting`,`DataLine`,`Grid`,`Money`,`DocumentCopy`,`List`,`Calendar`,`Bell`,`Lock`,`Tools`,`Odometer`,`ChatDotRound`,`Collection`,`Management`];async function z(){k.value=!0;try{let e=await b.getList({per_page:500});O.value=B(e.data?.list||e.data?.data||[])}catch{}finally{k.value=!1}}function B(e,t=null){return e.filter(e=>(e.parent_id??null)===t).sort((e,t)=>(e.sort??0)-(t.sort??0)).map(t=>({...t,children:B(e,t.id)}))}function V(e){return{1:``,2:`success`,3:`info`}[e]||``}function H(e){return{1:`目录`,2:`菜单`,3:`按钮`}[e]||`-`}function U(e){N.value=!1,j.value=e?`在「${e.title}」下新增菜单`:`新增顶级菜单`,Object.assign(F,{id:null,parent_id:e?.id||null,title:``,name:``,icon:``,path:``,component:``,type:e?2:1,sort:0,visible:1,status:1,redirect:``}),A.value=!0}async function W(e){N.value=!0,j.value=`编辑菜单 - ${e.title}`,Object.assign(F,{id:e.id,parent_id:e.parent_id,title:e.title,name:e.name||``,icon:e.icon||``,path:e.path||``,component:e.component||``,type:e.type,sort:e.sort||0,visible:e.visible,status:e.status,redirect:e.redirect||``}),A.value=!0}async function G(){P.value&&await P.value.validate(async e=>{if(e){M.value=!0;try{N.value?(await b.update(F.id,F),y.success(`菜单更新成功`)):(await b.create(F),y.success(`菜单创建成功`)),A.value=!1,z()}catch{}finally{M.value=!1}}})}async function K(e){await v.confirm(`确定删除菜单「${e.title}」吗?若有子菜单将一并删除。`,`删除确认`,{confirmButtonText:`确定删除`,cancelButtonText:`取消`,type:`warning`,confirmButtonClass:`el-button--danger`}),await b.delete(e.id),y.success(`删除成功`),z()}return r(()=>{z()}),(r,f)=>{let m=a(`el-button`),v=a(`el-icon`),y=a(`el-table-column`),b=a(`el-tag`),D=a(`el-table`),B=a(`el-radio-button`),q=a(`el-radio-group`),J=a(`el-form-item`),Y=a(`el-col`),X=a(`el-input`),Z=a(`el-option`),Q=a(`el-select`),te=a(`el-input-number`),$=a(`el-radio`),ne=a(`el-row`),re=a(`el-form`),ie=a(`el-dialog`),ae=t(`loading`);return n(),p(`div`,x,[h(`div`,ee,[h(`div`,S,[h(`div`,C,[g(m,{icon:`Refresh`,onClick:z},{default:e(()=>[...f[13]||=[s(`刷新`,-1)]]),_:1})]),g(m,{type:`primary`,icon:`Plus`,onClick:f[0]||=e=>U(null)},{default:e(()=>[...f[14]||=[s(`新增顶级菜单`,-1)]]),_:1})]),h(`div`,w,[l((n(),c(D,{data:O.value,"row-key":`id`,"tree-props":{children:`children`,hasChildren:`has_children`},"default-expand-all":``,style:{width:`100%`}},{default:e(()=>[g(y,{prop:`title`,label:`菜单名称`,"min-width":`180`},{default:e(({row:t})=>[h(`span`,T,[t.icon?(n(),c(v,{key:0,size:`14`},{default:e(()=>[(n(),c(i(t.icon)))]),_:2},1024)):u(``,!0),s(` `+o(t.title),1)])]),_:1}),g(y,{label:`类型`,width:`80`,align:`center`},{default:e(({row:t})=>[g(b,{type:V(t.type),size:`small`},{default:e(()=>[s(o(H(t.type)),1)]),_:2},1032,[`type`])]),_:1}),g(y,{prop:`path`,label:`路由路径`,"min-width":`180`,"show-overflow-tooltip":``}),g(y,{prop:`component`,label:`组件路径`,"min-width":`200`,"show-overflow-tooltip":``}),g(y,{prop:`sort`,label:`排序`,width:`70`,align:`center`}),g(y,{label:`显示`,width:`80`,align:`center`},{default:e(({row:t})=>[g(b,{type:t.visible===1?`success`:`info`,size:`small`},{default:e(()=>[s(o(t.visible===1?`显示`:`隐藏`),1)]),_:2},1032,[`type`])]),_:1}),g(y,{label:`状态`,width:`80`,align:`center`},{default:e(({row:t})=>[g(b,{type:t.status===1?`success`:`danger`,size:`small`},{default:e(()=>[s(o(t.status===1?`正常`:`停用`),1)]),_:2},1032,[`type`])]),_:1}),g(y,{label:`操作`,width:`200`,fixed:`right`,align:`center`},{default:e(({row:t})=>[t.type===3?u(``,!0):(n(),c(m,{key:0,size:`small`,type:`success`,text:``,onClick:e=>U(t)},{default:e(()=>[...f[15]||=[s(` 新增子项 `,-1)]]),_:1},8,[`onClick`])),g(m,{size:`small`,type:`primary`,text:``,onClick:e=>W(t)},{default:e(()=>[...f[16]||=[s(`编辑`,-1)]]),_:1},8,[`onClick`]),g(m,{size:`small`,type:`danger`,text:``,onClick:e=>K(t)},{default:e(()=>[...f[17]||=[s(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[ae,k.value]])])]),g(ie,{modelValue:A.value,"onUpdate:modelValue":f[12]||=e=>A.value=e,title:j.value,width:`600px`,"destroy-on-close":``},{footer:e(()=>[g(m,{onClick:f[11]||=e=>A.value=!1},{default:e(()=>[...f[22]||=[s(`取消`,-1)]]),_:1}),g(m,{type:`primary`,loading:M.value,onClick:G},{default:e(()=>[s(o(N.value?`保存修改`:`确认创建`),1)]),_:1},8,[`loading`])]),default:e(()=>[g(re,{ref_key:`formRef`,ref:P,model:F,rules:I,"label-width":`100px`},{default:e(()=>[g(ne,{gutter:16},{default:e(()=>[g(Y,{span:12},{default:e(()=>[g(J,{label:`菜单类型`,prop:`type`},{default:e(()=>[g(q,{modelValue:F.type,"onUpdate:modelValue":f[1]||=e=>F.type=e},{default:e(()=>[(n(),p(d,null,_(L,t=>g(B,{key:t.value,value:t.value},{default:e(()=>[s(o(t.label),1)]),_:2},1032,[`value`])),64))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),g(Y,{span:12},{default:e(()=>[g(J,{label:`菜单名称`,prop:`title`},{default:e(()=>[g(X,{modelValue:F.title,"onUpdate:modelValue":f[2]||=e=>F.title=e,placeholder:`菜单显示名称`},null,8,[`modelValue`])]),_:1})]),_:1}),g(Y,{span:12},{default:e(()=>[g(J,{label:`图标`,prop:`icon`},{default:e(()=>[g(Q,{modelValue:F.icon,"onUpdate:modelValue":f[3]||=e=>F.icon=e,placeholder:`选择图标`,clearable:``,style:{width:`100%`}},{default:e(()=>[(n(),p(d,null,_(R,t=>g(Z,{key:t,label:t,value:t},{default:e(()=>[h(`span`,E,[g(v,null,{default:e(()=>[(n(),c(i(t)))]),_:2},1024),s(` `+o(t),1)])]),_:2},1032,[`label`,`value`])),64))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),F.type===3?u(``,!0):(n(),c(Y,{key:0,span:12},{default:e(()=>[g(J,{label:`路由路径`,prop:`path`},{default:e(()=>[g(X,{modelValue:F.path,"onUpdate:modelValue":f[4]||=e=>F.path=e,placeholder:`如: /system/users`},null,8,[`modelValue`])]),_:1})]),_:1})),F.type===2?(n(),c(Y,{key:1,span:12},{default:e(()=>[g(J,{label:`组件路径`,prop:`component`},{default:e(()=>[g(X,{modelValue:F.component,"onUpdate:modelValue":f[5]||=e=>F.component=e,placeholder:`如: system/users/index`},null,8,[`modelValue`])]),_:1})]),_:1})):u(``,!0),F.type===1?(n(),c(Y,{key:2,span:12},{default:e(()=>[g(J,{label:`重定向`,prop:`redirect`},{default:e(()=>[g(X,{modelValue:F.redirect,"onUpdate:modelValue":f[6]||=e=>F.redirect=e,placeholder:`目录默认跳转路径(选填)`},null,8,[`modelValue`])]),_:1})]),_:1})):u(``,!0),g(Y,{span:12},{default:e(()=>[g(J,{label:`路由名称`,prop:`name`},{default:e(()=>[g(X,{modelValue:F.name,"onUpdate:modelValue":f[7]||=e=>F.name=e,placeholder:`唯一路由名(选填)`},null,8,[`modelValue`])]),_:1})]),_:1}),g(Y,{span:12},{default:e(()=>[g(J,{label:`排序`,prop:`sort`},{default:e(()=>[g(te,{modelValue:F.sort,"onUpdate:modelValue":f[8]||=e=>F.sort=e,min:0,max:9999,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),g(Y,{span:12},{default:e(()=>[g(J,{label:`是否显示`,prop:`visible`},{default:e(()=>[g(q,{modelValue:F.visible,"onUpdate:modelValue":f[9]||=e=>F.visible=e},{default:e(()=>[g($,{value:1},{default:e(()=>[...f[18]||=[s(`显示`,-1)]]),_:1}),g($,{value:0},{default:e(()=>[...f[19]||=[s(`隐藏`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1})]),_:1}),g(Y,{span:12},{default:e(()=>[g(J,{label:`状态`,prop:`status`},{default:e(()=>[g(q,{modelValue:F.status,"onUpdate:modelValue":f[10]||=e=>F.status=e},{default:e(()=>[g($,{value:1},{default:e(()=>[...f[20]||=[s(`正常`,-1)]]),_:1}),g($,{value:0},{default:e(()=>[...f[21]||=[s(`停用`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`,`title`])])}}};export{D as default};