BasicRelations.vue
1.6 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
<script lang="ts" setup>
import { unref } from 'vue';
import { EdgeBindDataFieldEnum, EdgeBindDataFieldNameEnum } from '../../../enum/node';
import { ConnectionModalDefineExposeType } from '../../../types';
import { NodeData } from '../../../types/node';
import { BasicForm, FormSchema, useForm } from '/@/components/Form';
defineProps<{
config: NodeData;
}>();
const getSchemas = (options: string[] = []): FormSchema[] => {
return [
{
field: EdgeBindDataFieldEnum.TYPE,
component: 'Select',
label: EdgeBindDataFieldNameEnum.TYPE,
componentProps: {
getPopupContainer: () => document.body,
options: unref(options).map((item) => ({ label: item, value: item })),
mode: 'multiple',
placeholder: '请选择链接标签',
},
},
];
};
const [register, { updateSchema, setFieldsValue, getFieldsValue }] = useForm({
showActionButtonGroup: false,
schemas: getSchemas(),
});
const getValue: ConnectionModalDefineExposeType['getFieldsValue'] = async () => {
return getFieldsValue();
};
const setValue: ConnectionModalDefineExposeType['setFieldsValue'] = async (value, nodeData) => {
const { type } = value || {};
const relationTypes =
unref(nodeData)?.config?.configurationDescriptor.nodeDefinition.relationTypes;
await updateSchema(getSchemas(relationTypes));
setFieldsValue(type);
};
defineExpose({
getFieldsValue: getValue,
setFieldsValue: setValue,
} as ConnectionModalDefineExposeType);
</script>
<template>
<BasicForm @register="register" />
</template>