feat: 问题修复

This commit is contained in:
wangdan-fit2cloud 2024-01-23 16:39:36 +08:00
parent 4b3497ac58
commit 78fa4af45a
5 changed files with 94 additions and 71 deletions

View File

@ -1,6 +1,13 @@
<template> <template>
<el-dialog title="知识库引用" v-model="dialogVisible" destroy-on-close> <el-dialog
class="paragraph-source"
title="知识库引用"
v-model="dialogVisible"
destroy-on-close
append-to-body
>
<el-scrollbar height="450"> <el-scrollbar height="450">
<div class="p-16">
<el-form label-position="top"> <el-form label-position="top">
<el-form-item label="用户问题"> <el-form-item label="用户问题">
<el-input v-model="detail.problem_text" disabled /> <el-input v-model="detail.problem_text" disabled />
@ -43,6 +50,7 @@
</template> </template>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div>
</el-scrollbar> </el-scrollbar>
</el-dialog> </el-dialog>
</template> </template>
@ -71,7 +79,12 @@ const open = (data: any, id?: string) => {
defineExpose({ open }) defineExpose({ open })
</script> </script>
<style lang="scss" scoped> <style lang="scss">
.paragraph-source {
.el-dialog__body {
padding: 8px !important;
}
}
.paragraph-source-card { .paragraph-source-card {
height: 210px; height: 210px;
width: 100%; width: 100%;
@ -79,5 +92,10 @@ defineExpose({ open })
-webkit-line-clamp: 5 !important; -webkit-line-clamp: 5 !important;
height: 110px !important; height: 110px !important;
} }
.active-button {
position: absolute;
right: 16px;
top: 16px;
}
} }
</style> </style>

View File

@ -13,20 +13,20 @@
<el-card shadow="always" class="dialog-card"> <el-card shadow="always" class="dialog-card">
<template v-for="(item, index) in prologueList" :key="index"> <template v-for="(item, index) in prologueList" :key="index">
<div <div
v-if="isMdArray(item)" v-if="item.type === 'question'"
@click="quickProblemHandel(item)" @click="quickProblemHandel(item.str)"
class="problem-button ellipsis-2 mb-8" class="problem-button ellipsis-2 mb-8"
:class="log ? 'disabled' : 'cursor'" :class="log ? 'disabled' : 'cursor'"
> >
<el-icon><EditPen /></el-icon> <el-icon><EditPen /></el-icon>
{{ item }} {{ item.str }}
</div> </div>
<MdPreview <MdPreview
v-else v-else
class="mb-8" class="mb-8"
ref="editorRef" ref="editorRef"
editorId="preview-only" editorId="preview-only"
:modelValue="item" :modelValue="item.str"
/> />
</template> </template>
</el-card> </el-card>
@ -184,7 +184,7 @@ const props = defineProps({
type: Object, type: Object,
default: () => {} default: () => {}
}, },
appId: String, appId: String, //
log: Boolean, log: Boolean,
record: { record: {
type: Array<chatType[]>, type: Array<chatType[]>,
@ -206,13 +206,26 @@ const chatList = ref<any[]>([])
const isDisabledChart = computed( const isDisabledChart = computed(
() => !(inputValue.value && (props.appId || (props.data?.name && props.data?.model_id))) () => !(inputValue.value && (props.appId || (props.data?.name && props.data?.model_id)))
) )
const isMdArray = (val: string) => val.match(/^-\s.*/m)
const prologueList = computed(() => { const prologueList = computed(() => {
const temp = props.data?.prologue const temp = props.data?.prologue
let arr: any = []
const lines = temp?.split('\n') const lines = temp?.split('\n')
return lines lines.forEach((str: string, index: number) => {
if (isMdArray(str)) {
arr[index] = {
type: 'question',
str: str.replace(/^-\s+/, '')
}
} else {
arr[index] = {
type: 'md',
str
}
}
})
return arr
}) })
const isMdArray = (val: string) => val.match(/^-\s.*/m)
watch( watch(
() => props.data, () => props.data,
@ -414,7 +427,7 @@ function chatMessage() {
return reader.read().then(write) return reader.read().then(write)
}) })
.then(() => { .then(() => {
return getSourceDetail(chat) return !props.appId && getSourceDetail(chat)
}) })
.finally(() => { .finally(() => {
ChatManagement.close(chat.id) ChatManagement.close(chat.id)

View File

@ -70,19 +70,6 @@ const rules = reactive({
}) })
const FormRef = ref() const FormRef = ref()
// const beforeUploadHandle: UploadProps['beforeUpload'] = (rawFile) => {
// const type = fileType(rawFile?.name)
// console.log(type)
// if (type !== 'txt' || type !== 'md') {
// MsgError('Avatar picture must be JPG format!')
// return false
// } else if (rawFile.size / 1024 / 1024 > 10) {
// MsgError(' 10MB!')
// return false
// }
// return true
// }
watch(form.value, (value) => { watch(form.value, (value) => {
dataset.saveDocumentsFile(value.fileList) dataset.saveDocumentsFile(value.fileList)
}) })

View File

@ -53,7 +53,7 @@
<el-form-item label="选择器" v-if="form.type === '1'"> <el-form-item label="选择器" v-if="form.type === '1'">
<el-input <el-input
v-model="form.selector" v-model="form.selector"
placeholder="请输入选择器" placeholder="默认为 body可输入 .classname/#idname/tagname"
@blur="form.selector = form.selector.trim()" @blur="form.selector = form.selector.trim()"
/> />
</el-form-item> </el-form-item>
@ -71,7 +71,7 @@ import BaseForm from '@/views/dataset/component/BaseForm.vue'
import UploadComponent from '@/views/dataset/component/UploadComponent.vue' import UploadComponent from '@/views/dataset/component/UploadComponent.vue'
import { isAllPropertiesEmpty } from '@/utils/utils' import { isAllPropertiesEmpty } from '@/utils/utils'
import datasetApi from '@/api/dataset' import datasetApi from '@/api/dataset'
import { MsgConfirm, MsgSuccess } from '@/utils/message' import { MsgError, MsgSuccess } from '@/utils/message'
import useStore from '@/stores' import useStore from '@/stores'
const { dataset } = useStore() const { dataset } = useStore()
@ -114,12 +114,17 @@ const onSubmit = async () => {
if (isCreate) { if (isCreate) {
if (form.value.type === '0') { if (form.value.type === '0') {
if ((await BaseFormRef.value?.validate()) && (await UploadComponentRef.value.validate())) { if ((await BaseFormRef.value?.validate()) && (await UploadComponentRef.value.validate())) {
if (UploadComponentRef.value.form.fileList.length > 50) {
MsgError('每次最多上传50个文件')
return false
} else {
/* /*
stores保存数据 stores保存数据
*/ */
dataset.saveBaseInfo(BaseFormRef.value.form) dataset.saveBaseInfo(BaseFormRef.value.form)
dataset.saveDocumentsFile(UploadComponentRef.value.form.fileList) dataset.saveDocumentsFile(UploadComponentRef.value.form.fileList)
return true return true
}
} else { } else {
return false return false
} }

View File

@ -93,7 +93,7 @@ const open = (data: any) => {
detail.value.content = data.content detail.value.content = data.content
problemId.value = data.id problemId.value = data.id
document_id.value = data.document_id document_id.value = data.document_id
dataset_id.value = data.dataset_id dataset_id.value = data.dataset_id || id
} else { } else {
isEdit.value = true isEdit.value = true
} }