UnisKB/ui/src/components/ai-chat/ParagraphSourceDialog.vue

80 lines
2.3 KiB
Vue
Raw Normal View History

2024-01-18 07:59:30 +00:00
<template>
2024-01-23 08:39:36 +00:00
<el-dialog
class="paragraph-source responsive-dialog"
2025-01-21 07:25:21 +00:00
:title="$t('chat.paragraphSource.title')"
2024-01-23 08:39:36 +00:00
v-model="dialogVisible"
destroy-on-close
append-to-body
2024-04-28 10:49:19 +00:00
align-center
2024-09-24 11:01:35 +00:00
:close-on-click-modal="false"
:close-on-press-escape="false"
2024-01-23 08:39:36 +00:00
>
2024-06-13 07:58:36 +00:00
<div class="mb-8">
2024-01-25 08:36:42 +00:00
<el-scrollbar>
2024-06-13 07:58:36 +00:00
<div class="paragraph-source-height p-16 pb-0">
2024-01-25 08:36:42 +00:00
<el-form label-position="top">
2025-01-21 07:25:21 +00:00
<el-form-item :label="$t('chat.paragraphSource.question')">
2024-01-25 08:36:42 +00:00
<el-input v-model="detail.problem_text" disabled />
</el-form-item>
2025-01-21 07:25:21 +00:00
<el-form-item :label="$t('chat.paragraphSource.optimizationQuestion')">
2024-01-25 08:36:42 +00:00
<el-input v-model="detail.padding_problem_text" disabled />
</el-form-item>
2025-01-21 07:25:21 +00:00
<el-form-item :label="$t('chat.KnowledgeSource.referenceParagraph')">
2024-12-17 08:02:56 +00:00
<div v-if="detail.paragraph_list.length > 0" class="w-full">
2024-12-03 07:13:23 +00:00
<template v-for="(item, index) in detail.paragraph_list" :key="index">
<ParagraphCard :data="item" :content="item.content" :index="index" />
2024-12-03 07:13:23 +00:00
</template>
</div>
<span v-else> - </span>
2024-01-25 08:36:42 +00:00
</el-form-item>
</el-form>
</div>
</el-scrollbar>
</div>
2024-01-18 07:59:30 +00:00
</el-dialog>
</template>
<script setup lang="ts">
2024-04-28 10:49:19 +00:00
import { ref, watch, onBeforeUnmount } from 'vue'
2024-01-18 10:41:32 +00:00
import { cloneDeep } from 'lodash'
2024-03-01 06:36:27 +00:00
import { arraySort } from '@/utils/utils'
2024-07-01 01:45:59 +00:00
import ParagraphCard from './component/ParagraphCard.vue'
2024-01-18 07:59:30 +00:00
const emit = defineEmits(['refresh'])
const dialogVisible = ref(false)
const detail = ref<any>({})
watch(dialogVisible, (bool) => {
if (!bool) {
detail.value = {}
}
})
2024-01-18 10:41:32 +00:00
const open = (data: any, id?: string) => {
detail.value = cloneDeep(data)
detail.value.paragraph_list = id
? detail.value.paragraph_list.filter((v: any) => v.dataset_id === id)
2024-01-18 10:41:32 +00:00
: detail.value.paragraph_list
2024-03-01 06:36:27 +00:00
detail.value.paragraph_list = arraySort(detail.value.paragraph_list, 'similarity', true)
2024-01-18 07:59:30 +00:00
dialogVisible.value = true
}
2024-04-28 10:49:19 +00:00
onBeforeUnmount(() => {
dialogVisible.value = false
})
2024-01-18 07:59:30 +00:00
defineExpose({ open })
</script>
2024-01-23 08:39:36 +00:00
<style lang="scss">
.paragraph-source {
2024-02-29 07:58:23 +00:00
padding: 0;
2024-04-28 10:49:19 +00:00
2024-02-29 07:58:23 +00:00
.el-dialog__header {
padding: 24px 24px 0 24px;
}
2024-01-23 08:39:36 +00:00
.el-dialog__body {
padding: 8px !important;
}
2024-01-25 08:36:42 +00:00
.paragraph-source-height {
2024-06-13 07:58:36 +00:00
max-height: calc(100vh - 260px);
2024-01-25 08:36:42 +00:00
}
2024-01-23 08:39:36 +00:00
}
2024-01-18 07:59:30 +00:00
</style>