2 lines
10 KiB
JavaScript
2 lines
10 KiB
JavaScript
import{r as _,b as B,z as pe,c as s,I as me,o as f,d as ce,f as t,w as a,E as V,e as w,G as T,h as r,g as _e,J as fe,l as y,t as P,L as S,n as ge,c3 as ye,bY as be,cg as ve,ch as Ve,ci as he}from"./index-01a32b87.js";import{_ as Ce}from"./_plugin-vue_export-helper-c27b6911.js";const xe={class:"permissions-container"},ke={class:"card-header"},Ue={class:"search-area"},ze={class:"pagination-container"},we={__name:"Permissions",setup(Te){const D=_(!1),$=_([]),g=_(!1),U=_(""),E=_(!1),z=_([]),j=_([]),m=B({name:"",type:"",status:void 0}),p=B({page:1,size:10,total:0}),o=B({id:null,parent_id:null,name:"",code:"",type:"menu",path:"",icon:"",sort:0,status:1,description:""}),A={name:[{required:!0,message:"请输入权限名称",trigger:"blur"},{min:2,max:50,message:"权限名称长度在 2 到 50 个字符",trigger:"blur"}],code:[{required:!0,message:"请输入权限标识",trigger:"blur"},{pattern:/^[a-zA-Z][a-zA-Z0-9_:]*$/,message:"权限标识格式不正确",trigger:"blur"}],type:[{required:!0,message:"请选择权限类型",trigger:"change"}],sort:[{required:!0,message:"请输入排序值",trigger:"blur"}]},h=_(),b=async()=>{D.value=!0;try{const n={list:[{id:1,name:"用户管理",code:"user",type:"menu",path:"/users",icon:"User",sort:1,status:1,created_at:"2024-01-01 10:00:00",children:[{id:11,parent_id:1,name:"用户列表",code:"user:list",type:"button",path:"",sort:1,status:1,created_at:"2024-01-01 10:00:00"},{id:12,parent_id:1,name:"用户新增",code:"user:create",type:"button",path:"",sort:2,status:1,created_at:"2024-01-01 10:00:00"}]},{id:2,name:"商品管理",code:"product",type:"menu",path:"/products",icon:"Goods",sort:2,status:1,created_at:"2024-01-02 10:00:00",children:[{id:21,parent_id:2,name:"商品列表",code:"product:list",type:"button",path:"",sort:1,status:1,created_at:"2024-01-02 10:00:00"}]}],total:2};$.value=n.list,p.total=n.total,N(n.list)}catch{V.error("获取权限列表失败")}finally{D.value=!1}},N=n=>{const e=[],u={};n.forEach(d=>{u[d.id]={...d,children:[]}}),n.forEach(d=>{d.parent_id?u[d.parent_id]&&u[d.parent_id].children.push(u[d.id]):e.push(u[d.id])}),j.value=e},K=n=>({menu:"primary",button:"success",api:"warning"})[n]||"info",R=n=>({menu:"菜单",button:"按钮",api:"接口"})[n]||"未知",M=()=>{p.page=1,b()},F=()=>{Object.assign(m,{name:"",type:"",status:void 0}),M()},G=()=>{U.value="新增权限",Object.assign(o,{id:null,parent_id:null,name:"",code:"",type:"menu",path:"",icon:"",sort:0,status:1,description:""}),g.value=!0},H=n=>{U.value="新增子权限",Object.assign(o,{id:null,parent_id:n.id,name:"",code:"",type:"button",path:"",icon:"",sort:0,status:1,description:""}),g.value=!0},I=n=>{U.value="编辑权限",Object.assign(o,{...n}),g.value=!0},L=async n=>{try{await ge.confirm(`确定要删除权限"${n.name}"吗?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),V.success("删除成功"),b()}catch(e){e!=="cancel"&&V.error("删除失败")}},Z=async n=>{try{V.success("状态更新成功")}catch{n.status=n.status===1?0:1,V.error("状态更新失败")}},J=(n,e)=>{if(e)z.value.push(n.id);else{const u=z.value.indexOf(n.id);u>-1&&z.value.splice(u,1)}},Q=async()=>{if(h.value)try{await h.value.validate(),E.value=!0,await new Promise(n=>setTimeout(n,1e3)),g.value=!1,b()}catch(n){n!==!1&&V.error("操作失败")}finally{E.value=!1}},W=()=>{h.value&&h.value.resetFields()},X=n=>{p.size=n,p.page=1,b()},ee=n=>{p.page=n,b()},te=n=>ye(n).format("YYYY-MM-DD HH:mm:ss");return pe(()=>{b()}),(n,e)=>{const u=s("el-icon"),d=s("el-button"),v=s("el-input"),i=s("el-form-item"),C=s("el-option"),O=s("el-select"),Y=s("el-form"),c=s("el-table-column"),le=s("el-tag"),ae=s("el-switch"),ne=s("el-table"),oe=s("el-pagination"),se=s("el-card"),de=s("el-tree-select"),x=s("el-radio"),q=s("el-radio-group"),re=s("el-input-number"),ue=s("el-dialog"),ie=me("loading");return f(),ce("div",xe,[t(se,null,{header:a(()=>[w("div",ke,[e[17]||(e[17]=w("span",null,"权限管理",-1)),t(d,{type:"primary",onClick:G},{default:a(()=>[t(u,null,{default:a(()=>[t(T(be))]),_:1}),e[16]||(e[16]=r(" 新增权限 ",-1))]),_:1})])]),default:a(()=>[w("div",Ue,[t(Y,{model:m,inline:""},{default:a(()=>[t(i,{label:"权限名称"},{default:a(()=>[t(v,{modelValue:m.name,"onUpdate:modelValue":e[0]||(e[0]=l=>m.name=l),placeholder:"请输入权限名称",clearable:"",onKeyup:_e(M,["enter"])},null,8,["modelValue"])]),_:1}),t(i,{label:"权限类型"},{default:a(()=>[t(O,{modelValue:m.type,"onUpdate:modelValue":e[1]||(e[1]=l=>m.type=l),placeholder:"请选择权限类型",style:{width:"180px"}},{default:a(()=>[t(C,{label:"菜单",value:"menu"}),t(C,{label:"按钮",value:"button"}),t(C,{label:"接口",value:"api"})]),_:1},8,["modelValue"])]),_:1}),t(i,{label:"状态"},{default:a(()=>[t(O,{modelValue:m.status,"onUpdate:modelValue":e[2]||(e[2]=l=>m.status=l),placeholder:"请选择状态",style:{width:"180px"}},{default:a(()=>[t(C,{label:"启用",value:1}),t(C,{label:"禁用",value:0})]),_:1},8,["modelValue"])]),_:1}),t(i,null,{default:a(()=>[t(d,{type:"primary",onClick:M},{default:a(()=>[...e[18]||(e[18]=[r("搜索",-1)])]),_:1}),t(d,{onClick:F},{default:a(()=>[...e[19]||(e[19]=[r("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),fe((f(),y(ne,{data:$.value,stripe:"","row-key":"id","tree-props":{children:"children",hasChildren:"hasChildren"},"expand-row-keys":z.value,onExpandChange:J},{default:a(()=>[t(c,{prop:"name",label:"权限名称",width:"200"},{default:a(({row:l})=>[l.type==="menu"?(f(),y(u,{key:0,style:{"margin-right":"5px"}},{default:a(()=>[t(T(ve))]),_:1})):l.type==="button"?(f(),y(u,{key:1,style:{"margin-right":"5px"}},{default:a(()=>[t(T(Ve))]),_:1})):(f(),y(u,{key:2,style:{"margin-right":"5px"}},{default:a(()=>[t(T(he))]),_:1})),r(" "+P(l.name),1)]),_:1}),t(c,{prop:"code",label:"权限标识"}),t(c,{prop:"type",label:"权限类型",width:"100"},{default:a(({row:l})=>[t(le,{type:K(l.type)},{default:a(()=>[r(P(R(l.type)),1)]),_:2},1032,["type"])]),_:1}),t(c,{prop:"path",label:"路径/接口"}),t(c,{prop:"sort",label:"排序",width:"80"}),t(c,{prop:"status",label:"状态",width:"100"},{default:a(({row:l})=>[t(ae,{modelValue:l.status,"onUpdate:modelValue":k=>l.status=k,"active-value":1,"inactive-value":0,onChange:k=>Z(l)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),t(c,{prop:"created_at",label:"创建时间",width:"180"},{default:a(({row:l})=>[r(P(te(l.created_at)),1)]),_:1}),t(c,{label:"操作",width:"200",fixed:"right"},{default:a(({row:l})=>[t(d,{type:"primary",size:"small",onClick:k=>I(l)},{default:a(()=>[...e[20]||(e[20]=[r(" 编辑 ",-1)])]),_:1},8,["onClick"]),l.type==="menu"?(f(),y(d,{key:0,type:"success",size:"small",onClick:k=>H(l)},{default:a(()=>[...e[21]||(e[21]=[r(" 添加子权限 ",-1)])]),_:1},8,["onClick"])):S("",!0),t(d,{type:"danger",size:"small",onClick:k=>L(l)},{default:a(()=>[...e[22]||(e[22]=[r(" 删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data","expand-row-keys"])),[[ie,D.value]]),w("div",ze,[t(oe,{"current-page":p.page,"onUpdate:currentPage":e[3]||(e[3]=l=>p.page=l),"page-size":p.size,"onUpdate:pageSize":e[4]||(e[4]=l=>p.size=l),total:p.total,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next, jumper",onSizeChange:X,onCurrentChange:ee},null,8,["current-page","page-size","total"])])]),_:1}),t(ue,{modelValue:g.value,"onUpdate:modelValue":e[15]||(e[15]=l=>g.value=l),title:U.value,width:"600px",onClose:W},{footer:a(()=>[t(d,{onClick:e[14]||(e[14]=l=>g.value=!1)},{default:a(()=>[...e[28]||(e[28]=[r("取消",-1)])]),_:1}),t(d,{type:"primary",onClick:Q,loading:E.value},{default:a(()=>[...e[29]||(e[29]=[r(" 确定 ",-1)])]),_:1},8,["loading"])]),default:a(()=>[t(Y,{ref_key:"formRef",ref:h,model:o,rules:A,"label-width":"100px"},{default:a(()=>[o.parent_id?(f(),y(i,{key:0,label:"上级权限",prop:"parent_id"},{default:a(()=>[t(de,{modelValue:o.parent_id,"onUpdate:modelValue":e[5]||(e[5]=l=>o.parent_id=l),data:j.value,props:{value:"id",label:"name",children:"children"},placeholder:"请选择上级权限",clearable:"","check-strictly":""},null,8,["modelValue","data"])]),_:1})):S("",!0),t(i,{label:"权限名称",prop:"name"},{default:a(()=>[t(v,{modelValue:o.name,"onUpdate:modelValue":e[6]||(e[6]=l=>o.name=l),placeholder:"请输入权限名称"},null,8,["modelValue"])]),_:1}),t(i,{label:"权限标识",prop:"code"},{default:a(()=>[t(v,{modelValue:o.code,"onUpdate:modelValue":e[7]||(e[7]=l=>o.code=l),placeholder:"请输入权限标识,如:user:list"},null,8,["modelValue"])]),_:1}),t(i,{label:"权限类型",prop:"type"},{default:a(()=>[t(q,{modelValue:o.type,"onUpdate:modelValue":e[8]||(e[8]=l=>o.type=l)},{default:a(()=>[t(x,{label:"menu"},{default:a(()=>[...e[23]||(e[23]=[r("菜单",-1)])]),_:1}),t(x,{label:"button"},{default:a(()=>[...e[24]||(e[24]=[r("按钮",-1)])]),_:1}),t(x,{label:"api"},{default:a(()=>[...e[25]||(e[25]=[r("接口",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(i,{label:"路径/接口",prop:"path"},{default:a(()=>[t(v,{modelValue:o.path,"onUpdate:modelValue":e[9]||(e[9]=l=>o.path=l),placeholder:o.type==="api"?"请输入接口路径,如:/api/users":"请输入页面路径,如:/users"},null,8,["modelValue","placeholder"])]),_:1}),o.type==="menu"?(f(),y(i,{key:1,label:"图标",prop:"icon"},{default:a(()=>[t(v,{modelValue:o.icon,"onUpdate:modelValue":e[10]||(e[10]=l=>o.icon=l),placeholder:"请输入图标名称"},null,8,["modelValue"])]),_:1})):S("",!0),t(i,{label:"排序",prop:"sort"},{default:a(()=>[t(re,{modelValue:o.sort,"onUpdate:modelValue":e[11]||(e[11]=l=>o.sort=l),min:0,max:999},null,8,["modelValue"])]),_:1}),t(i,{label:"状态",prop:"status"},{default:a(()=>[t(q,{modelValue:o.status,"onUpdate:modelValue":e[12]||(e[12]=l=>o.status=l)},{default:a(()=>[t(x,{label:1},{default:a(()=>[...e[26]||(e[26]=[r("启用",-1)])]),_:1}),t(x,{label:0},{default:a(()=>[...e[27]||(e[27]=[r("禁用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(i,{label:"描述",prop:"description"},{default:a(()=>[t(v,{modelValue:o.description,"onUpdate:modelValue":e[13]||(e[13]=l=>o.description=l),type:"textarea",rows:3,placeholder:"请输入权限描述"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}},Me=Ce(we,[["__scopeId","data-v-80ebf8e8"]]);export{Me as default};
|