1. 项目背景与核心需求
在管理后台开发中,部门人员选择器是一个高频出现的功能模块。特别是在表格行内操作场景下,如何在有限空间内优雅地实现多级部门与人员的选择,同时保证与TypeScript的类型系统完美兼容,成为许多Vue3开发者面临的现实挑战。
最近在重构一个OA系统时,我遇到了需要在表格每行中嵌入部门人员选择器的需求。经过多次迭代,最终采用el-cascader+自定义节点的方案,既保持了Element Plus的视觉统一性,又实现了复杂数据结构的类型安全。下面分享具体实现过程和踩坑经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与方案设计
2.1 组件选型对比
在Element Plus的生态中,实现层级选择主要有三种方案:
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| el-select + 分组 | 简单直接 | 无法多级联动 | 简单二级分类 |
| el-tree | 可视化树形结构 | 表格内嵌样式难控制 | 独立全屏选择器 |
| el-cascader | 多级联动/紧凑布局 | 默认不支持自定义节点 | 表格行内嵌入式选择 |
2.2 数据结构设计
为实现部门→子部门→人员的三级结构,定义TypeScript接口如下:
typescript复制interface Department {
id: number
name: string
children?: (Department | Employee)[]
}
interface Employee {
id: number
name: string
position: string
