# el-user-dept-select-mobile
**Repository Path**: ujjldn/el-user-dept-select-mobile
## Basic Information
- **Project Name**: el-user-dept-select-mobile
- **Description**: 这是一个基于 Vue 3 和 Element Plus 的移动端用户和部门选择组件库,提供了直观易用的界面用于在移动设备上选择用户和部门。
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-08-22
- **Last Updated**: 2025-08-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Vue, Element-UI
## README
# 移动端用户和部门选择组件
这是一个基于 Vue 3 和 Element Plus 的移动端用户和部门选择组件库,提供了直观易用的界面用于在移动设备上选择用户和部门。
## 功能特性
### 部门选择组件 (DepartmentSelect)
- 树形结构展示部门层级关系
- 支持搜索功能,可快速查找部门
- 面包屑导航,方便返回上级部门
- 支持限制选择数量(limit属性)
- 无限制模式下提供全选功能
- 响应式设计,适配移动端显示
### 用户选择组件 (UserSelect)
- 按部门分类展示用户
- 支持搜索功能,可快速查找用户
- 面包屑导航,方便返回上级部门
- 支持限制选择数量(limit属性)
- 无限制模式下提供全选功能
- 响应式设计,适配移动端显示
## 技术栈
- Vue 3.5.17
- Element Plus 2.9.11
- @element-plus/icons-vue 2.3.1
- Vite 6.3.5
- Sass-embedded 1.90.0
## 安装和使用
### 安装依赖
```bash
npm install
```
### 开发环境运行
```bash
npm run dev
```
### 构建生产版本
```bash
npm run build
```
## 组件使用说明
### 部门选择组件 DepartmentSelect
```vue
```
### 用户选择组件 UserSelect
```vue
```
## API 说明
### DepartmentSelect 组件属性
| 属性名 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| modelValue | Object/Array | null | 绑定值,支持v-model |
| limit | Number | 0 | 选择限制数量,0表示无限制 |
| placeholder | String | '请选择部门' | 占位符文本 |
| departments | Array | [] | 部门数据 |
| loadDepartments | Function | null | 加载部门数据的异步函数 |
| pageSize | Number | 10 | 分页大小 |
### UserSelect 组件属性
| 属性名 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| modelValue | Object/Array | null | 绑定值,支持v-model |
| limit | Number | 0 | 选择限制数量,0表示无限制 |
| placeholder | String | '请选择人员' | 占位符文本 |
| users | Array | [] | 用户数据 |
| departments | Array | [] | 部门数据 |
| loadUsers | Function | null | 加载用户数据的异步函数 |
| loadDepartments | Function | null | 加载部门数据的异步函数 |
| pageSize | Number | 10 | 分页大小 |
### limit 属性说明
- `limit=0`: 无限制选择模式,可以选择任意数量的项
- `limit=1`: 单选模式,只能选择一个项
- `limit>1`: 多选模式,最多可以选择指定数量的项
## 设计规范
### 移动端交互设计
1. 使用 el-dialog 实现弹出式选择界面
2. 提供较大的点击区域和清晰的视觉反馈
3. 仿钉钉/飞书样式设计
4. 支持搜索和分页功能
5. 通过 `before-close` 钩子函数控制关闭逻辑
### 全选功能
1. 仅在无限制模式(limit=0)下显示全选功能
2. 全选操作会选中所有可选项(而非仅当前显示项)
3. 提供清晰的视觉反馈和状态显示
### 数据处理规范
1. 组件内部始终使用数组处理数据
2. 根据选择模式决定返回的数据格式:
- 单选模式(limit=1):返回单个对象或null
- 多选模式(limit≠1):返回数组
3. 在确认选择时,根据选择模式返回正确的数据格式
## 目录结构
```
.
├── src
│ ├── components
│ │ ├── DepartmentSelect.vue # 部门选择组件
│ │ └── UserSelect.vue # 用户选择组件
│ ├── App.vue # 应用入口
│ └── main.js # Vue 初始化文件
├── guserselectm.js
├── index.html # Vite 入口 HTML
├── package.json # 项目配置和依赖
├── vite.config.js # Vite 构建配置
└── README.md # 项目说明文档
```
## 浏览器支持
- Chrome 最新版本
- Safari 最新版本
- Firefox 最新版本
- Edge 最新版本
## 许可证
MIT