 YbPaginationSelect 分页选择器
YbPaginationSelect 分页选择器
  远程分页加载 select 选择器下拉选项,默认 pageSize 为 10。
# 基本使用
- 10条/页
- 20条/页
- 30条/页
- 40条/页
- 50条/页
- 100条/页
共 0 条1 前往页
无数据
<template>
    <yb-pagination-select
        :onRemote="request"
        :optionsFieldMap="optionsFieldMap"
        v-model="selectValue"
        searchWhenOpen
        multiple
        isShowSelectAll
        default-first-option
        :asyncPagination="false"
        reserve-keyword
        clearable
        allow-create
        remote
        optionInValue
    >
    </yb-pagination-select>
</template>
<script>
    const data =
        '[{"value":"选项1","text":"黄金糕"},{"value":"选项2","text":"双皮奶"},{"value":"选项3","text":"蚵仔煎"},{"value":"选项4","text":"龙须面"},{"value":"选项5","text":"北京烤鸭"},{"value":"选项6","text":"钵仔糕"},{"value":"选项7","text":"冰糖葫芦"},{"value":"选项8","text":"葡式蛋挞"},{"value":"选项9","text":"凤梨酥"},{"value":"选项10","text":"鸡蛋仔"},{"value":"选项11","text":"车轮饼"},{"value":"选项12","text":"菠萝包"}]';
    const options = [
        {
            label: '门诊',
            value: '门诊',
        },
        {
            label: '住院',
            value: '住院',
        },
    ];
    export default {
        data() {
            return {
                selectValue: [
                    // {
                    //     label: '外围',
                    //     value: '外围',
                    // },
                ],
                optionsFieldMap: {
                    label: 'label',
                    value: 'value',
                    key: 'value',
                },
            };
        },
        mounted() {
            // setTimeout(() => {
            //     this.selectValue = [
            //         {
            //             label: '外围',
            //             value: '外围',
            //         },
            //     ];
            // }, 5000);
        },
        methods: {
            request(query) {
                console.log(query);
                // 模拟的后端接口的查询
                return new Promise((resolve) => {
                    let optionsList = options.filter((item) => {
                        return (
                            !query.queryWord ||
                            item.text
                                .toLowerCase()
                                .indexOf(query.queryWord.toLowerCase()) > -1
                        );
                    });
                    setTimeout(() => {
                        return resolve({
                            total: optionsList.length,
                            options: optionsList.slice(
                                (query.currentPage - 1) * query.pageSize,
                                query.currentPage * query.pageSize
                            ),
                        });
                    }, 2000);
                });
            },
        },
    };
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 显示 复制 复制
# 自定义选项展示内容
默认每个选项的 label 值与 value 值不同时,会把 value 值显示在右边,可以通过 option 插槽自定义显示
- 10条/页
- 20条/页
- 30条/页
- 40条/页
- 50条/页
- 100条/页
共 0 条1 前往页
无数据
<template>
    <yb-pagination-select
        :request="request"
        :optionsFieldMap="optionsFieldMap"
        v-model="selectValue"
        multiple
        is-show-select-all
        collapse-tags
        filterable
        clearable
        reserve-keyword
        searchWhenOpen
    >
        <template #option="data">
            <span style="float: left">{{ data.optionItem.label }}</span>
            <el-tag style="float: right;"> {{ data.optionItem.value }} </el-tag>
        </template>
    </yb-pagination-select>
</template>
<script>
    const data =
        '[{"value":"选项1","text":"黄金糕"},{"value":"选项2","text":"双皮奶"},{"value":"选项3","text":"蚵仔煎"},{"value":"选项4","text":"龙须面"},{"value":"选项5","text":"北京烤鸭"},{"value":"选项6","text":"钵仔糕"},{"value":"选项7","text":"冰糖葫芦"},{"value":"选项8","text":"葡式蛋挞"},{"value":"选项9","text":"凤梨酥"},{"value":"选项10","text":"鸡蛋仔"},{"value":"选项11","text":"车轮饼"},{"value":"选项12","text":"菠萝包"}]';
    const options = JSON.parse(data);
    export default {
        data() {
            return {
                selectValue: '',
                optionsFieldMap: {
                    label: 'text',
                    value: 'value',
                    key: 'value',
                },
            };
        },
        methods: {
            request(query) {
                return new Promise((resolve) => {
                    let optionsList = options.filter((item) => {
                        return (
                            !query.queryWord ||
                            item.text
                                .toLowerCase()
                                .indexOf(query.queryWord.toLowerCase()) > -1
                        );
                    });
                    setTimeout(() => {
                        return resolve({
                            total: optionsList.length,
                            options: optionsList.slice(
                                (query.currentPage - 1) * query.pageSize,
                                query.currentPage * query.pageSize
                            ),
                        });
                    }, 2000);
                });
            },
        },
    };
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 显示 复制 复制
其他功能同 yb-select , 比如 多选、选中的值是对象 等
# Props
| 参数 | 说明 | 类型 | 可选值 | 默认值 | 
|---|---|---|---|---|
| onRemote/request | 加载下拉选项数据 | function(currentPage, pageSize, queryWord) | -- | -- | 
| pageSize | 每页加载条数 | number | -- | 10 | 
| filterable | 开启过滤 | boolean | -- | true | 
| remote | 开启远程过滤 | boolean | -- | true | 
| asyncPagination | 异步分页,如果 false 即在现有的 options 中静态分页 | boolean | -- | true | 
| - | 同yb-select | -- | -- | -- | 
# Events
| 参数 | 说明 | 回调参数 | 
|---|---|---|
| valueChange | 选中值发生变化时触发,当时考虑不全的 api,建议直接用 change | (value:string, valueOption:object) | 
| - | 同yb-select | 
上次更新: 2024/06/21, 11:16:11
