Skip to content

Checkbox 多选框

多选框用于在一组备选项中进行多选,也可以单独表示开关式的选中状态。VISTA B 直接使用 Element Plus 的 el-checkbox,样式沿用组件库,适合权限选择、功能模块选择、筛选条件、批量操作确认等场景。

Element Plus 2.6.0 起推荐使用 value 表示选项值,label 只作为展示文案;label 作为值的旧用法已废弃。

基础用法

单独使用时,v-model 默认绑定布尔值;写在标签中的内容会作为多选框后的说明文字。可以通过 size 设置尺寸。

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

const checked1 = ref(true)
const checked2 = ref(false)
</script>

<template>
  <el-checkbox v-model="checked1" size="large">启用项目提醒</el-checkbox>
  <el-checkbox v-model="checked2">同步客户信息</el-checkbox>
</template>

禁用状态

设置 disabled 后,多选框不可操作。

vue
<el-checkbox v-model="checked1" disabled>已锁定</el-checkbox>
<el-checkbox v-model="checked2">可编辑</el-checkbox>

多选框组

el-checkbox-group 管理一组多选框,并通过 v-model 绑定数组。每个 el-checkboxvalue 会对应数组中的一项。

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

const checkList = ref(['project', 'quote'])
</script>

<template>
  <el-checkbox-group v-model="checkList">
    <el-checkbox value="project">项目管理</el-checkbox>
    <el-checkbox value="quote">报价配置</el-checkbox>
    <el-checkbox value="material">素材管理</el-checkbox>
    <el-checkbox value="archive" disabled>归档数据</el-checkbox>
  </el-checkbox-group>
</template>

Options 属性

el-checkbox-group 支持通过 options 快速渲染选项。使用 props 可以把业务字段映射为 labelvaluedisabled

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

const checkList = ref(['project'])
const props = { label: 'name', value: 'id', disabled: 'unable' }
const options = [
  { name: '项目管理', id: 'project' },
  { name: '报价配置', id: 'quote' },
  { name: '归档数据', id: 'archive', unable: true }
]
</script>

<template>
  <el-checkbox-group v-model="checkList" :options="options" :props="props" />
</template>

中间状态

indeterminate 用于表现不确定状态,常见于“全选 / 半选 / 未选”的联动场景。它只控制视觉状态,仍需要在业务代码中维护选中值。

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

const modules = ['project', 'quote', 'material', 'customer']
const checkAll = ref(false)
const isIndeterminate = ref(true)
const checkedModules = ref(['project', 'quote'])

const handleCheckAllChange = (value) => {
  checkedModules.value = value ? modules : []
  isIndeterminate.value = false
}

const handleCheckedModulesChange = (value) => {
  const checkedCount = value.length
  checkAll.value = checkedCount === modules.length
  isIndeterminate.value = checkedCount > 0 && checkedCount < modules.length
}
</script>

可选数量限制

使用 minmax 可以限制多选框组中可勾选的数量。

vue
<el-checkbox-group v-model="checkedModules" :min="1" :max="2">
  <el-checkbox value="project">项目管理</el-checkbox>
  <el-checkbox value="quote">报价配置</el-checkbox>
  <el-checkbox value="material">素材管理</el-checkbox>
  <el-checkbox value="customer">客户跟进</el-checkbox>
</el-checkbox-group>

按钮样式

el-checkbox 替换为 el-checkbox-button 后,可以得到按钮式多选组合。尺寸由外层 el-checkbox-groupsize 控制。

vue
<el-checkbox-group v-model="checkedModules" size="large">
  <el-checkbox-button value="project">项目管理</el-checkbox-button>
  <el-checkbox-button value="quote">报价配置</el-checkbox-button>
  <el-checkbox-button value="material">素材管理</el-checkbox-button>
</el-checkbox-group>

带有边框

设置 border 后,多选框会显示边框,适合在表单块、配置项或空间较松的筛选面板中使用。

vue
<el-checkbox v-model="checked" border>项目管理</el-checkbox>

<el-checkbox-group v-model="checkedModules" size="small">
  <el-checkbox value="project" border>项目管理</el-checkbox>
  <el-checkbox value="quote" border>报价配置</el-checkbox>
</el-checkbox-group>

API

Checkbox 属性

属性说明类型默认值
model-value / v-model选中项绑定值string / number / boolean
value选中状态的值,在 checkbox-group 或绑定值为数组时有效string / number / boolean / object
label展示文本;未设置 value 时旧版本也会作为值使用,该用法已废弃string / number / boolean / object
true-value选中时的值string / number
false-value未选中时的值string / number
disabled是否禁用booleanfalse
border是否显示边框booleanfalse
size多选框尺寸large / default / small
name原生 name 属性string
checked当前是否勾选booleanfalse
indeterminate是否为不确定状态,仅控制样式booleanfalse
validate-event输入时是否触发表单校验booleantrue
tabindex输入框的 tabindexstring / number
id原生 input idstring
aria-controls原生 aria-controls 属性,indeterminatetrue 时生效string
aria-label原生 aria-label 属性string

Checkbox 事件

事件名说明类型
change绑定值变化时触发(value: string | number | boolean) => void

Checkbox 插槽

插槽说明
default自定义默认内容

CheckboxGroup 属性

属性说明类型默认值
model-value / v-model绑定值array[]
size多选框组尺寸large / default / small
disabled是否禁用booleanfalse
min可被勾选的最小数量number
max可被勾选的最大数量number
aria-label原生 aria-label 属性string
text-color按钮激活时的字体颜色string#ffffff
fill按钮激活时的边框和背景颜色string#409eff
tag多选框组元素标签stringdiv
validate-event是否触发表单校验booleantrue
options选项数据源array
propsoptions 的字段映射配置object{ value: 'value', label: 'label', disabled: 'disabled' }
type使用 options 渲染时的组件类型checkbox / buttoncheckbox

CheckboxGroup 事件

事件名说明类型
change绑定值变化时触发(value: array) => void

CheckboxGroup 插槽

插槽说明子标签
default自定义默认内容Checkbox / CheckboxButton

CheckboxButton 属性

属性说明类型默认值
value选中状态的值,在绑定值为数组时有效string / number / boolean / object
label展示文本;未设置 value 时旧版本也会作为值使用,该用法已废弃string / number / boolean / object
true-value选中时的值string / number
false-value未选中时的值string / number
disabled是否禁用booleanfalse
name原生 name 属性string
checked当前是否勾选booleanfalse

CheckboxButton 插槽

插槽说明
default自定义默认内容

HOMEVISTA 设计规范