Skip to content

菜单选择器组件

概述

ZqMenuSelector 是一个菜单选择器组件,支持从系统菜单树中选择菜单,支持单选和多选模式,以及级联选择功能。

组件路径web/apps/web-ele/src/components/zq-form/zq-menu-selector/

组件名称ZqMenuSelector

功能特性

  • 树形菜单展示
  • 单选/多选模式
  • 级联选择(选中父级自动选中子级)
  • 支持 Dialog 和 Popup 两种显示模式
  • 菜单图标显示
  • 国际化菜单名称
  • 可过滤只显示系统菜单

Props

属性类型默认值说明
modelValuestring | string[] | nullnull选中的菜单 ID
mode'dialog' | 'popup''dialog'显示模式
placeholderstring'请选择菜单'占位符
disabledbooleanfalse是否禁用
clearablebooleantrue是否可清除
multiplebooleanfalse是否多选
dialogTitlestring'选择菜单'弹窗标题
dialogWidthstring'400px'弹窗宽度
applicationIdstring-应用 ID(不传则使用当前应用)
systemOnlybooleanfalse是否只显示系统菜单

Events

事件参数说明
update:modelValuestring | string[] | null值更新
changeMenuItem | MenuItem[] | null选中菜单变化
selectMenuItem选择菜单

Expose 方法

方法参数说明
open-打开选择弹窗
close-关闭选择弹窗
loadMenuTree-加载菜单树

使用示例

基本用法(单选)

vue
<template>
  <ZqMenuSelector v-model="menuId" />
</template>

<script setup>
import { ref } from 'vue';

const menuId = ref(null);
</script>

多选模式

vue
<template>
  <ZqMenuSelector
    v-model="menuIds"
    :multiple="true"
    dialog-title="选择菜单权限"
  />
</template>

<script setup>
import { ref } from 'vue';

const menuIds = ref([]);
</script>

只显示系统菜单

vue
<template>
  <ZqMenuSelector
    v-model="menuId"
    :system-only="true"
  />
</template>
vue
<template>
  <ZqMenuSelector
    v-model="menuId"
    mode="popup"
  />
</template>

与表单设计器集成

在表单设计器中,该组件作为 menu-selector 类型的表单项使用:

json
{
  "type": "menu-selector",
  "field": "menu_id",
  "label": "关联菜单",
  "props": {
    "multiple": false,
    "systemOnly": false,
    "placeholder": "请选择菜单"
  }
}

级联选择说明

在多选模式下,选择父级菜单会自动选中所有子级菜单,取消选择父级也会取消所有子级的选择。

典型应用场景

  • 权限配置:配置角色的菜单权限
  • 菜单关联:配置功能与菜单的关联
  • 快捷入口:配置用户的快捷菜单
  • 导航配置:配置自定义导航菜单

Released under the MIT License.