feat(knowledge): 添加命中测试功能

- 在知识库详情页面增加命中测试按钮
- 实现命中测试弹窗组件,包括参数设置和测试结果展示
- 优化知识库详情页面布局,调整样式
This commit is contained in:
Huangzhe
2025-04-24 18:02:09 +08:00
parent ccc289547e
commit 5343d5029c
3 changed files with 526 additions and 112 deletions

View File

@@ -7,36 +7,14 @@
<div class="mr20 header" v-if="!editKnowledge">
{{ knowledgeName }}
</div>
<el-input
class="mr20 w400"
size="small"
v-else
v-model="copyKnowledgeName"
>{{ knowledgeName }}</el-input
>
<el-icon
class="fs16 el-icon-edit-outline cursor-pointer"
@click.native="editKnowledgeName"
v-if="!editKnowledge"
/>
<el-input class="mr20 w400" size="small" v-else v-model="copyKnowledgeName">{{ knowledgeName }}</el-input>
<el-icon class="fs16 el-icon-edit-outline cursor-pointer" @click.native="editKnowledgeName"
v-if="!editKnowledge" />
<div v-else>
<el-button
type="primary"
size="medium"
class="render-button"
@click="saveKnowledgeName"
>保存</el-button
>
<el-button
size="medium"
class="render-button"
@click="cancelKnowledgeName"
>取消</el-button
>
<el-button type="primary" size="medium" class="render-button" @click="saveKnowledgeName">保存</el-button>
<el-button size="medium" class="render-button" @click="cancelKnowledgeName">取消</el-button>
</div>
<span class="segment-content">{{
segmentedMode | filterSegmentedMode
}}</span>
<span class="segment-content">{{ segmentedMode | filterSegmentedMode }}</span>
</div>
<p class="mt10 fs14" style="line-height: 20px">
描述{{ knowledgeDesc }}
@@ -46,62 +24,33 @@
<div>
<!-- <el-button type="primary" size="medium" class="normal-button" @click="jumpEditKnowledge">修改知识库</el-button>-->
<el-button
type="primary"
size="medium"
icon="el-icon-edit-outline"
class="primary-button"
@click="jumpEditKnowledge"
>修改知识库</el-button
>
<el-button
type="primary"
size="medium"
icon="el-icon-plus"
class="primary-button"
@click="jumpAddKnowledge"
>上传知识</el-button
>
<el-button type="primary" size="medium" icon="el-icon-edit-outline" class="primary-button"
@click="jumpEditKnowledge">修改知识库</el-button>
<el-button type="primary" size="medium" icon="el-icon-plus" class="primary-button"
@click="jumpAddKnowledge">上传知识</el-button>
<el-button type="primary" icon="el-icon-s-promotion" size="medium" class="line-button"
@click="handleHitTestClick">命中测试</el-button>
</div>
</div>
<div class="mt20 card-body">
<el-empty v-if="!hasList">
<div class="mt20">
<el-button
type="primary"
size="medium"
class="fs14"
@click="jumpAddKnowledge"
>立即添加</el-button
>
<el-button type="primary" size="medium" class="fs14" @click="jumpAddKnowledge">立即添加</el-button>
</div>
</el-empty>
<div class="table-container" v-else>
<div class="flex align-items-c justify-content-b">
<el-form
:model="form"
label-width="100px"
label-position="top"
inline
>
<el-form :model="form" label-width="100px" label-position="top" inline>
<el-form-item label="知识文件名称" prop="fileName">
<el-input
v-model="form.knowledgeNameLike"
size="medium"
placeholder="请输入知识文件名称"
@keydown.enter.native="search"
></el-input>
<el-input v-model="form.knowledgeNameLike" size="medium" placeholder="请输入知识文件名称"
@keydown.enter.native="search"></el-input>
</el-form-item>
<el-form-item label="知识文件来源" prop="documentSource">
<el-select v-model="form.documentSource" size="medium">
<el-option label="全部" value=""></el-option>
<el-option
v-for="item in documentSourceOptions"
:label="item.label"
:value="item.value"
:key="item.value"
></el-option>
<el-option v-for="item in documentSourceOptions" :label="item.label" :value="item.value"
:key="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="上传用户" prop="createdUserLike">
@@ -110,58 +59,32 @@
</el-select>
</el-form-item>
<el-form-item label="关键字">
<el-input
v-model="form.name"
placeholder="请输入关键字/敏感词"
disabled
size="medium"
></el-input>
<el-input v-model="form.name" placeholder="请输入关键字/敏感词" disabled size="medium"></el-input>
</el-form-item>
<el-form-item label="上传时间" prop="times">
<el-date-picker
size="medium"
style="width:100%"
v-model="form.times"
value-format="yyyy-MM-dd"
start-placeholder="开始时间"
end-placeholder="结束时间"
type="daterange"
></el-date-picker>
<el-date-picker size="medium" style="width:100%" v-model="form.times" value-format="yyyy-MM-dd"
start-placeholder="开始时间" end-placeholder="结束时间" type="daterange"></el-date-picker>
</el-form-item>
</el-form>
<div class="mt15 flex align-items-c justify-content-b">
<el-button size="medium" type="primary" @click="search"
>查询</el-button
>
<el-button size="medium" type="primary" @click="search">查询</el-button>
<el-button size="medium" @click="reset">重置</el-button>
</div>
</div>
<r-table
:columns="columns"
:data="list"
:deletion="false"
:total="total"
@page-change="pageChange"
@current-change="currentChange"
:current-page="page"
:page-size="pageSize"
></r-table>
<r-table :columns="columns" :data="list" :deletion="false" :total="total" @page-change="pageChange"
@current-change="currentChange" :current-page="page" :page-size="pageSize"></r-table>
</div>
</div>
<document-drawer
:visible.sync="drawer"
:descriptions="descriptions"
:document-detail="documentDetail"
:active-segment="activeSegment"
@update:visible="val => (drawer = val)"
/>
<document-drawer :visible.sync="drawer" :descriptions="descriptions" :document-detail="documentDetail"
:active-segment="activeSegment" @update:visible="val => (drawer = val)" />
<knowledgeForm
:visible.sync="drawerForm"
:datasetId="$route.query.datasetId"
@update:visible="getKnowledgeDetail"
>
<knowledgeForm :visible.sync="drawerForm" :datasetId="$route.query.datasetId" @update:visible="getKnowledgeDetail">
</knowledgeForm>
<!-- 命中测试抽屉弹窗 -->
<el-drawer :title="hitTestConfig.title" :visible.sync="hitTestConfig.visible" size="60%">
<hitTest></hitTest>
</el-drawer>
</div>
</template>
<script>
@@ -180,10 +103,16 @@ import {
import DocumentDrawer from './components/documentDetail/DocumentDrawer.vue'
import knowledgeForm from '@/views/knowledge/detail/components/knowledgeForm.vue'
import knowledgePng_1 from '@/assets/images/konwledge/konwledge-1.png'
import hitTest from "@/views/knowledge/detail/components/HitTest/Index.vue"
export default {
name: 'index',
data() {
return {
hitTestConfig: {
title: '命中测试',
visible: false
},
knowledgePng_1,
datasetId: this.$route.query.datasetId,
activeName: -1,
@@ -220,6 +149,7 @@ export default {
props: {},
watch: {},
components: {
hitTest,
knowledgeForm,
DocumentDrawer
},
@@ -407,6 +337,12 @@ export default {
'是否确认删除当前知识文件?',
'warning'
)
},
/**
* @name 点击命中测试控制弹窗
*/
handleHitTestClick() {
this.hitTestConfig.visible = true
}
},
filters: {
@@ -427,7 +363,7 @@ export default {
return item ? item.label : '否'
}
},
created() {},
created() { },
async mounted() {
this.getKnowledgeDetail()
// 获取知识库文件列表