# use-vue-select-dialog
**Repository Path**: ProgrammerMao-001/use-vue-select-dialog
## Basic Information
- **Project Name**: use-vue-select-dialog
- **Description**: Vue-Select-Dialog 是一款基于vue2 + ElementUI封装的功能强大的 Vue.js 选择框组件,支持单选、多选、分页、列表展示、搜索过滤等特性,同时具备高度定制化能力,适用于各种复杂的选择场景。无论是简单的下拉选择,还是复杂的数据筛选,Vue-Select-Dialog 都能轻松应对。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-02-06
- **Last Updated**: 2025-02-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# use-vue-select-dialog
## 本项目是一个使用 vue-select-dialog 的示例项目
[点此查看vue-select-dialog文档](https://www.npmjs.com/package/vue-select-dialog)
> Vue-Select-Dialog 是一款基于vue2 + ElementUI封装的功能强大的 Vue.js 选择框组件,
支持单选、多选、分页、列表展示、搜索过滤等特性,同时具备高度定制化能力, 适用于各种复杂的选择场景。
无论是简单的下拉选择,还是复杂的数据筛选,Vue-Select-Dialog 都能轻松应对。
## 运行
```bash
# 安装依赖
npm install
# 前端 node:18.20.3
npm run start_front
# 后端
npm run start_back
```
## 更新
```bash
npm update vue-select-dialog
```
# vue-slect-dialog

## 安装
```bash
npm i vue-slect-dialog -D
```
## 注册
```javascript
import Vue from 'vue'
import vueSelectDialog from "vue-select-dialog";
Vue.use(vueSelectDialog)
```
## 使用
> [参考示例](http://60.204.234.113:91/)
## 配置
| 参数 | 说明 | 类型 | 可选值 | 默认值 | 是否必填 |
|-----------------|-------------------------------------|----------|------------------|-------------------------------------|------|
| dialogWidth | 弹窗宽度 | String | - | 1000px | - |
| disabled | 是否禁用 | Boolean | - | false | - |
| menuTitle | 左侧列表标题 | String | - | 清单 | - |
| selectedTitle | 右侧已选列表标题 | Array | - | 已选 | - |
| maxSelectable | 最大可选数量 | Number | -1不限制,1单选,大于1的整数 | -1 | - |
| behavior | 当超出限制数量后的行为 (maxSelectable!==-1时启用) | Number | - | 0 表示不允许选择,1 表示自动去除多余的选择项(优先去除最先选择的) | - |
| validate | 点击保存是否需要校验 | Boolean | false,true | false | - |
| validateMessage | 校验提示语 | String | - | 请先选择一条数据! | - |
| processingData | 请求接口后处理返回数据 | Function | - | 见下方processingData示例 | - |
| idKey | 表格单行数据的唯一标识 | String | - | id | - |
| valueKey | tag上展示的字段 | String | - | name | 必填 |
| pagination | 当前列表是否需要分页(根据接口,该组件本身不支持前端分页) | Boolean | - | true | - |
| pageNum | 分页页码(对应后端接口的分页字段) | String | - | pageNum | - |
| pageSize | 分页大小(对应后端接口的分页字段) | String | - | pageSize | - |
| formLabel | 查询条件 | Array | - | 见下方formLabel示例 | - |
| tableDataColumn | 表格的表头数据 | Array | - | 见下方tableDataColumn示例 | 必填 |
### processingData 示例
```javascript
// 用于处理接口返回的数据(data:表格数据,total:表格数据总条数)
const processingDataDemo1 = (res) => {
return {data: res.data, total: res.data.length};
}
const processingDataDemo2 = (res) => {
return {data: res.data.list, total: res.data.total};
}
```
### formLabel 示例
[参考文档](https://programmermao-001.github.io/ytUi-doc/components/ytForm/ytForm.html)
### tableDataColumn 示例
| 参数 | 说明 | 类型 | 可选值 | 默认值 | 是否必填 |
|------------|------------------------------|---------|-----|-----|------|
| label | 表头名称 | String | - | - | 必填 |
| prop | 对应接口返回的字段 | String | - | - | 必填 |
| isSlot | 是否是插槽 | Boolean | - | - | - |
| width | 表头宽度 | Number | - | - | - |
| accumulate | 序号是否累加(仅对label是序号或者index时有效) | Boolean | - | - | - |
```javascript
tableDataColumn = [
{
label: "序号", // 表头名称
width: 50, // 表头宽度
accumulate: false, // 序号是否累加
},
{
label: "部门名称",
prop: "dept_name",
},
{
label: "部门ID",
prop: "dept_id",
},
{
label: "部门状态",
prop: "status", // 对应接口返回的字段
isSlot: true, // 是否是插槽
},
{
label: "节点类型",
prop: "nodeType",
isSlot: true,
},
{
label: "创建者",
prop: "create_by",
},
{
label: "创建时间",
prop: "create_time",
},
];
```
## inject/provide 接口传参
### 示例1
```vue
```
### 示例2
```vue
```
## emit 事件
| 事件名称 | 说明 | 回调参数 |
|------------------|--------------------------------------------|-----------|
| update-formLabel | 主要用于更新formLabel中配置的下拉数据(如果查询条件是动态的下拉数据则必填) | formLabel |
| on-response | 点击确定按钮后接收选择的表格行数据 | [] |