config.ts
3.16 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
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
import { unref } from 'vue';
import { useObjectModelFormContext } from '../useObjectModelFormContext';
import { findDictItemByCode } from '/@/api/system/dict';
import { FormSchema } from '/@/components/Table';
import { DictEnum } from '/@/enums/dictEnum';
import {
DataTypeEnum,
RegisterActionTypeEnum,
RegisterActionTypeNameEnum,
RegisterDataTypeEnum,
} from '/@/enums/objectModelEnum';
export enum FormFieldsEnum {
REGISTER_ADDRESS = 'registerAddress',
DATA_TYPE = 'dataType',
ACTION_TYPE = 'actionType',
ZOOM_FACTOR = 'zoomFactor',
OBJECT_MODEL_TYPE = 'objectModelType',
}
function getActionTypeByObjectModelType(dataType: DataTypeEnum) {
const list: Record<'label' | 'value', string>[] = [];
if (dataType === DataTypeEnum.BOOL) {
list.push({ label: RegisterActionTypeNameEnum.BOOL, value: RegisterActionTypeEnum.BOOL });
} else if (dataType === DataTypeEnum.NUMBER_INT) {
list.push({ label: RegisterActionTypeNameEnum.INT, value: RegisterActionTypeEnum.INT });
} else if (dataType === DataTypeEnum.NUMBER_DOUBLE) {
list.push({ label: RegisterActionTypeNameEnum.DOUBLE, value: RegisterActionTypeEnum.DOUBLE });
} else {
list.push(
...Object.keys(RegisterActionTypeEnum).map((key) => ({
label: RegisterActionTypeNameEnum[key],
value: RegisterActionTypeEnum[key],
}))
);
}
return list;
}
export const getFormSchemas = (): FormSchema[] => {
const { getDataType } = useObjectModelFormContext();
return [
{
field: FormFieldsEnum.REGISTER_ADDRESS,
component: 'RegisterAddressInput',
label: '寄存器地址',
changeEvent: 'update:value',
valueField: 'value',
rules: [{ message: '请输入寄存器地址', required: true, type: 'number' }],
componentProps: {
placeholder: '请输入寄存器地址',
},
},
{
field: FormFieldsEnum.DATA_TYPE,
component: 'ApiSelect',
label: '数据格式',
rules: [{ message: '请选择数据格式', required: true }],
defaultValue: RegisterDataTypeEnum.UN_SHORT,
componentProps: {
api: findDictItemByCode,
params: {
dictCode: DictEnum.REGISTER_DATA_FORMAT,
},
labelField: 'itemText',
valueField: 'itemValue',
placeholder: '请选择数据格式',
getPopupContainer: () => document.body,
},
},
{
field: FormFieldsEnum.ACTION_TYPE,
component: 'Select',
label: '操作类型',
rules: [{ message: '请选择操作类型', required: true }],
componentProps: () => {
return {
options: getActionTypeByObjectModelType(unref(getDataType)),
placeholder: '请选择操作类型',
getPopupContainer: () => document.body,
};
},
},
{
field: FormFieldsEnum.ZOOM_FACTOR,
component: 'InputNumber',
label: '缩放因子',
helpMessage: ['缩放因子不能为0,默认为1'],
defaultValue: 1,
ifShow: ({ model }) =>
![DataTypeEnum.BOOL, DataTypeEnum.STRING].includes(model[FormFieldsEnum.OBJECT_MODEL_TYPE]),
componentProps: {
min: 1,
placeholder: '请输入缩放因子',
},
},
];
};