CustomRule.config.ts
2.06 KB
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
import TimeRangePicker from './TimeRangePicker.vue';
import { WeekName } from './config';
import { FormSchema, useComponentRegister } from '/@/components/Form';
import { useI18n } from '/@/hooks/web/useI18n';
const { t } = useI18n(); // 加载国际化
enum FormFieldsEnum {
DAY_OF_WEEK = 'dayOfWeek',
ENABLED = 'enabled',
ENDS_ON = 'endsOn',
STARTS_ON = 'startsOn',
TIME_RANGE = 'timeRange',
}
export interface RuleFormRecordItem {
[FormFieldsEnum.DAY_OF_WEEK]: number;
[FormFieldsEnum.ENABLED]: boolean;
[FormFieldsEnum.TIME_RANGE]: {
[FormFieldsEnum.STARTS_ON]: number;
[FormFieldsEnum.ENDS_ON]: number;
};
}
useComponentRegister('TimeRangePicker', TimeRangePicker);
export const getFormSchemas = (index: number): FormSchema[] => {
return [
{
field: FormFieldsEnum.DAY_OF_WEEK,
label: '',
component: 'InputNumber',
defaultValue: index + 1,
ifShow: false,
},
{
field: FormFieldsEnum.ENABLED,
label: '',
component: 'Checkbox',
defaultValue: false,
renderComponentContent: () => ({
default: () => t(WeekName[index]),
}),
colProps: { span: 5 },
},
{
field: FormFieldsEnum.TIME_RANGE,
label: '',
changeEvent: 'update:value',
valueField: 'value',
component: 'TimeRangePicker',
dynamicDisabled: ({ model }) => !model[FormFieldsEnum.ENABLED],
colProps: { span: 16 },
defaultValue: { startsOn: 0, endsOn: 0 },
dynamicRules: ({ model }) => {
return [
{
required: model[FormFieldsEnum.ENABLED],
validator(_rule, value: Record<'startsOn' | 'endsOn', number>, _callback) {
if (!model[FormFieldsEnum.ENABLED]) return Promise.resolve();
if (!value?.endsOn)
return Promise.reject(t('rule.linkedge.index.pleaseSelectEndTime'));
if (!value?.startsOn)
return Promise.reject(t('rule.linkedge.index.pleaseSelectStartTime'));
return Promise.resolve();
},
},
];
},
},
];
};