diff --git a/ui/src/workflow-canvas/core/NodeCascader.vue b/ui/src/workflow-canvas/core/NodeCascader.vue
index 1e5d2ee893c..7143b28da8f 100644
--- a/ui/src/workflow-canvas/core/NodeCascader.vue
+++ b/ui/src/workflow-canvas/core/NodeCascader.vue
@@ -4,6 +4,7 @@ import type { WorkflowNodeModel } from '@/workflow-canvas/core/workflow-node'
import type { WorkflowNodeField } from '@/workflow-canvas/types'
import { WorkflowMode } from '@/workflow-canvas/types'
import { iconComponent } from '../icons/utils'
+import type { BaseNodeModel } from '@logicflow/core'
defineOptions({ name: 'WorkflowNodeCascader', inheritAttrs: false })
@@ -15,7 +16,7 @@ const props = withDefaults(
defineProps<{
global?: boolean
modelValue: string[]
- nodeModel: WorkflowNodeModel
+ nodeModel: BaseNodeModel
}>(),
{ global: false },
)
diff --git a/ui/src/workflow-canvas/core/NodeContainer.vue b/ui/src/workflow-canvas/core/NodeContainer.vue
index ad985578e65..c1d0277c6a1 100644
--- a/ui/src/workflow-canvas/core/NodeContainer.vue
+++ b/ui/src/workflow-canvas/core/NodeContainer.vue
@@ -1,5 +1,5 @@
-
+
节点设置
set(props.nodeModel, 'validate', validate))
v-if="formData.model_id_type === 'reference'"
ref="nodeCascaderRef"
v-model="formData.model_id_reference"
- :node-model="props.nodeModel"
+ :node-model="model"
class="w-full"
placeholder="请选择变量"
/>
diff --git a/ui/src/workflow-canvas/nodes/base-node/index.vue b/ui/src/workflow-canvas/nodes/base-node/index.vue
index eb5200d6031..3f2f3d80af4 100644
--- a/ui/src/workflow-canvas/nodes/base-node/index.vue
+++ b/ui/src/workflow-canvas/nodes/base-node/index.vue
@@ -1,41 +1,41 @@
-
+
BaseNodeModel
+const model = getModel()
interface ReplyNodeForm {
content: string
fields: string[]
@@ -15,23 +17,22 @@ interface ReplyNodeForm {
reply_type: 'content' | 'referencing'
}
-const props = defineProps<{ nodeModel: WorkflowNodeModel }>()
const formRef = useTemplateRef('formRef')
const nodeCascaderRef = useTemplateRef>('nodeCascaderRef')
const formData = computed({
get: () => {
- if (!props.nodeModel.properties.node_data) {
- set(props.nodeModel.properties, 'node_data', {
+ if (!model.properties.node_data) {
+ model.properties.node_data = {
content: '',
fields: [],
is_result: true,
reply_type: 'content',
- })
+ }
}
- return props.nodeModel.properties.node_data as ReplyNodeForm
+ return model.properties.node_data as ReplyNodeForm
},
- set: (value) => set(props.nodeModel.properties, 'node_data', value),
+ set: (value) => (model.properties.node_data = value),
})
function validate() {
@@ -40,19 +41,19 @@ function validate() {
? nodeCascaderRef.value?.validate()
: Promise.resolve(),
formRef.value?.validate(),
- ]).catch((error) => Promise.reject({ node: props.nodeModel, errMessage: error }))
+ ]).catch((error) => Promise.reject({ node: model, errMessage: error }))
}
onMounted(() => {
- if (formData.value.is_result === undefined && isLastNode(props.nodeModel)) {
+ if (formData.value.is_result === undefined && isLastNode(model)) {
formData.value.is_result = true
}
- set(props.nodeModel, 'validate', validate)
+ model.validate = validate
})
-
+
@@ -69,7 +70,7 @@ onMounted(() => {
v-if="formData.reply_type === 'referencing'"
ref="nodeCascaderRef"
v-model="formData.fields"
- :node-model="props.nodeModel"
+ :node-model="model"
class="w-full"
placeholder="请选择变量"
/>
diff --git a/ui/src/workflow-canvas/nodes/start-node/index.vue b/ui/src/workflow-canvas/nodes/start-node/index.vue
index 429988c8eb1..6012e9be13a 100644
--- a/ui/src/workflow-canvas/nodes/start-node/index.vue
+++ b/ui/src/workflow-canvas/nodes/start-node/index.vue
@@ -5,6 +5,7 @@ import type { WorkflowNodeField, WorkflowNodeModel } from '@/workflow-canvas/cor
import NodeContainer from '@/workflow-canvas/core/NodeContainer.vue'
import { WorkflowNodeType } from '@/workflow-canvas/types'
import { copyText } from '@/utils/clipboard'
+import type { BaseEdgeModel, BaseNodeModel, GraphModel } from '@logicflow/core'
defineOptions({ name: 'WorkflowStartNode' })
@@ -15,9 +16,9 @@ interface SourceField {
variable?: string
}
-const props = defineProps<{ nodeModel: WorkflowNodeModel }>()
-const nodeModel = props.nodeModel
-const nodeConfig = nodeModel.properties.config ?? (nodeModel.properties.config = {})
+const getModel = inject('getModel') as () => BaseNodeModel
+const model = getModel()
+const nodeConfig = model.properties.config ?? (model.properties.config = {})
const globalFields = computed(() => (nodeConfig.globalFields ?? []) as WorkflowNodeField[])
const chatFields = computed(() => (nodeConfig.chatFields ?? []) as WorkflowNodeField[])
@@ -31,7 +32,7 @@ function formatFieldReference(fieldValue: string) {
}
function refreshFields() {
- const baseNode = props.nodeModel.graphModel.getNodeModelById(WorkflowNodeType.Base)
+ const baseNode = model.graphModel.getNodeModelById(WorkflowNodeType.Base)
const userFields = (
cloneDeep(baseNode?.properties.user_input_field_list ?? []) as SourceField[]
).map((field: SourceField) => ({
@@ -65,18 +66,18 @@ function refreshFields() {
onMounted(() => {
refreshFields()
- props.nodeModel.graphModel.eventCenter.on('refreshFieldList', refreshFields)
- props.nodeModel.graphModel.eventCenter.on('chatFieldList', refreshFields)
+ model.graphModel.eventCenter.on('refreshFieldList', refreshFields)
+ model.graphModel.eventCenter.on('chatFieldList', refreshFields)
})
onBeforeUnmount(() => {
- props.nodeModel.graphModel.eventCenter.off('refreshFieldList', refreshFields)
- props.nodeModel.graphModel.eventCenter.off('chatFieldList', refreshFields)
+ model.graphModel.eventCenter.off('refreshFieldList', refreshFields)
+ model.graphModel.eventCenter.off('chatFieldList', refreshFields)
})
-
+
全局变量