mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
fix: Basic node data cannot be obtained in the workflow
This commit is contained in:
parent
6434ba71b7
commit
83d8ee6610
|
|
@ -101,19 +101,3 @@ class KnowledgeWorkflowManage(WorkflowManage):
|
|||
current_node.node_chunk.end()
|
||||
QuerySet(KnowledgeAction).filter(id=self.params.get('knowledge_action_id')).update(
|
||||
details=self.get_runtime_details())
|
||||
|
||||
def get_reference_field(self, node_id: str, fields: List[str]):
|
||||
"""
|
||||
@param node_id: 节点id
|
||||
@param fields: 字段
|
||||
@return:
|
||||
"""
|
||||
if node_id == 'knowledge-base-node':
|
||||
return INode.get_field(self.context, fields)
|
||||
elif node_id == 'chat':
|
||||
return INode.get_field(self.chat_context, fields)
|
||||
else:
|
||||
node = self.get_node_by_id(node_id)
|
||||
if node:
|
||||
return node.get_reference_field(fields)
|
||||
return None
|
||||
|
|
|
|||
|
|
@ -77,6 +77,22 @@ class AppNode extends HtmlResize.view {
|
|||
children: this.props.model.properties?.config?.chatFields || [],
|
||||
})
|
||||
}
|
||||
if (this.props.model.type === 'knowledge-base-node') {
|
||||
let globalFields = []
|
||||
if (this.props.model.properties.user_input_field_list) {
|
||||
globalFields = this.props.model.properties.user_input_field_list.map((item: any) => ({
|
||||
label: item.label.label,
|
||||
value: item.field,
|
||||
}))
|
||||
}
|
||||
|
||||
result.push({
|
||||
value: 'global',
|
||||
label: t('views.workflow.variable.global'),
|
||||
type: 'global',
|
||||
children: globalFields,
|
||||
})
|
||||
}
|
||||
result.push({
|
||||
value: this.props.model.id,
|
||||
icon: this.props.model.properties.node_data?.icon,
|
||||
|
|
|
|||
|
|
@ -155,13 +155,7 @@ function refreshFieldList(data: any, index: any) {
|
|||
inputFieldList.value.push(data)
|
||||
}
|
||||
UserFieldFormDialogRef.value.close()
|
||||
const fields = inputFieldList.value.map((item) => ({
|
||||
label: item.label.label,
|
||||
value: item.field,
|
||||
}))
|
||||
|
||||
set(props.nodeModel.properties, 'user_input_field_list', cloneDeep(inputFieldList.value))
|
||||
set(props.nodeModel.properties.config, 'fields', fields)
|
||||
onDragHandle()
|
||||
}
|
||||
|
||||
|
|
@ -217,12 +211,6 @@ onMounted(() => {
|
|||
inputFieldList.value = cloneDeep(props.nodeModel.properties.user_input_field_list)
|
||||
}
|
||||
|
||||
const fields = inputFieldList.value.map((item) => ({
|
||||
label: item.label.label,
|
||||
value: item.field,
|
||||
}))
|
||||
set(props.nodeModel.properties.config, 'fields', fields)
|
||||
|
||||
onDragHandle()
|
||||
})
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,24 +1,60 @@
|
|||
<template>
|
||||
<NodeContainer :nodeModel="nodeModel">
|
||||
<UserInputFieldTable ref="UserInputFieldTableFef" :node-model="nodeModel" />
|
||||
<template v-if="nodeFields.length > 0">
|
||||
<h5 class="title-decoration-1 mb-8 mt-8">
|
||||
{{ $t('common.param.outputParam') }}
|
||||
</h5>
|
||||
<template v-for="(item, index) in nodeFields" :key="index">
|
||||
<div
|
||||
class="flex-between border-r-6 p-8-12 mb-8 layout-bg lighter"
|
||||
@mouseenter="showicon = index"
|
||||
@mouseleave="showicon = null"
|
||||
>
|
||||
<span class="break-all">{{ item.label }} {{ '{' + item.value + '}' }}</span>
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
:content="$t('views.workflow.setting.copyParam')"
|
||||
placement="top"
|
||||
v-if="showicon === index"
|
||||
>
|
||||
<el-button link @click="copyClick(item.globeLabel)" style="padding: 0">
|
||||
<AppIcon iconName="app-copy"></AppIcon>
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</NodeContainer>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { set } from 'lodash'
|
||||
import NodeContainer from '@/workflow/common/NodeContainer.vue'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import { ref, computed, onMounted, inject } from 'vue'
|
||||
import { t } from '@/locales'
|
||||
import UserInputFieldTable from './component/UserInputFieldTable.vue'
|
||||
import { copyClick } from '@/utils/clipboard'
|
||||
import { set } from 'lodash'
|
||||
|
||||
import UserInputFieldTable from './component/UserInputFieldTable.vue'
|
||||
const showicon = ref<number | null>(null)
|
||||
const getResourceDetail = inject('getResourceDetail') as any
|
||||
|
||||
const props = defineProps<{ nodeModel: any }>()
|
||||
|
||||
const UserInputFieldTableFef = ref()
|
||||
|
||||
const baseNodeFormRef = ref<FormInstance>()
|
||||
|
||||
const nodeFields = computed(() => {
|
||||
if (props.nodeModel.properties.user_input_field_list) {
|
||||
const fileds = props.nodeModel.properties.user_input_field_list.map((item: any) => ({
|
||||
label: typeof item.label == 'string' ? item.label : item.label.label,
|
||||
value: item.field,
|
||||
globeLabel: `{{global.${typeof item.label == 'string' ? item.label : item.label.label}}}`,
|
||||
globeValue: `{{context['global'].${item.field}}}`,
|
||||
}))
|
||||
set(props.nodeModel.properties.config, 'globalFields', fileds)
|
||||
return fileds
|
||||
}
|
||||
set(props.nodeModel.properties.config, 'globalFields', [])
|
||||
return []
|
||||
})
|
||||
const resource = getResourceDetail()
|
||||
|
||||
onMounted(() => {})
|
||||
|
|
|
|||
Loading…
Reference in New Issue