mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
fix: 修复多个bug
This commit is contained in:
parent
31936c8615
commit
09fc65f4e3
|
|
@ -4,6 +4,4 @@
|
|||
<RouterView />
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
<style scoped></style>
|
||||
|
|
|
|||
|
|
@ -150,8 +150,14 @@ const clickShowDebug = () => {
|
|||
}
|
||||
})
|
||||
.catch((res: any) => {
|
||||
const keys = Object.keys(res)
|
||||
MsgError(res[keys[0]]?.[0]?.message)
|
||||
const node = res.node
|
||||
const err_message = res.errMessage
|
||||
if (typeof err_message == 'string') {
|
||||
MsgError(res.node.properties?.stepName + '节点 ' + err_message)
|
||||
} else {
|
||||
const keys = Object.keys(err_message)
|
||||
MsgError(node.properties?.stepName + '节点 ' + err_message[keys[0]]?.[0]?.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
function clickoutsideDebug() {
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
:options="options"
|
||||
@visible-change="visibleChange"
|
||||
v-bind="$attrs"
|
||||
v-model="data"
|
||||
separator=" > "
|
||||
>
|
||||
<template #default="{ node, data }">
|
||||
|
|
@ -17,12 +18,22 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ref, onMounted, computed } from 'vue'
|
||||
import { iconComponent } from '../icons/utils'
|
||||
const props = defineProps<{
|
||||
nodeModel: any
|
||||
modelValue: Array<any>
|
||||
}>()
|
||||
const emit = defineEmits(['update:modelValue'])
|
||||
|
||||
const data = computed({
|
||||
set: (value) => {
|
||||
emit('update:modelValue', value)
|
||||
},
|
||||
get: () => {
|
||||
return props.modelValue
|
||||
}
|
||||
})
|
||||
const options = ref<Array<any>>([])
|
||||
|
||||
function visibleChange(bool: boolean) {
|
||||
|
|
@ -63,6 +74,26 @@ function getIncomingNode(id: string) {
|
|||
options.value.unshift(firstElement)
|
||||
}
|
||||
}
|
||||
const validate = () => {
|
||||
getIncomingNode(props.nodeModel.id)
|
||||
if (!data.value) {
|
||||
return Promise.reject('引用变量必填')
|
||||
}
|
||||
if (data.value.length < 2) {
|
||||
return Promise.reject('引用变量错误')
|
||||
}
|
||||
const node_id = data.value[0]
|
||||
const node_field = data.value[1]
|
||||
const nodeParent = options.value.find((item: any) => item.value === node_id)
|
||||
if (!nodeParent) {
|
||||
return Promise.reject('不存在的引用变量')
|
||||
}
|
||||
if (!nodeParent.children.some((item: any) => item.value === node_field)) {
|
||||
return Promise.reject('不存在的引用变量')
|
||||
}
|
||||
return Promise.resolve('')
|
||||
}
|
||||
defineExpose({ validate })
|
||||
onMounted(() => {
|
||||
getIncomingNode(props.nodeModel.id)
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,10 +1,5 @@
|
|||
<template>
|
||||
<div
|
||||
@mousedown="mousedown"
|
||||
@mouseup="() => props.nodeModel.graphModel.toFront(props.nodeModel.id)"
|
||||
class="workflow-node-container p-16"
|
||||
style="overflow: visible"
|
||||
>
|
||||
<div @mousedown="mousedown" class="workflow-node-container p-16" style="overflow: visible">
|
||||
<div
|
||||
class="step-container p-16"
|
||||
:class="props.nodeModel.isSelected ? 'isSelected' : ''"
|
||||
|
|
@ -117,6 +112,9 @@ function editName(val: string) {
|
|||
}
|
||||
const mousedown = () => {
|
||||
props.nodeModel.graphModel.toFront(props.nodeModel.id)
|
||||
props.nodeModel.graphModel.clearSelectElements()
|
||||
props.nodeModel.isSelected = true
|
||||
props.nodeModel.isHovered = true
|
||||
}
|
||||
const showicon = ref<number | null>(null)
|
||||
const copyNode = () => {
|
||||
|
|
|
|||
|
|
@ -43,6 +43,12 @@ class AppNode extends HtmlResize.view {
|
|||
props.model.properties.stepName = props.model.properties.stepName + (filterNodes.length - 1)
|
||||
}
|
||||
}
|
||||
if (props.model.properties?.fields?.length > 0) {
|
||||
props.model.properties.fields.map((item: any) => {
|
||||
item['globeLabel'] = `{{${props.model.properties.stepName}.${item.value}}}`
|
||||
item['globeValue'] = `{{context['${props.model.id}'].${item.value}}}`
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
getAnchorShape(anchorData: any) {
|
||||
|
|
|
|||
|
|
@ -112,7 +112,13 @@ export const menuNodes = [
|
|||
text: '指定回复内容,引用变量会转换为字符串进行输出',
|
||||
label: '指定回复',
|
||||
properties: {
|
||||
stepName: '指定回复'
|
||||
stepName: '指定回复',
|
||||
fields: [
|
||||
{
|
||||
label: '内容',
|
||||
value: 'answer'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -196,7 +196,9 @@ const modelOptions = ref<any>(null)
|
|||
const providerOptions = ref<Array<Provider>>([])
|
||||
|
||||
const validate = () => {
|
||||
return aiChatNodeFormRef.value?.validate()
|
||||
return aiChatNodeFormRef.value?.validate().catch((err) => {
|
||||
return Promise.reject({ node: props.nodeModel, errMessage: err })
|
||||
})
|
||||
}
|
||||
|
||||
function getModel() {
|
||||
|
|
|
|||
|
|
@ -80,7 +80,9 @@ const form_data = computed({
|
|||
const baseNodeFormRef = ref<FormInstance>()
|
||||
|
||||
const validate = () => {
|
||||
return baseNodeFormRef.value?.validate()
|
||||
return baseNodeFormRef.value?.validate().catch((err) => {
|
||||
return Promise.reject({ node: props.nodeModel, errMessage: err })
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@
|
|||
}"
|
||||
>
|
||||
<NodeCascader
|
||||
ref="nodeCascaderRef"
|
||||
:nodeModel="nodeModel"
|
||||
class="w-full"
|
||||
placeholder="请选择变量"
|
||||
|
|
@ -184,9 +185,15 @@ const form_data = computed({
|
|||
})
|
||||
|
||||
const ConditionNodeFormRef = ref<FormInstance>()
|
||||
|
||||
const nodeCascaderRef = ref()
|
||||
const validate = () => {
|
||||
return ConditionNodeFormRef.value?.validate()
|
||||
const v_list = [
|
||||
ConditionNodeFormRef.value?.validate(),
|
||||
...nodeCascaderRef.value.map((item: any) => item.validate())
|
||||
]
|
||||
return Promise.all(v_list).catch((err) => {
|
||||
return Promise.reject({ node: props.nodeModel, errMessage: err })
|
||||
})
|
||||
}
|
||||
|
||||
function addBranch() {
|
||||
|
|
|
|||
|
|
@ -195,7 +195,9 @@ const modelOptions = ref<any>(null)
|
|||
const providerOptions = ref<Array<Provider>>([])
|
||||
|
||||
const validate = () => {
|
||||
return questionNodeFormRef.value?.validate()
|
||||
return questionNodeFormRef.value?.validate().catch((err) => {
|
||||
return Promise.reject({ node: props.nodeModel, errMessage: err })
|
||||
})
|
||||
}
|
||||
|
||||
function getModel() {
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
</MdEditor>
|
||||
<NodeCascader
|
||||
v-else
|
||||
ref="nodeCascaderRef"
|
||||
:nodeModel="nodeModel"
|
||||
class="w-full"
|
||||
placeholder="请选择检索问题输入"
|
||||
|
|
@ -98,9 +99,20 @@ function submitDialog() {
|
|||
set(props.nodeModel.properties.node_data, 'content', cloneContent.value)
|
||||
dialogVisible.value = false
|
||||
}
|
||||
// onMounted(() => {
|
||||
// set(props.nodeModel, 'validate', validate)
|
||||
// })
|
||||
const replyNodeFormRef = ref()
|
||||
const nodeCascaderRef = ref()
|
||||
const validate = () => {
|
||||
return Promise.all([
|
||||
nodeCascaderRef.value ? nodeCascaderRef.value.validate() : Promise.resolve(''),
|
||||
replyNodeFormRef.value?.validate()
|
||||
]).catch((err: any) => {
|
||||
return Promise.reject({ node: props.nodeModel, errMessage: err })
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
set(props.nodeModel, 'validate', validate)
|
||||
})
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.reply-node-editor {
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item label="检索问题输入">
|
||||
<NodeCascader
|
||||
ref="nodeCascaderRef"
|
||||
:nodeModel="nodeModel"
|
||||
class="w-full"
|
||||
placeholder="请选择检索问题输入"
|
||||
|
|
@ -121,7 +122,7 @@ const {
|
|||
} = app.config.globalProperties.$route as any
|
||||
|
||||
const props = defineProps<{ nodeModel: any }>()
|
||||
|
||||
const nodeCascaderRef = ref()
|
||||
const form = {
|
||||
dataset_id_list: [],
|
||||
dataset_setting: {
|
||||
|
|
@ -192,7 +193,12 @@ function refresh() {
|
|||
}
|
||||
|
||||
const validate = () => {
|
||||
return DatasetNodeFormRef.value?.validate()
|
||||
return Promise.all([
|
||||
nodeCascaderRef.value.validate(),
|
||||
DatasetNodeFormRef.value?.validate()
|
||||
]).catch((err) => {
|
||||
return Promise.reject({ node: props.nodeModel, errMessage: err })
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue