# g-select-dialog
**Repository Path**: ujjldn/g-select-dialog
## Basic Information
- **Project Name**: g-select-dialog
- **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-10
- **Last Updated**: 2025-08-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Vue, Element-UI
## README
# g-selectDialog
一个基于 Vue 3 和 Element Plus 的选择器组件库,包含用户、部门和角色选择功能。
## 🎯 项目概述
g-selectDialog 是一组灵活且易用的选择器组件,专为 Vue 3 应用程序设计。它提供了用户、部门和角色的选择功能,支持单选、多选以及限制选择数量等多种使用场景。
## 🚀 快速开始
### 安装依赖
```bash
npm install
```
### 本地开发
```bash
npm run dev
```
### 生产构建
```bash
npm run build
```
## 🧩 组件介绍
### UserSelector - 用户选择器
用户选择器组件支持通过部门和角色筛选用户,提供用户列表展示和搜索功能。
#### 功能特性
- 支持通过部门和角色筛选用户
- 用户搜索功能
- 支持单选和多选模式
- 可限制选择数量
- 分页展示用户列表
- 已选择用户管理
#### 使用示例
```vue
选择人员
```
### UserSelectorH5 - 用户选择器(H5移动端)
专为移动端设计的用户选择器组件,具有响应式布局和触摸友好的交互。
#### 功能特性
- 支持通过部门筛选用户
- 用户搜索功能
- 支持单选和多选模式
- 可限制选择数量
- 分页展示用户列表
- 已选择用户管理
- 面包屑导航支持
- 移动端优化的UI界面
#### 使用示例
```vue
选择人员(H5)
```
### DeptSelector - 部门选择器
部门选择器基于树形结构展示部门信息,支持层级选择。
#### 功能特性
- 树形结构展示部门层级
- 支持单选和多选模式
- 可限制选择数量
- 部门搜索功能
- 全选功能(多选模式下)
#### 使用示例
```vue
选择部门
```
### DeptSelectorH5 - 部门选择器(H5移动端)
专为移动端设计的部门选择器组件,具有响应式布局和触摸友好的交互。
#### 功能特性
- 树形结构展示部门层级
- 支持单选和多选模式
- 可限制选择数量
- 部门搜索功能
- 全选功能(多选模式下)
- 面包屑导航支持
- 移动端优化的UI界面
#### 使用示例
```vue
选择部门(H5)
```
### RoleSelector - 角色选择器
角色选择器同样基于树形结构展示角色信息。
#### 功能特性
- 树形结构展示角色层级
- 支持单选和多选模式
- 可限制选择数量
- 角色搜索功能
- 全选功能(多选模式下)
#### 使用示例
```vue
选择角色
```
### cdn 使用示例
详见test/test - dialog-js.html文件
使用组件名称调用对应的组件
dialogName:string 组件名称(characterSelector/RoleSelector/DeptSelector/UserSelector/RoleSelector/DeptSelectorH5/UserSelectorH5)
```javascript
GDialog.openDialog({dialogName: 'RoleSelector', ...props,onConfirm:{},onCancel:{})
```
```html
部门选择框H5
openDeptSelectorH5(){
window.GDialog.openDialog({
dialogName: 'DeptSelectorH5',
visible:true,
selected:[3],
departments: depts,
onConfirm: (result) => {
console.log('收到:', result)
}
})
}
```
## 🛠️ 开发与构建
- 本地开发:`npm run dev`
- 生产构建:`npm run build`
- 预览生产构建:`npm run preview`
构建输出目录为 `dist/`。
## 📁 目录结构
```
.
├── public/
│ └── mockData/ # 模拟数据
│ ├── department.json
│ ├── role.json
│ └── user.json
├── src/
│ ├── components/
│ │ ├── characterSelector/
│ │ ├── treeSelector/
│ │ ├── DeptSelector.vue
│ │ ├── DeptSelectorH5.vue
│ │ ├── RoleSelector.vue
│ │ ├── UserSelector.vue
│ │ ├── UserSelectorH5.vue
│ │ ├── character-dialog.vue
│ │ ├── character-drawer.vue
│ │ └── g-select-dialog.vue
│ ├── utils/
│ │ └── useSelectDialog.js
│ ├── App.vue
│ └── main.js
├── temp/
├── test/
├── README.md
├── index.html
├── package.json
└── vite.config.js
```
## 🤝 更新日志
### 2025-08-11 v.0.0.2
1. 修复UserSelector组件使用props传参时,组件内部数据未更新
### 2025-08-23 v.0.0.3
1. 新增UserSelectorH5和DeptSelectorH5移动端组件
2. 优化组件布局和交互体验
### 2025-08-26 v.0.0.4
1. 编译成cdn下使用的gdialog.umd.js时,通过window.GDialog.openDialog({...})可以调用全部组件,详见test/test - dialog-js.html文件
2. 部门、角色、用户等选择框增加 onConfirm和onCancel回调函数或通过confirm,cancel 属性设置回调函数,增加selected属性,用于设置默认选中项[1,2,3]
## 📄 许可证
MIT License