YbConditionSelect 条件选择器
# 基本使用
- 过滤条件默认选中第一个选项
- 可指定配置过滤条件下拉选项,根据指定的顺序进行选项渲染,默认显示组件内部所有可配置的过滤条件下拉选项
复制
# 特殊 input 组件用法
- 当 values 的组件类型设置为
input
时,输入的内容根据英文逗号切割,可表示多个 - 当 A、B 组件类型设置为
input
时,不根据英文逗号切割
复制
# 表单中使用
// 值合法校验
import { conditionValidator } from 'yb-components/packages/es/components/yb-condition-select/modules/utils';
// oneParamsConditions 单个数据值的符号,twoParamsConditions 范围值的符号
import {
oneParamsConditions,
twoParamsConditions,
} from 'yb-components/packages/es/components/yb-condition-select/modules/utils';
1
2
3
4
5
6
7
2
3
4
5
6
7
复制
# 高级用法
- 根据配置 formalDataExtra,根据 yb-formily 配置表单项内容,其中 controlled、validate 不会被覆盖
values
: 配置单个值表单项配置A
: 配置范围值的 A 表单项配置B
: 配置范围值的 B 表单项配置
代码中 formalData 默认配置
const oneParamsConditions = ['<', '≤', '≥', '>', '=', '≠', 'like'];
const twoParamsConditions = ['(a,b)', '(a,b]', '[a,b)', '[a,b]'];
const formalData = [
{
title: '',
type: 'select',
field: 'filterType',
value: conditionsSymbolList[0],
options: conditionsSymbolList,
props: {
optionInValue: true,
},
validate: [
{
required: true,
message: '必填',
trigger: 'change',
},
],
},
{
title: '',
type: 'select',
field: 'values',
options: [],
controlled: {
rendered: function ({ formModel }) {
return oneParamsConditions.includes(formModel.filterType.value);
},
},
validate: [
{
required: true,
message: '必填',
trigger: 'change',
},
{
validator: (rule, value, callback) => {
if (Array.isArray(value) && !value.length)
return callback('必填');
callback();
},
trigger: 'change',
},
],
props: {
clearable: true,
},
},
{
title: 'A',
type: 'select',
field: 'A',
options: [],
controlled: {
// 被控制是否渲染,当前控件是否渲染,取决于如何 return true/false
rendered: function ({ formModel }) {
return twoParamsConditions.includes(formModel.filterType.value);
},
},
validate: [
{
required: true,
message: '必填',
trigger: 'change',
},
{
validator: (rule, value, callback) => {
if (Array.isArray(value))
return callback('此类条件只能选一个值');
if (this.filterFormModel.A === this.filterFormModel.B) {
return callback('范围值不应该相同');
}
callback();
},
trigger: 'change',
},
],
props: {
clearable: true,
},
},
{
title: 'B',
type: 'select',
field: 'B',
options: [],
controlled: {
// 被控制是否渲染,当前控件是否渲染,取决于如何 return true/false
rendered: function ({ formModel }) {
return twoParamsConditions.includes(formModel.filterType.value);
},
},
validate: [
{
required: true,
message: '必填',
trigger: 'change',
},
{
validator: (rule, value, callback) => {
if (Array.isArray(value))
return callback('此类条件只能选一个值');
if (this.filterFormModel.A === this.filterFormModel.B) {
return callback('范围值不应该相同');
}
callback();
},
trigger: 'change',
},
],
props: {
clearable: true,
},
},
];
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
过滤值组件切换为 datePicker
过滤值组件切换为 paginationSelect
复制
# YbConditionSelect Attributes
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
value/v-model | 绑定值 | object | - | -- |
placeholder | 占位内容 | string | - | 请选择 |
name | 原生属性 | string | - | -- |
clearable | 是否显示清除按钮 | boolean | - | false |
disabled | 是否禁用 | boolean | - | false |
size | 输入框尺寸 | string | large/small/mini | -- |
formatValueText | 将选中值显示在输入框的内容格式化 | function | - | -- |
conditions | 指定条件选项,默认显示组件内部全部条件选项 | array | 详见conditions | ['<', '≤', '>','≥', '=', '≠', 'like', '(a,b)', '(a,b]', '[a,b)', '[a,b]'] |
formalDataExtra | 根据 yb-formily 配置表单项内容,其中 controlled、validate 不会被覆盖 | object | 详见高级使用 | {} |
- | 其他属性同 el-dialog (opens new window) ,其中剔除 visible 属性 | |||
title | Dialog 的标题 ,也可通过具名 slot:title 传入 | string | - | 过滤条件 |
width | Dialog 的宽度 | string | - | 移动端:90%,其余:'400px' |
top | Dialog CSS 中的 margin-top 值 | string | - | '30vh' |
appendToBody | Dialog 自身是否插入至 body 元素上 | boolean | - | true |
# YbConditionSelect conditions 可选值
可选值 | 说明 |
---|---|
= | 等于 |
≠ | 不等于 |
< | 小于 |
≤ | 小于等于 |
> | 大于 |
≥ | 大于等于 |
like | 模糊 |
(a,b) | 大于 A 小于 B |
(a,b] | 大于 A 小于等于 B |
[a,b) | 大于等于 A 小于 B |
[a,b] | 大于等于 A 小于等于 B |
# YbConditionSelect Slots
name | 说明 |
---|---|
title | Dialog 的标题 |
# YbConditionSelect Events
事件名称 | 说明 | 回调参数 |
---|---|---|
change | 选定值改变时触发 | 目前的选中值 value |
visible-change | 弹窗出现/隐藏时触发 | 出现则为 true,隐藏则为 false |
clear | 可清空的单选模式下用户点击清空按钮时触发 | |
blur | 当 input 失去焦点时触发 | (event: Event) |
focus | 当 input 获得焦点时触发 | (event: Event) |
# YbConditionSelect Methods
事件名称 | 说明 | 参数 |
---|---|---|
blur | 使 input 获取焦点 | |
focus | 使 input 失去焦点,并隐藏下拉框 |
上次更新: 2024/04/29, 15:15:24