Service.vue
3.02 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
101
102
103
104
105
106
107
108
109
110
111
112
113
<template>
<BasicForm @register="register" />
</template>
<script lang="ts" setup>
import { BasicForm, useForm } from '/@/components/Form';
import { serviceSchemas } from './config';
import { FunctionType } from './config';
import { StructFormValue } from '/@/components/Form/src/externalCompns/components/StructForm/type';
import { ModelOfMatterParams, StructJSON } from '/@/api/device/model/modelOfMatterModel';
import { DeviceRecord } from '/@/api/device/model/deviceModel';
import { excludeIdInStructJSON } from '/@/components/Form/src/externalCompns/components/StructForm/util';
import { OpenModelMode } from '../types';
const props = defineProps<{
record: DeviceRecord;
openModalMode: OpenModelMode;
}>();
const [register, { validate, resetFields, setFieldsValue, setProps }] = useForm({
labelWidth: 100,
schemas: serviceSchemas(props.record.transportType === 'TCP'),
actionColOptions: {
span: 14,
},
disabled: props.openModalMode === OpenModelMode.VIEW,
showResetButton: false,
submitOnReset: false,
showActionButtonGroup: false,
});
const setDisable = (flag: boolean) => {
setProps({ disabled: flag });
};
//回显数据
const setFormData = (record: ModelOfMatterParams) => {
const { functionJson = {}, functionName, identifier, remark, callType } = record;
const { inputData = [], outputData } = functionJson;
const { serviceCommand } =
(inputData.at(0) as unknown as { serviceCommand: string }) ||
({} as { serviceCommand: string });
const value = {
functionName,
identifier,
remark,
inputData,
outputData,
serviceCommand,
callType,
};
setFieldsValue(value);
};
//获取数据
async function getFormData() {
const _values = (await validate()) as StructFormValue;
const {
functionName,
remark,
identifier,
inputData: _inputData = [],
outputData: _outputData = [],
serviceCommand,
callType,
} = _values;
if (!_values) return {};
const outputData = (_outputData as unknown as StructJSON[]).map((item) => {
const dataType = excludeIdInStructJSON(item.dataType!);
return {
...item,
dataType,
};
});
const inputData = (_inputData as unknown as StructJSON[]).map((item) => {
const dataType = excludeIdInStructJSON(item.dataType!);
return {
...item,
dataType,
};
});
const value = {
functionName,
identifier,
remark,
functionType: FunctionType.SERVICE,
callType,
functionJson: {
inputData,
outputData,
...(serviceCommand
? { inputData: [{ serviceCommand: serviceCommand.replaceAll(/\s/g, '').toUpperCase() }] }
: {}),
},
} as ModelOfMatterParams;
return value;
}
//清空数据
const resetFormData = () => {
resetFields();
};
defineExpose({
setFormData,
resetFormData,
getFormData,
setDisable,
});
</script>
<style lang="less" scoped></style>