vue+elementui管理项目界面,

  vue+elementui管理项目界面,

  这篇文章主要介绍了vue3使用元素加搭建后台管理系统之菜单管理,使用元素选择树组件快速开发树形菜单结构,el树组件中过滤节点法事件便可以实现树形菜单筛选过滤功能,需要的朋友可以参考下

  菜单管理是一套系统中最常见最核心的系统管理模块之一,我把菜单管理分成了2个部分,左边可以管理维护菜单,在菜单的最右侧可以维护每个菜单按钮权限配置

  使用元素加埃尔树组件快速开发树形菜单结构,el树组件中过滤节点法事件便可以实现树形菜单筛选过滤功能

  模板

  div class=公共树

  埃尔树

  :ref=treeRef

  :data=treeData

  :check-strictly=checkStrictly

  显示-复选框

  :accordion=false

  node-key=id

  默认-展开-全部

  :highlight-current=true

  :expand-on-click-node=false

  @node-click=nodeClick

  :filter-node-method=filterNode

  empty-text=暂无数据

  template #default={ node,data }

   span class=自定义树节点

  span style= margin-right:15px;{{ data.name }}/span

  狭槽

  :data=data

  :node=node

  /

  /span

  /模板

  /el-tree

  /div

  /模板

  脚本

  从“vue”导入{参考,反应}

  从" @babel/types "导入{ return语句};

  导出默认值{

  名称:普通树,

  道具:{

  treeRef: {

  类型:字符串,

  默认值:" treeRef "

  },

  treeData: {

  类型:数组,

  必填:真,

  默认(){

  return []

  }

  },

  严格检查:{

  类型:布尔型,

  默认(){

  返回真实的

  }

  }

  },

  设置(道具,{ emit }) {

  常量节点单击=(数据,节点,树)={

  发出(节点单击,数据,节点,树)

  }

  const filterNode=(值,数据)={

  如果(!值)返回真

  返回数据.标签.包括(值)

  }

  返回{节点单击,筛选节点}

  }

  }

  /脚本

  使用对话框、图标、表单组件实现菜单新增编辑

  埃尔对话组件实现弹窗,选择图标功能,父组件通过v型车绑定变量,子组件通过发出(更新语法糖实现父子组件属性快速传递

  子组件代码:

  模板

  El-dialog width= 800 px v-model= visible title=图标:before-close=handleClose

  ul class=iconUl

  Li v-for=图标列表中的图标:key= icon

  span:class= { active :choosed icon===icon }

  @click=chooseIcon(icon)

  @dblclick=确认(图标)

  El-icon style= width:48px;高度:48px 组件 icon :is= icon //El-icon

  /span

  p{{ icon }}/p

  /李

  /ul

  模板#页脚

   span class=对话框页脚

  El-button type= primary @ click= confirm(所选图标)确认/el-button

  el-button @click=this .$emit(update:visible ,false)取消/el-button

  /span

  /模板

  /el-dialog

  /模板

  脚本

  从“vue”导入{参考,反应}

  从" @element-plus/icons-vue "导入*作为图标模块

  导出默认值{

  名称:"图标",

  道具:{

  可见:{

  类型:布尔型,

  默认值:错误

  }

  },

  设置(道具,{ emit }) {

  const iconList=ref([])

  const choosedIcon=ref(null)

  for(IconsModule中的定义变量键){

  图标列表。价值。按下(图标模块[键]).姓名)

  }

  const chooseIcon=(icon)={

  choosedIcon.value=icon

  }

  const confirm=(icon)={

  发出(更新:图标,图标)

  发出(更新:可见,假)

  }

  const handleClose=(done)={

  发出(更新:可见,假)

  }

  返回{图标列表,选择图标,选择图标,确认,处理关闭}

  }

  }

  父组件代码:

  icons v-model:visible= dialogIconVisible v-model:icon= menu。图标/

  使用元素加埃尔表组件实现菜单按钮权限配置

  菜单按钮权限配置表格部分代码:

  埃尔表

  ref=resourceTableKey

  :data= resource。表格数据。“记录”

  种类

  empty-text=暂无数据

  :header-cell-style= { background: # FCFBFF ,border:0}

  style=宽度:100%

  @ selection-change= resources elect change

  El-table-column type= selection width= 40 /

  埃尔-表格-列标签=编码宽度=80 显示-溢出-工具提示

  template # default=“scope”{ scope。划。代码} }/模板

  /El-表格-列

  埃尔-表格-列标签=名称宽度=80 显示-溢出-工具提示

  template # default=“scope”{ scope。划。名称} }/模板

  /El-表格-列

  埃尔-表格-列标签=请求方式宽度=80 显示-溢出-工具提示

  template # default=“scope”{ scope。划。方法} }/模板

  /El-表格-列

  埃尔-表格-列标签=请求地址宽度=80 显示-溢出-工具提示

  template # default=“scope”{ scope。划。URL } }/模板

  /El-表格-列

  埃尔-表格-列标签=操作宽度=140

  template #default=scope

  El-button type= primary size= small @ click= resource edit(scope .$index,scope.row)

  修改/el-button

  埃尔按钮

  类型=危险

  大小=小

  @click=resourceSingleDelete(范围 index,scope.row)

  删除/el-button

  /模板

  /El-表格-列

  /el-table

  //- 编辑菜单按钮权限配置-

  脚本

  const resourceTableKey=ref(null)

  const resource=reactive({

  查询参数:{

  代码:空,

  名称:null,

  menuId: null

  },

  表数据:{

  总计:2,

  记录:[]

  },

  分页:{

  尺码:10,

  当前:1

  },

  表单数据:{},

  选择:[]

  })

  const resourceSearch=()={

  getResourceList().然后(数据={

  资源。表格数据。记录=数据。数据

  })

  }

  const resourceAdd=()={

  dialogEditVisible.value=true

  resource.formData={}

  }

  const resourceEdit=(index,row)={

  dialogEditVisible.value=true

  resource.formData=row

  }

  const resourceSingleDelete=(index,row)={

  ElMessageBox.confirm(确认删除?,

  确认删除,

  {

   confirmButtonText:确认,

  取消按钮文本: 取消,

  确认按钮类:“确认按钮”,

  类型:警告,

  })。然后(()={

  资源。表格数据。记录。拼接(索引,1)

  })。catch(()={ })

  }

  const resourceSelectChange=(选择)={

  资源选择=选择

  }

  const resourceBatchDelete=()={

  如果(!资源。选择。长度){

  ElMessageBox.alert(请选择要删除项!, 提示,{ confirmButtonText:确认,键入:警告 })

  返回

  }

  ElMessageBox.confirm(确认删除?,

  确认删除,

  {

   confirmButtonText:确认,

  取消按钮文本: 取消,

  类型:警告,

  })。然后(()={

  资源。表格数据。记录=资源。表格数据。记录。过滤器(功能(项目){

  返回(资源。选择。过滤器(功能(选择项目){

  返回selectionItems.id==items.id

  })).长度==0

  })

  })。catch(()={ })

  }

  const resource return={ resource table key,resource,resourceEdit,resourceAdd,resourceSingleDelete,resourceSelectChange,resourceBatchDelete }

  /脚本

  //- 编辑菜单按钮权限配置-

  菜单按钮权限配置表单部分代码:

  模板

  El-dialog width= 800 px v-model= visible title=修改:before-close=handleClose

  El-form ref= form :model= from data label-position= right label-width= 100 px

  El-表单-项目标签=编码prop=code

  El-输入v-model=来自数据。代码/

  注意建议使用:作为分隔符,并以查看、添加、更新、删除、导出、导入、下载、上传等关键词结尾/p

  注意如:菜单:添加、资源:查看、文件:上传/p

  /El-表单-项目

  El-表单-项目标签=名称prop=name

  El-输入v-model=来自数据。名称/

  /El-表单-项目

  El-表单-项目标签=请求方式道具=描述

  El-输入v-model=来自数据。方法/

  /El-表单-项目

  El-表单-项目标签=请求地址道具=描述

  El-输入v-model=来自数据。URL /

  /El-表单-项目

  El-表单-项目标签=描述道具=描述

  El-输入v-model=来自数据。描述/

  /El-表单-项目

  /el格式

  模板#页脚

   span class=对话框页脚

  El-button type= primary @ click= confirm()确认/el-button

  el-button @click=this .$emit(update:visible ,false)取消/el-button

  /span

  /模板

  /el-dialog

  /模板

  脚本

  从“vue”导入{参考、反应、观察}

  从" @babel/types "导入{ return语句};

  导出默认值{

  名称:编辑,

  道具:{

  可见:{

  类型:布尔型,

  默认值:错误

  },

  资源:{

  类型:对象,

  默认值:()=({})

  }

  },

  设置(道具,{ emit }) {

  const fromData=reactive({})

  watch(()=props.resource,(newResource)={

  对于(来自数据中的常量键){

  fromData[key]=

  }

  对于(新资源中的常量键){

  fromData[key]=newResource[key]

  }

  },{ immediate: true })

  常量确认=()={

  对于(来自数据中的常量键){

  道具。资源[键]=来自数据[键]

  }

  发出(更新:可见,假)

  }

  const handleClose=(done)={

  发出(更新:可见,假)

  }

  返回{确认,处理关闭,来自数据}

  }

  }

  /脚本

  到此这篇关于vue3使用元素加搭建后台管理系统-菜单管理的文章就介绍到这了,更多相关vue3element-plus后台管理系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: