更新记录

v1.1(2022-12-28)

修复H5页面选中数据显示异常

v1.0(2022-12-27)

组件基本功能完善 增加默认选中值 增加展开动画效果 修复部分bug 增加注释


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
× ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

平台兼容性

在 H5、微信小程序测试通过,理论支持全平台 在线体验地址

属性:

属性 说明 类型 默认值
title 标题 string
show 是否弹出 Boolean false
columns 数据列表 Array [{label: '测试1', value: '1', selected: false}]
defaultIndex 默认选中 Array []

事件:

事件名 说明 返回值 示例
@confirm 选中数据确认 Object {selected: [{label:'选项1', value:'1'},{label:'选项2', value:'2'}], value: ['1', '2']}
@cancel 取消选择
@change 点击选项 Object {selected: [{label:'选项1', value:'1'},{label:'选项2', value:'2'}], value: ['1', '2']}

实例:

<template>
    <view>

        <view class="form">
            <view class="item">
                <!-- 下拉框多选 -->
                <view :class="['select', form.selectValue ? 'selected' : '']" @tap="handleMultiple(form.selectIndex)">
                    {{form.selectValue || '请选择'}}
                </view>
            </view>
        </view>

        <multiple-picker 
            title="请选择" 
            :show="selectMultiple.show" 
            :columns="selectMultiple.columns" 
            :defaultIndex="selectMultiple.index" 
            @confirm="confirmMultiple" 
            @cancel="selectMultiple.show = false"
            @change="changeMultiple"
        ></multiple-picker>

    </view>
</template>

<script>
    export default {
        data() {
            return {
                form: {
                    selectValue: '测试2,测试3',
                    selectIndex: ["2","3"],
                },
                selectMultiple: {
                    show: false,
                    index: [],
                    columns: [
                        {
                            label: '测试1',
                            value: '1',
                        },
                        {
                            label: '测试2',
                            value: '2',
                        },
                        {
                            label: '测试3',
                            value: '3',
                        },
                        {
                            label: '测试4',
                            value: '4',
                        },
                        {
                            label: '测试5',
                            value: '5',
                        },
                        {
                            label: '测试6',
                            value: '6',
                        },
                        {
                            label: '测试7',
                            value: '7',
                        }
                    ],
                },
            }
        },
        onLoad() {
        },
        methods: {
            handleMultiple(val) {
                console.log(val);

                this.selectMultiple.index = val || [];
                this.selectMultiple.show = true;
            },
            confirmMultiple(e) {
                console.log(e);

                let temp = [];
                e.selected.forEach(item => {
                    temp.push(item.label);
                })
                this.form.selectValue = temp.toString();
                this.form.selectIndex = e.value;
                this.selectMultiple.show = false;
            },
            changeMultiple(e) {
                console.log(e);
            }
        }
    }
</script>

<style scoped lang="scss">
    page {
        background-color: #dadbde;
    }
    .form {
        width: 100%;
        padding: 40rpx 30rpx;
        box-sizing: border-box;

        .item {
            width: 100%;
            padding: 20rpx 0;

            .select {
                width: 100%;
                border: 1px solid #dadbde;
                padding-top: 6px;
                padding-bottom: 6px;
                padding-left: 9px;
                padding-right: 9px;
                border-radius: 4px;
                font-size: 15px;
                box-sizing: border-box;
                color: #CCCCCC;
                line-height: 26px;

                &.selected {
                    color: black;
                }
            }
        }
    }
</style>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问