Select 选择器

February 27, 2026 · View on GitHub

数据选择器组件,支持单选/多选、搜索、快捷添加等功能。

引入

import { ASelect } from '@airpower/web'

Props

参数说明类型默认值必填
entity选择器使用的实体类ITransformerConstructor<E>-
service选择器使用的服务类CurdServiceConstructor<E, S>-
addPermission添加按钮的权限标识stringundefined
columnList表格字段列表ITableColumn<E>[]undefined
editor编辑器组件(用于快捷添加)Componentundefined
searchParams搜索字段列表ISearchField[]undefined
width选择器宽度stringundefined
height选择器高度stringundefined
title选择器标题stringundefined
unPaginate不分页booleanundefined
treeList请求树形接口booleanundefined
hideAdd隐藏添加按钮booleanundefined
beforeSearch搜索前的拦截方法(requestData: QueryRequestPage<E>) => QueryRequestPage<E> | voidundefined
propsProps 参数对象SelectorProps-

props 参数对象

参数说明类型默认值
param查询参数anyundefined
isMultiple是否多选booleanfalse
selectList已选中的列表E[][]
onConfirm确认按钮回调(data?: E | E[]) => void-
onCancel取消按钮回调() => void-

Emits

无(通过 props 回调)

Slots

插槽名说明作用域参数
自定义列插槽自定义列显示{ data: E, index: number }
customRow自定义行操作(单选模式){ data: E }

示例

<template>
  <!-- 单选 -->
  <ASelect
    :entity="User"
    :service="UserService"
    :props="{
      isMultiple: false,
      onConfirm: handleConfirm,
      onCancel: handleCancel
    }"
  />

  <!-- 多选 -->
  <ASelect
    :entity="User"
    :service="UserService"
    :props="{
      isMultiple: true,
      selectList: selectedList,
      onConfirm: handleConfirm,
      onCancel: handleCancel
    }"
  />

  <!-- 带查询参数 -->
  <ASelect
    :entity="User"
    :service="UserService"
    :props="{
      param: { departmentId: 1 },
      isMultiple: false,
      onConfirm: handleConfirm,
      onCancel: handleCancel
    }"
  />

  <!-- 带编辑器 -->
  <ASelect
    :entity="User"
    :service="UserService"
    :editor="UserEditor"
    :props="{
      isMultiple: false,
      onConfirm: handleConfirm,
      onCancel: handleCancel
    }"
  />

  <!-- 自定义列 -->
  <ASelect
    :entity="User"
    :service="UserService"
    :column-list="customColumns"
    :props="{
      isMultiple: false,
      onConfirm: handleConfirm,
      onCancel: handleCancel
    }"
  >
    <template #status="{ data }">
      <ElTag :type="data.enabled ? 'success' : 'danger'">
        {{ data.enabled ? '启用' : '禁用' }}
      </ElTag>
    </template>
  </ASelect>
</template>

<script setup lang="ts">
import { User } from '@/model/User'
import { UserService } from '@/service/UserService'
import UserEditor from '@/views/user/UserEditor.vue'

const selectedList = ref([])

function handleConfirm(data: User | User[]) {
  console.log('选中:', data)
}

function handleCancel() {
  console.log('取消')
}
</script>

注意事项

  • 必须传入 entityservice
  • 单选模式下会显示"选择"链接,多选模式下使用底部确认按钮
  • 支持所有 ATable 的功能和配置
  • 可通过插槽自定义列显示