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
| import type { SelectRuleOption } from '#/components/form-create/typing';
|
| import { buildUUID, cloneDeep } from '@vben/utils';
|
| import {
| localeProps,
| makeRequiredRule,
| } from '#/components/form-create/helpers';
| import { selectRule } from '#/components/form-create/rules/data';
|
| /**
| * 通用选择器规则 hook
| *
| * @param option 规则配置
| */
| export function useSelectRule(option: SelectRuleOption) {
| const label = option.label;
| const name = option.name;
| const rules = cloneDeep(selectRule);
| return {
| icon: option.icon,
| label,
| name,
| event: option.event,
| rule() {
| // 构建基础规则
| const baseRule: any = {
| type: name,
| field: buildUUID(),
| title: label,
| info: '',
| $required: false,
| };
| // 将自定义 props 的默认值添加到 rule 的 props 中
| if (option.props && option.props.length > 0) {
| baseRule.props = {};
| option.props.forEach((prop: any) => {
| if (prop.field && prop.value !== undefined) {
| baseRule.props[prop.field] = prop.value;
| }
| });
| }
| return baseRule;
| },
| props(_: any, { t }: any) {
| if (!option.props) {
| option.props = [];
| }
| return localeProps(t, `${name}.props`, [
| makeRequiredRule(),
| ...option.props,
| ...rules,
| ]);
| },
| };
| }
|
|