fix: 修复多路召回前端校验错误

This commit is contained in:
shaohuzhang1 2024-09-19 14:47:35 +08:00 committed by shaohuzhang1
parent b99df0d27c
commit 4ad2ec5268
2 changed files with 16 additions and 133 deletions

View File

@ -62,62 +62,6 @@
class="custom-slider"
/>
</el-form-item>
<el-form-item
v-if="!isWorkflowType"
:label="$t('views.application.applicationForm.dialogues.noReferencesAction')"
>
<el-form
label-position="top"
ref="noReferencesformRef"
:model="noReferencesform"
:rules="noReferencesRules"
class="w-full"
:hide-required-asterisk="true"
>
<el-radio-group
v-model="form.no_references_setting.status"
class="radio-block mb-16"
>
<div>
<el-radio value="ai_questioning">
<p>
{{ $t('views.application.applicationForm.dialogues.continueQuestioning') }}
</p>
<el-form-item
v-if="form.no_references_setting.status === 'ai_questioning'"
:label="$t('views.application.applicationForm.form.prompt.label')"
prop="ai_questioning"
>
<el-input
v-model="noReferencesform.ai_questioning"
:rows="2"
type="textarea"
maxlength="2048"
:placeholder="defaultValue['ai_questioning']"
/>
</el-form-item>
</el-radio>
</div>
<div class="mt-8">
<el-radio value="designated_answer">
<p>{{ $t('views.application.applicationForm.dialogues.provideAnswer') }}</p>
<el-form-item
v-if="form.no_references_setting.status === 'designated_answer'"
prop="designated_answer"
>
<el-input
v-model="noReferencesform.designated_answer"
:rows="2"
type="textarea"
maxlength="2048"
:placeholder="defaultValue['designated_answer']"
/>
</el-form-item>
</el-radio>
</div>
</el-radio-group>
</el-form>
</el-form-item>
</el-form>
</div>
</el-scrollbar>
@ -127,7 +71,7 @@
<el-button @click.prevent="dialogVisible = false">{{
$t('views.application.applicationForm.buttons.cancel')
}}</el-button>
<el-button type="primary" @click="submit(noReferencesformRef)" :loading="loading">
<el-button type="primary" @click="submit()" :loading="loading">
{{ $t('views.application.applicationForm.buttons.save') }}
</el-button>
</span>
@ -135,15 +79,14 @@
</el-dialog>
</template>
<script setup lang="ts">
import { ref, watch, reactive } from 'vue'
import { ref, watch } from 'vue'
import { cloneDeep } from 'lodash'
import type { FormInstance, FormRules } from 'element-plus'
import { isWorkFlow } from '@/utils/application'
import { t } from '@/locales'
const emit = defineEmits(['refresh'])
const paramFormRef = ref()
const noReferencesformRef = ref()
const paramFormRef = ref<FormInstance>()
const defaultValue = {
ai_questioning: '{question}',
@ -152,95 +95,36 @@ const defaultValue = {
}
const form = ref<any>({
search_mode: 'embedding',
top_n: 3,
similarity: 0.6,
max_paragraph_char_number: 5000,
no_references_setting: {
status: 'ai_questioning',
value: '{question}'
}
})
const noReferencesform = ref<any>({
ai_questioning: defaultValue['ai_questioning'],
designated_answer: defaultValue['designated_answer']
})
const noReferencesRules = reactive<FormRules<any>>({
ai_questioning: [
{
required: true,
message: t('views.application.applicationForm.dialogues.promptPlaceholder'),
trigger: 'blur'
}
],
designated_answer: [
{
required: true,
message: t('views.application.applicationForm.dialogues.concentPlaceholder'),
trigger: 'blur'
}
]
max_paragraph_char_number: 5000
})
const dialogVisible = ref<boolean>(false)
const loading = ref(false)
const isWorkflowType = ref(false)
watch(dialogVisible, (bool) => {
if (!bool) {
form.value = {
search_mode: 'embedding',
top_n: 3,
similarity: 0.6,
max_paragraph_char_number: 5000,
no_references_setting: {
status: 'ai_questioning',
value: ''
}
max_paragraph_char_number: 5000
}
noReferencesform.value = {
ai_questioning: defaultValue['ai_questioning'],
designated_answer: defaultValue['designated_answer']
}
noReferencesformRef.value?.clearValidate()
}
})
const open = (data: any, type?: string) => {
isWorkflowType.value = isWorkFlow(type)
const open = (data: any) => {
form.value = { ...form.value, ...cloneDeep(data) }
noReferencesform.value[form.value.no_references_setting.status] =
form.value.no_references_setting.value
dialogVisible.value = true
}
const submit = async (formEl: FormInstance | undefined) => {
if (isWorkflowType.value) {
delete form.value['no_references_setting']
emit('refresh', form.value)
dialogVisible.value = false
} else {
if (!formEl) return
await formEl.validate((valid, fields) => {
if (valid) {
form.value.no_references_setting.value =
noReferencesform.value[form.value.no_references_setting.status]
emit('refresh', form.value)
dialogVisible.value = false
}
})
}
}
function changeHandle(val: string) {
if (val === 'keywords') {
form.value.similarity = 0
} else {
form.value.similarity = 0.6
}
const submit = () => {
paramFormRef?.value?.validate((valid: boolean, fields: any) => {
if (valid) {
emit('refresh', cloneDeep(form.value))
dialogVisible.value = false
}
})
}
defineExpose({ open })

View File

@ -46,7 +46,6 @@
>
<NodeCascader
:key="index"
ref="nodeCascaderRef"
:nodeModel="nodeModel"
class="w-full"
placeholder="请选择重排内容"
@ -233,7 +232,7 @@ const form = {
const providerOptions = ref<Array<Provider>>([])
const modelOptions = ref<any>(null)
const openParamSettingDialog = () => {
ParamSettingDialogRef.value?.open(form_data.value, 'WORK_FLOW')
ParamSettingDialogRef.value?.open(form_data.value.reranker_setting)
}
const deleteCondition = (index: number) => {
const list = cloneDeep(props.nodeModel.properties.node_data.reranker_reference_list)
@ -263,7 +262,7 @@ const form_data = computed({
}
})
function refreshParam(data: any) {
set(props.nodeModel.properties.node_data, 'reranker_setting', data.dataset_setting)
set(props.nodeModel.properties.node_data, 'reranker_setting', data)
}
function getModel() {
if (id) {