From 57f29f855b708717e7ef8e6adb0ea526b5dc698c Mon Sep 17 00:00:00 2001 From: selcarpa Date: Fri, 26 Dec 2025 17:27:36 +0800 Subject: [PATCH] feat(nodeEdit): Add node configurator and schema field components - Introduced the NodeConfigurator component for node configuration - Added the SchemaField component for schema field rendering - Changed node parameters to an object configuration model - Added error handling and notification mechanisms - Modified the CoreTypes definition method to avoid Proxy issues --- src/components.d.ts | 2 + src/components/nodeEdit/SchemaField.vue | 132 +++++++++++++++++++ src/components/nodeEdit/addNode.vue | 49 ++++--- src/components/nodeEdit/nodeConfigurator.vue | 52 +++++++- src/locales/en.json | 6 +- src/locales/zh.json | 4 +- src/utils/core/CoreDef.ts | 6 +- src/utils/core/configurator/schema/schema.ts | 16 ++- 8 files changed, 236 insertions(+), 31 deletions(-) create mode 100644 src/components/nodeEdit/SchemaField.vue diff --git a/src/components.d.ts b/src/components.d.ts index 02102df..7b5fc82 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -13,11 +13,13 @@ declare module 'vue' { LanguageSwitcher: typeof import('./components/LanguageSwitcher.vue')['default'] MainConsole: typeof import('./components/index/mainConsole.vue')['default'] MainDrawer: typeof import('./components/index/mainDrawer.vue')['default'] + NodeConfigurator: typeof import('./components/nodeEdit/nodeConfigurator.vue')['default'] NodeList: typeof import('./components/nodeEdit/nodeList.vue')['default'] NodesFloatButton: typeof import('./components/nodeEdit/nodesFloatButton.vue')['default'] NotificationProvider: typeof import('./components/notify/notificationProvider.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + SchemaField: typeof import('./components/nodeEdit/SchemaField.vue')['default'] Spary: typeof import('./components/index/spary.vue')['default'] } } diff --git a/src/components/nodeEdit/SchemaField.vue b/src/components/nodeEdit/SchemaField.vue new file mode 100644 index 0000000..5cc30a1 --- /dev/null +++ b/src/components/nodeEdit/SchemaField.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/components/nodeEdit/addNode.vue b/src/components/nodeEdit/addNode.vue index 9912fb5..f774e36 100644 --- a/src/components/nodeEdit/addNode.vue +++ b/src/components/nodeEdit/addNode.vue @@ -6,6 +6,7 @@ import {nodeRepository} from "@/entities/node.ts"; import {notify} from "@/components/notify/notifyStore.ts"; import {ConfigurationSchema} from "@/utils/core/configurator/schema/schema.ts"; import {CoreTypes} from "@/utils/core/CoreDef.ts"; +import NodeConfigurator from "@/components/nodeEdit/nodeConfigurator.vue"; const { t } = useI18n() @@ -14,6 +15,7 @@ const props = defineProps<{ groupId: string }>() const allGroups = ref([]) const selectedGroupId = ref(null) const configurationSchema= ref(null) +const nodeConfig = ref(null) const loadGroups = async () => { allGroups.value = await groupRepository.findAll() @@ -24,33 +26,47 @@ const loadGroups = async () => { onMounted(loadGroups) const nodeAlias = ref('') -const nodeArguments = ref(null) const isAdding = ref(false) const isAddDisabled = computed(() => { return !nodeAlias.value || nodeAlias.value.length < 3 || nodeAlias.value.length > 15 || isAdding.value }) +function onConfigurationSchemaChange(value: any) { + console.log('Configuration schema changed:', value); + // 确保设置的值是正确的对象结构 + configurationSchema.value = value; +} + async function addNode() { if (!isAddDisabled.value && selectedGroupId.value !== null) { isAdding.value = true - await nodeRepository.insert({ - created_at: null, - id: null, - updated_at: null, - alias: nodeAlias.value, - arguments: nodeArguments.value, - group_id: selectedGroupId.value - }) - notify(t('addNode.nodeAddedSuccess')) - isAdding.value = false + try { + await nodeRepository.insert({ + created_at: null, + id: null, + updated_at: null, + alias: nodeAlias.value, + arguments: nodeConfig.value || {}, + group_id: selectedGroupId.value + }) + notify(t('addNode.nodeAddedSuccess')) + // Reset form after successful submission + nodeAlias.value = '' + nodeConfig.value = null + } catch (error) { + console.error('Error adding node:', error) + notify(t('addNode.nodeAddedError')) + } finally { + isAdding.value = false + } } }