You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
5.5 KiB
133 lines
5.5 KiB
1 year ago
|
# wz-select-popup
|
||
|
|
||
|
## 示例
|
||
|
|
||
|
```vue
|
||
|
<template>
|
||
|
<view>
|
||
|
<view class="" style="margin-bottom: 16px;">
|
||
|
<view style="margin-bottom: 8px;">names:{{userForm.names}}</view>
|
||
|
<view style="margin-bottom: 8px;">values:{{userForm.values}}</view>
|
||
|
<view style="margin-bottom: 8px;">origin:{{userForm.origin}}</view>
|
||
|
</view>
|
||
|
<button @click="open">打开</button>
|
||
|
<wz-select-popup ref="wzSelectPopup" @select="selectCheckbox" />
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import {
|
||
|
simulationReqGetList,
|
||
|
getDataList
|
||
|
} from "@/common/mock.js"
|
||
|
export default {
|
||
|
data() {
|
||
|
return {
|
||
|
userForm: {
|
||
|
names: [],
|
||
|
values: [],
|
||
|
origin:[]
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
methods: {
|
||
|
open() {
|
||
|
this.$refs.wzSelectPopup.open({
|
||
|
mode: 'checkbox', //radio checkbox 单选、多选
|
||
|
// dataList:[], //如果dataList传入了数组则直接使用传入的数组渲染,无需再配置proxyConfig
|
||
|
selected: this.userForm.values, //已选中的数据
|
||
|
proxyConfig: { //组件内部代理请求数据配置
|
||
|
reqFun: this.reqGetList, //请求方法,在方法中请返回Promise.resolve([])
|
||
|
localPaging: false //前端本地分页
|
||
|
},
|
||
|
search: {
|
||
|
type: 'local', //local本地数据搜索 | remote请求接口
|
||
|
},
|
||
|
fields: {
|
||
|
label: 'name',
|
||
|
value: 'code'
|
||
|
}
|
||
|
})
|
||
|
},
|
||
|
selectCheckbox(mode, data) {
|
||
|
console.log(mode, data)
|
||
|
this.userForm.names = data.names
|
||
|
this.userForm.values = data.values
|
||
|
this.userForm.origin = data.origin
|
||
|
},
|
||
|
reqGetList(data) {
|
||
|
return simulationReqGetList({
|
||
|
pageIndex: data.pageIndex,
|
||
|
pageSize: data.pageSize,
|
||
|
name: data.searchValue
|
||
|
})
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style>
|
||
|
|
||
|
</style>
|
||
|
```
|
||
|
|
||
|
## 属性props
|
||
|
|
||
|
| 属性 | 类型 | 默认值 | 说明 |
|
||
|
| ------- | ------ | ------ | ------------------------------------------------------------ |
|
||
|
| scrollH | String | 50vh | 滚动内容的高度,不包含搜索框和多选时的底部按钮栏。需要带单位 |
|
||
|
|
||
|
|
||
|
## 方法methods
|
||
|
|
||
|
| 方法名 | 说明 | 参数 |
|
||
|
| ------ | -------- | ----------------------------- |
|
||
|
| open | 打开弹窗 | [configs](#open方法的configs) |
|
||
|
| close | 关闭弹窗 | |
|
||
|
|
||
|
### open方法的configs
|
||
|
|
||
|
| 参数名 | 说明 | 类型 | 默认值 |
|
||
|
| ----------- | ------------------------------------------------------------ | ------------- | -------------------------- |
|
||
|
| mode | 选择模式radio单选 ,checkbox多选 | String | radio |
|
||
|
| selected | 已选中的value, 单选传字符串,多选传数组 | String\|Array | [] |
|
||
|
| dataList | 传入了数组,则直接使用传入的数组渲染,无需再配置proxyConfig | Array | null |
|
||
|
| proxyConfig | 组件内部代理请求数据配置 | Object | [proxyConfig](#proxyConfig的属性) |
|
||
|
| search | 搜索配置 | Object | [search](#search的属性) |
|
||
|
| page | 分页配置,如果是组件内部代理请求会把page的值加入到proxyConfig.reqFun请求参数里 | Object | [page](#page的属性) |
|
||
|
| fields | 显示和取值的label,value | Object | [fields](#fields的属性) |
|
||
|
|
||
|
#### proxyConfig的属性
|
||
|
|
||
|
| 参数名 | 说明 | 类型 | 默认值 | 返回值 |
|
||
|
| ----------- | --------------------------------------------------------- | ------- | ------------------- | --------------------------------------- |
|
||
|
| reqFun | 向服务器请求数据的Promise方法,会返回页码以及搜索框的value | Promise | Promise.resolve([]) | ({pageIndex, pageSize,searchValue})=>{} |
|
||
|
| localPaging | 是否本地分页 | Boolean | false | |
|
||
|
|
||
|
#### search的属性
|
||
|
|
||
|
| 参数名 | 说明 | 类型 | 默认值 |
|
||
|
| ------ | ------------------------------------------------------------ | ------ | ------ |
|
||
|
| type | 搜索的类型,local本地搜索, remote向服务器请求。只有使用proxyConfig.reqFun请求才能配置为remote | String | local |
|
||
|
|
||
|
#### page的属性
|
||
|
|
||
|
| 参数名 | 说明 | 类型 | 默认值 |
|
||
|
| --------- | ------ | ------ | ------ |
|
||
|
| pageIndex | 当前页 | Number | 1 |
|
||
|
| pageSize | 页大小 | Number | 20 |
|
||
|
|
||
|
#### fields的属性
|
||
|
|
||
|
| 参数名 | 说明 | 类型 | 默认值 |
|
||
|
| ------ | ------------ | ------ | ------ |
|
||
|
| label | 显示的字段名 | String | name |
|
||
|
| value | 取值的字段名 | String | code |
|
||
|
|
||
|
## 事件enevt
|
||
|
|
||
|
| 名称 | 触发时机 | 返回值 |
|
||
|
| ------ | ------------------------------------------ | ------------------------------------------------------------ |
|
||
|
| select | 单选点击列表时触发,多选点击确定按钮时触发 | mode等于radio时:(mode, {check,name,code})=>{}<br/>mode等于checkbox时:(mode, {names,values,origin})=>{} |
|
||
|
| close | popup关闭 | void |
|