知识库相关
This commit is contained in:
@@ -5,30 +5,42 @@ export interface knowledgeQueryParams {
|
|||||||
keyword?: string;
|
keyword?: string;
|
||||||
pageNum: number;
|
pageNum: number;
|
||||||
pageSize: number;
|
pageSize: number;
|
||||||
|
datasetType?: number; // 1=文本,2=视频
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建知识库参数
|
// 创建知识库参数
|
||||||
export interface CreateknowledgeParams {
|
export interface CreateknowledgeParams {
|
||||||
name: string; // 必传
|
name: string; // 必传
|
||||||
|
datasetType: number; // 1=文本,2=视频
|
||||||
description?: string; // 可选
|
description?: string; // 可选
|
||||||
|
embeddingModel?: string; // 向量模型
|
||||||
|
status?: string; // 状态
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新知识库参数
|
// 更新知识库参数
|
||||||
export interface UpdateknowledgeParams {
|
export interface UpdateknowledgeParams {
|
||||||
id: string; // 必传
|
id: string; // 必传
|
||||||
name?: string; // 可选
|
name?: string; // 可选
|
||||||
|
datasetType?: number; // 1=文本,2=视频
|
||||||
description?: string; // 可选
|
description?: string; // 可选
|
||||||
|
embeddingModel?: string; // 向量模型
|
||||||
|
status?: string; // 状态
|
||||||
}
|
}
|
||||||
|
|
||||||
// 数据集信息
|
// 数据集信息
|
||||||
export interface knowledgeInfo {
|
export interface knowledgeInfo {
|
||||||
id?: string;
|
id?: string;
|
||||||
name: string;
|
name: string;
|
||||||
|
datasetType?: number; // 1=文本,2=视频
|
||||||
description?: string;
|
description?: string;
|
||||||
fileCount?: number;
|
fileCount?: number;
|
||||||
totalSize?: number;
|
totalSize?: number;
|
||||||
createdAt?: string;
|
createdAt?: string;
|
||||||
updatedAt?: string;
|
updatedAt?: string;
|
||||||
|
embeddingModel?: string; // 向量模型
|
||||||
|
documentCount?: number; // 文档数量
|
||||||
|
charCount?: number; // 字符数量
|
||||||
|
status?: string; // 状态
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取知识库列表
|
// 获取知识库列表
|
||||||
|
|||||||
@@ -48,6 +48,42 @@ const messages = ref<Message[]>([
|
|||||||
time: '09:31',
|
time: '09:31',
|
||||||
isUser: false,
|
isUser: false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
content: '当然可以,这个系统提供了多种功能:日记、文件、快捷指令、快捷回复,以及技能管理和模型管理入口。你想先看哪一块?',
|
||||||
|
time: '09:31',
|
||||||
|
isUser: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
content: '当然可以,这个系统提供了多种功能:日记、文件、快捷指令、快捷回复,以及技能管理和模型管理入口。你想先看哪一块?',
|
||||||
|
time: '09:31',
|
||||||
|
isUser: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
content: '当然可以,这个系统提供了多种功能:日记、文件、快捷指令、快捷回复,以及技能管理和模型管理入口。你想先看哪一块?',
|
||||||
|
time: '09:31',
|
||||||
|
isUser: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
content: '当然可以,这个系统提供了多种功能:日记、文件、快捷指令、快捷回复,以及技能管理和模型管理入口。你想先看哪一块?',
|
||||||
|
time: '09:31',
|
||||||
|
isUser: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
content: '当然可以,这个系统提供了多种功能:日记、文件、快捷指令、快捷回复,以及技能管理和模型管理入口。你想先看哪一块?',
|
||||||
|
time: '09:31',
|
||||||
|
isUser: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
content: '当然可以,这个系统提供了多种功能:日记、文件、快捷指令、快捷回复,以及技能管理和模型管理入口。你想先看哪一块?',
|
||||||
|
time: '09:31',
|
||||||
|
isUser: false,
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -1,62 +1,61 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :title="isEdit ? '编辑数据集' : '新增数据集'" v-model="isShowDialog" width="600px" :close-on-click-modal="false" @close="onCancel">
|
<el-dialog :title="isEdit ? '编辑数据集' : '新增数据集'" v-model="isShowDialog" width="600px" :close-on-click-modal="false" @close="onCancel">
|
||||||
<el-form ref="formRef" :model="ruleForm" :rules="rules" label-width="100px">
|
<el-form ref="formRef" :model="ruleForm" :rules="rules" label-width="100px">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="数据集名称" prop="name">
|
<el-form-item label="数据集名称" prop="name">
|
||||||
<el-input v-model="ruleForm.name" placeholder="请输入数据集名称" clearable />
|
<el-input v-model="ruleForm.name" placeholder="请输入数据集名称" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="数据集类型" prop="type">
|
<el-form-item label="数据集类型" prop="datasetType">
|
||||||
<el-select v-model="ruleForm.type" placeholder="请选择类型" clearable style="width: 100%">
|
<el-select v-model="ruleForm.datasetType" placeholder="请选择类型" clearable style="width: 100%">
|
||||||
<el-option label="文本" value="text" />
|
<el-option label="文本" :value="1" />
|
||||||
<el-option label="问答" value="qa" />
|
<el-option label="视频" :value="2" />
|
||||||
<el-option label="表格" value="table" />
|
</el-select>
|
||||||
</el-select>
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
</el-col>
|
<el-col :span="12">
|
||||||
<el-col :span="12">
|
<el-form-item label="向量模型" prop="embeddingModel">
|
||||||
<el-form-item label="向量模型" prop="embeddingModel">
|
<el-select v-model="ruleForm.embeddingModel" placeholder="请选择向量模型" clearable style="width: 100%">
|
||||||
<el-select v-model="ruleForm.embeddingModel" placeholder="请选择向量模型" clearable style="width: 100%">
|
<el-option label="text-embedding-ada-002" value="text-embedding-ada-002" />
|
||||||
<el-option label="text-embedding-ada-002" value="text-embedding-ada-002" />
|
<el-option label="text-embedding-3-small" value="text-embedding-3-small" />
|
||||||
<el-option label="text-embedding-3-small" value="text-embedding-3-small" />
|
<el-option label="text-embedding-3-large" value="text-embedding-3-large" />
|
||||||
<el-option label="text-embedding-3-large" value="text-embedding-3-large" />
|
<el-option label="bge-large-zh" value="bge-large-zh" />
|
||||||
<el-option label="bge-large-zh" value="bge-large-zh" />
|
<el-option label="m3e-base" value="m3e-base" />
|
||||||
<el-option label="m3e-base" value="m3e-base" />
|
</el-select>
|
||||||
</el-select>
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
</el-col>
|
</el-row>
|
||||||
</el-row>
|
<el-row :gutter="20">
|
||||||
<el-row :gutter="20">
|
<el-col :span="24">
|
||||||
<el-col :span="24">
|
<el-form-item label="描述" prop="description">
|
||||||
<el-form-item label="描述" prop="description">
|
<el-input v-model="ruleForm.description" type="textarea" :rows="4" placeholder="请输入数据集描述" />
|
||||||
<el-input v-model="ruleForm.description" type="textarea" :rows="4" placeholder="请输入数据集描述" />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
</el-col>
|
</el-row>
|
||||||
</el-row>
|
<el-row :gutter="20" v-if="isEdit">
|
||||||
<el-row :gutter="20" v-if="isEdit">
|
<el-col :span="12">
|
||||||
<el-col :span="12">
|
<el-form-item label="文档数量">
|
||||||
<el-form-item label="文档数量">
|
<el-input :value="ruleForm.documentCount" disabled />
|
||||||
<el-input :value="ruleForm.documentCount" disabled />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
</el-col>
|
<el-col :span="12">
|
||||||
<el-col :span="12">
|
<el-form-item label="字符数量">
|
||||||
<el-form-item label="字符数量">
|
<el-input :value="ruleForm.charCount" disabled />
|
||||||
<el-input :value="ruleForm.charCount" disabled />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
</el-col>
|
</el-row>
|
||||||
</el-row>
|
</el-form>
|
||||||
</el-form>
|
<template #footer>
|
||||||
<template #footer>
|
<span class="dialog-footer">
|
||||||
<span class="dialog-footer">
|
<el-button @click="onCancel">取 消</el-button>
|
||||||
<el-button @click="onCancel">取 消</el-button>
|
<el-button type="primary" @click="onSubmit" :loading="submitLoading">{{ isEdit ? '保 存' : '创 建' }}</el-button>
|
||||||
<el-button type="primary" @click="onSubmit" :loading="submitLoading">{{ isEdit ? '保 存' : '创 建' }}</el-button>
|
</span>
|
||||||
</span>
|
</template>
|
||||||
</template>
|
</el-dialog>
|
||||||
</el-dialog>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
@@ -86,7 +85,7 @@ const submitLoading = ref(false);
|
|||||||
const ruleForm = reactive({
|
const ruleForm = reactive({
|
||||||
id: '',
|
id: '',
|
||||||
name: '',
|
name: '',
|
||||||
type: 'text',
|
datasetType: 1 as number,
|
||||||
description: '',
|
description: '',
|
||||||
embeddingModel: 'text-embedding-ada-002',
|
embeddingModel: 'text-embedding-ada-002',
|
||||||
documentCount: 0,
|
documentCount: 0,
|
||||||
@@ -96,7 +95,7 @@ const ruleForm = reactive({
|
|||||||
// 表单验证规则
|
// 表单验证规则
|
||||||
const rules = reactive<FormRules>({
|
const rules = reactive<FormRules>({
|
||||||
name: [{ required: true, message: '请输入数据集名称', trigger: 'blur' }],
|
name: [{ required: true, message: '请输入数据集名称', trigger: 'blur' }],
|
||||||
type: [{ required: true, message: '请选择数据集类型', trigger: 'change' }],
|
datasetType: [{ required: true, message: '请选择数据集类型', trigger: 'change' }],
|
||||||
embeddingModel: [{ required: true, message: '请选择向量模型', trigger: 'change' }],
|
embeddingModel: [{ required: true, message: '请选择向量模型', trigger: 'change' }],
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -104,7 +103,7 @@ const rules = reactive<FormRules>({
|
|||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
ruleForm.id = '';
|
ruleForm.id = '';
|
||||||
ruleForm.name = '';
|
ruleForm.name = '';
|
||||||
ruleForm.type = 'text';
|
ruleForm.datasetType = 1;
|
||||||
ruleForm.description = '';
|
ruleForm.description = '';
|
||||||
ruleForm.embeddingModel = 'text-embedding-ada-002';
|
ruleForm.embeddingModel = 'text-embedding-ada-002';
|
||||||
ruleForm.documentCount = 0;
|
ruleForm.documentCount = 0;
|
||||||
@@ -122,7 +121,7 @@ const openDialog = async (row?: any) => {
|
|||||||
const data = res.data || row;
|
const data = res.data || row;
|
||||||
ruleForm.id = data.id || '';
|
ruleForm.id = data.id || '';
|
||||||
ruleForm.name = data.name || '';
|
ruleForm.name = data.name || '';
|
||||||
ruleForm.type = data.type || 'text';
|
ruleForm.datasetType = data.datasetType || 1;
|
||||||
ruleForm.description = data.description || '';
|
ruleForm.description = data.description || '';
|
||||||
ruleForm.embeddingModel = data.embeddingModel || 'text-embedding-ada-002';
|
ruleForm.embeddingModel = data.embeddingModel || 'text-embedding-ada-002';
|
||||||
ruleForm.documentCount = data.documentCount || 0;
|
ruleForm.documentCount = data.documentCount || 0;
|
||||||
@@ -132,7 +131,7 @@ const openDialog = async (row?: any) => {
|
|||||||
// 使用传入的row数据
|
// 使用传入的row数据
|
||||||
ruleForm.id = row.id || '';
|
ruleForm.id = row.id || '';
|
||||||
ruleForm.name = row.name || '';
|
ruleForm.name = row.name || '';
|
||||||
ruleForm.type = row.type || 'text';
|
ruleForm.datasetType = row.datasetType || 1;
|
||||||
ruleForm.description = row.description || '';
|
ruleForm.description = row.description || '';
|
||||||
ruleForm.embeddingModel = row.embeddingModel || 'text-embedding-ada-002';
|
ruleForm.embeddingModel = row.embeddingModel || 'text-embedding-ada-002';
|
||||||
ruleForm.documentCount = row.documentCount || 0;
|
ruleForm.documentCount = row.documentCount || 0;
|
||||||
@@ -161,7 +160,7 @@ const onSubmit = async () => {
|
|||||||
const data = {
|
const data = {
|
||||||
id: ruleForm.id || undefined,
|
id: ruleForm.id || undefined,
|
||||||
name: ruleForm.name,
|
name: ruleForm.name,
|
||||||
type: ruleForm.type,
|
datasetType: ruleForm.datasetType,
|
||||||
description: ruleForm.description,
|
description: ruleForm.description,
|
||||||
embeddingModel: ruleForm.embeddingModel,
|
embeddingModel: ruleForm.embeddingModel,
|
||||||
status: 'enable',
|
status: 'enable',
|
||||||
|
|||||||
@@ -1,107 +1,106 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="knowledge-knowledge-page">
|
<div class="knowledge-knowledge-page">
|
||||||
<div class="knowledge-knowledge-container">
|
<div class="knowledge-knowledge-container">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<div class="knowledge-knowledge-search mb15">
|
<div class="knowledge-knowledge-search mb15">
|
||||||
<el-form :inline="true">
|
<el-form :inline="true">
|
||||||
<el-form-item label="数据集名称">
|
<el-form-item label="数据集名称">
|
||||||
<el-input size="default" v-model="tableData.param.keyword" placeholder="请输入数据集名称" clearable style="width: 200px" />
|
<el-input size="default" v-model="tableData.param.keyword" placeholder="请输入数据集名称" clearable style="width: 200px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="数据集类型">
|
<el-form-item label="数据集类型">
|
||||||
<el-select size="default" v-model="tableData.param.type" placeholder="请选择类型" clearable style="width: 150px">
|
<el-select size="default" v-model="tableData.param.datasetType" placeholder="请选择类型" clearable style="width: 150px">
|
||||||
<el-option label="文本" value="text" />
|
<el-option label="文本" :value="1" />
|
||||||
<el-option label="问答" value="qa" />
|
<el-option label="视频" :value="2" />
|
||||||
<el-option label="表格" value="table" />
|
</el-select>
|
||||||
</el-select>
|
</el-form-item>
|
||||||
</el-form-item>
|
<el-form-item label="状态">
|
||||||
<el-form-item label="状态">
|
<el-select size="default" v-model="tableData.param.status" placeholder="请选择状态" clearable style="width: 120px">
|
||||||
<el-select size="default" v-model="tableData.param.status" placeholder="请选择状态" clearable style="width: 120px">
|
<el-option label="启用" value="enable" />
|
||||||
<el-option label="启用" value="enable" />
|
<el-option label="禁用" value="disable" />
|
||||||
<el-option label="禁用" value="disable" />
|
</el-select>
|
||||||
</el-select>
|
</el-form-item>
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
<el-form-item>
|
<el-button size="default" type="primary" @click="getknowledgeList">
|
||||||
<el-button size="default" type="primary" @click="getknowledgeList">
|
<el-icon><ele-Search /></el-icon>
|
||||||
<el-icon><ele-Search /></el-icon>
|
查询
|
||||||
查询
|
</el-button>
|
||||||
</el-button>
|
<el-button size="default" @click="onResetQuery">
|
||||||
<el-button size="default" @click="onResetQuery">
|
<el-icon><ele-Refresh /></el-icon>
|
||||||
<el-icon><ele-Refresh /></el-icon>
|
重置
|
||||||
重置
|
</el-button>
|
||||||
</el-button>
|
<el-button size="default" type="success" @click="onOpenAdd" v-auth="'api/v1/knowledge/knowledge/create'">
|
||||||
<el-button size="default" type="success" @click="onOpenAdd" v-auth="'api/v1/knowledge/knowledge/create'">
|
<el-icon><ele-Plus /></el-icon>
|
||||||
<el-icon><ele-Plus /></el-icon>
|
新增
|
||||||
新增
|
</el-button>
|
||||||
</el-button>
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-form>
|
||||||
</el-form>
|
</div>
|
||||||
</div>
|
<el-table :data="tableData.data" style="width: 100%" v-loading="tableData.loading" border>
|
||||||
<el-table :data="tableData.data" style="width: 100%" v-loading="tableData.loading" border>
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
<el-table-column prop="name" label="数据集名称" min-width="180" show-overflow-tooltip>
|
||||||
<el-table-column prop="name" label="数据集名称" min-width="180" show-overflow-tooltip>
|
<template #default="scope">
|
||||||
<template #default="scope">
|
<el-link type="primary" @click="onViewDetail(scope.row)">{{ scope.row.name }}</el-link>
|
||||||
<el-link type="primary" @click="onViewDetail(scope.row)">{{ scope.row.name }}</el-link>
|
</template>
|
||||||
</template>
|
</el-table-column>
|
||||||
</el-table-column>
|
<el-table-column prop="datasetType" label="类型" width="100" align="center">
|
||||||
<el-table-column prop="type" label="类型" width="100" align="center">
|
<template #default="scope">
|
||||||
<template #default="scope">
|
<el-tag :type="getTypeTagType(scope.row.datasetType)">{{ getTypeText(scope.row.datasetType) }}</el-tag>
|
||||||
<el-tag :type="getTypeTagType(scope.row.type)">{{ getTypeText(scope.row.type) }}</el-tag>
|
</template>
|
||||||
</template>
|
</el-table-column>
|
||||||
</el-table-column>
|
<el-table-column prop="documentCount" label="文档数" width="100" align="center" />
|
||||||
<el-table-column prop="documentCount" label="文档数" width="100" align="center" />
|
<el-table-column prop="charCount" label="字符数" width="120" align="center">
|
||||||
<el-table-column prop="charCount" label="字符数" width="120" align="center">
|
<template #default="scope">
|
||||||
<template #default="scope">
|
{{ formatCharCount(scope.row.charCount) }}
|
||||||
{{ formatCharCount(scope.row.charCount) }}
|
</template>
|
||||||
</template>
|
</el-table-column>
|
||||||
</el-table-column>
|
<el-table-column prop="embeddingModel" label="向量模型" width="150" show-overflow-tooltip />
|
||||||
<el-table-column prop="embeddingModel" label="向量模型" width="150" show-overflow-tooltip />
|
<el-table-column prop="status" label="状态" width="80" align="center">
|
||||||
<el-table-column prop="status" label="状态" width="80" align="center">
|
<template #default="scope">
|
||||||
<template #default="scope">
|
<el-switch
|
||||||
<el-switch
|
v-model="scope.row.statusEnabled"
|
||||||
v-model="scope.row.statusEnabled"
|
inline-prompt
|
||||||
inline-prompt
|
active-text="启"
|
||||||
active-text="启"
|
inactive-text="停"
|
||||||
inactive-text="停"
|
@change="onStatusChange(scope.row)"
|
||||||
@change="onStatusChange(scope.row)"
|
v-auth="'api/v1/knowledge/knowledge/updateStatus'"
|
||||||
v-auth="'api/v1/knowledge/knowledge/updateStatus'"
|
/>
|
||||||
/>
|
</template>
|
||||||
</template>
|
</el-table-column>
|
||||||
</el-table-column>
|
<el-table-column prop="createdAt" label="创建时间" width="170" show-overflow-tooltip />
|
||||||
<el-table-column prop="createdAt" label="创建时间" width="170" show-overflow-tooltip />
|
<el-table-column prop="updatedAt" label="更新时间" width="170" show-overflow-tooltip />
|
||||||
<el-table-column prop="updatedAt" label="更新时间" width="170" show-overflow-tooltip />
|
<el-table-column label="操作" width="200" fixed="right" align="center">
|
||||||
<el-table-column label="操作" width="200" fixed="right" align="center">
|
<template #default="scope">
|
||||||
<template #default="scope">
|
<el-button size="small" text type="primary" @click="onEdit(scope.row)" v-auth="'api/v1/knowledge/knowledge/update'">编辑</el-button>
|
||||||
<el-button size="small" text type="primary" @click="onEdit(scope.row)" v-auth="'api/v1/knowledge/knowledge/update'">编辑</el-button>
|
<el-button size="small" text type="success" @click="onManageDocuments(scope.row)">文档</el-button>
|
||||||
<el-button size="small" text type="success" @click="onManageDocuments(scope.row)">文档</el-button>
|
<el-button size="small" text type="danger" @click="onRowDel(scope.row)" v-auth="'api/v1/knowledge/knowledge/delete'">删除</el-button>
|
||||||
<el-button size="small" text type="danger" @click="onRowDel(scope.row)" v-auth="'api/v1/knowledge/knowledge/delete'">删除</el-button>
|
</template>
|
||||||
</template>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table>
|
||||||
</el-table>
|
<!-- 分页 -->
|
||||||
<!-- 分页 -->
|
<div class="mt15" style="text-align: right">
|
||||||
<div class="mt15" style="text-align: right">
|
<el-pagination
|
||||||
<el-pagination
|
v-model:current-page="tableData.param.pageNum"
|
||||||
v-model:current-page="tableData.param.pageNum"
|
v-model:page-size="tableData.param.pageSize"
|
||||||
v-model:page-size="tableData.param.pageSize"
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
:page-sizes="[10, 20, 50, 100]"
|
:total="tableData.total"
|
||||||
:total="tableData.total"
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
layout="total, sizes, prev, pager, next, jumper"
|
@size-change="onSizeChange"
|
||||||
@size-change="onSizeChange"
|
@current-change="onCurrentChange"
|
||||||
@current-change="onCurrentChange"
|
/>
|
||||||
/>
|
</div>
|
||||||
</div>
|
</el-card>
|
||||||
</el-card>
|
</div>
|
||||||
|
<Editknowledge ref="editknowledgeRef" @getknowledgeList="getknowledgeList" />
|
||||||
</div>
|
</div>
|
||||||
<Editknowledge ref="editknowledgeRef" @getknowledgeList="getknowledgeList" />
|
</template>
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
export default {
|
export default {
|
||||||
name: 'knowledgeknowledge',
|
name: 'knowledgeknowledge',
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onMounted } from 'vue';
|
import { ref, reactive, onMounted } from 'vue';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||||
@@ -117,7 +116,7 @@ const tableData = reactive({
|
|||||||
loading: false,
|
loading: false,
|
||||||
param: {
|
param: {
|
||||||
keyword: '',
|
keyword: '',
|
||||||
type: '',
|
datasetType: undefined as number | undefined,
|
||||||
status: undefined as string | undefined,
|
status: undefined as string | undefined,
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@@ -148,30 +147,26 @@ const getknowledgeList = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 获取类型标签类型
|
// 获取类型标签类型
|
||||||
const getTypeTagType = (type: string) => {
|
const getTypeTagType = (datasetType: number) => {
|
||||||
switch (type) {
|
switch (datasetType) {
|
||||||
case 'text':
|
case 1:
|
||||||
return 'primary';
|
return 'primary';
|
||||||
case 'qa':
|
case 2:
|
||||||
return 'success';
|
return 'success';
|
||||||
case 'table':
|
|
||||||
return 'warning';
|
|
||||||
default:
|
default:
|
||||||
return 'info';
|
return 'info';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 获取类型文本
|
// 获取类型文本
|
||||||
const getTypeText = (type: string) => {
|
const getTypeText = (datasetType: number) => {
|
||||||
switch (type) {
|
switch (datasetType) {
|
||||||
case 'text':
|
case 1:
|
||||||
return '文本';
|
return '文本';
|
||||||
case 'qa':
|
case 2:
|
||||||
return '问答';
|
return '视频';
|
||||||
case 'table':
|
|
||||||
return '表格';
|
|
||||||
default:
|
default:
|
||||||
return type;
|
return String(datasetType);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -187,7 +182,7 @@ const formatCharCount = (count: number) => {
|
|||||||
// 重置查询
|
// 重置查询
|
||||||
const onResetQuery = () => {
|
const onResetQuery = () => {
|
||||||
tableData.param.keyword = '';
|
tableData.param.keyword = '';
|
||||||
tableData.param.type = '';
|
tableData.param.datasetType = undefined;
|
||||||
tableData.param.status = undefined;
|
tableData.param.status = undefined;
|
||||||
tableData.param.pageNum = 1;
|
tableData.param.pageNum = 1;
|
||||||
getknowledgeList();
|
getknowledgeList();
|
||||||
@@ -261,9 +256,9 @@ const onCurrentChange = (page: number) => {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getknowledgeList();
|
getknowledgeList();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.knowledge-knowledge-page {
|
.knowledge-knowledge-page {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
.knowledge-knowledge-container {
|
.knowledge-knowledge-container {
|
||||||
@@ -274,4 +269,4 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -156,7 +156,7 @@
|
|||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button text size="small" v-debounce @click="onPreviewFile(row)">预览</el-button>
|
<el-button text size="small" v-debounce @click="onPreviewFile(row)">预览</el-button>
|
||||||
<el-button v-if="row.vectorStatus === 1" text size="small" type="primary" v-debounce @click="onGenerateVector(row)"
|
<el-button v-if="row.vectorStatus === 1" text size="small" type="primary" v-debounce @click="onGenerateVector(row)"
|
||||||
>生成向量</el-button
|
>生成向量</el-button
|
||||||
>
|
>
|
||||||
<el-button v-else text size="small" type="primary" v-debounce @click="onViewTaskList(row)">查看任务</el-button>
|
<el-button v-else text size="small" type="primary" v-debounce @click="onViewTaskList(row)">查看任务</el-button>
|
||||||
<el-button text size="small" type="danger" v-debounce @click="onDeleteFile(row)">删除</el-button>
|
<el-button text size="small" type="danger" v-debounce @click="onDeleteFile(row)">删除</el-button>
|
||||||
@@ -233,6 +233,12 @@
|
|||||||
<el-form-item label="名称" prop="name">
|
<el-form-item label="名称" prop="name">
|
||||||
<el-input v-model="knowledgeForm.name" placeholder="请输入知识库名称" />
|
<el-input v-model="knowledgeForm.name" placeholder="请输入知识库名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="数据集类型" prop="datasetType">
|
||||||
|
<el-select v-model="knowledgeForm.datasetType" placeholder="请选择类型" clearable style="width: 100%">
|
||||||
|
<el-option label="文本" :value="1" />
|
||||||
|
<el-option label="视频" :value="2" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="描述" prop="description">
|
<el-form-item label="描述" prop="description">
|
||||||
<el-input v-model="knowledgeForm.description" type="textarea" :rows="3" placeholder="请输入描述" />
|
<el-input v-model="knowledgeForm.description" type="textarea" :rows="3" placeholder="请输入描述" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -469,10 +475,12 @@ const knowledgeFormRef = ref<FormInstance>();
|
|||||||
const knowledgeForm = reactive({
|
const knowledgeForm = reactive({
|
||||||
id: '',
|
id: '',
|
||||||
name: '',
|
name: '',
|
||||||
|
datasetType: undefined as number | undefined,
|
||||||
description: '',
|
description: '',
|
||||||
});
|
});
|
||||||
const knowledgeRules = reactive<FormRules>({
|
const knowledgeRules = reactive<FormRules>({
|
||||||
name: [{ required: true, message: '请输入知识库名称', trigger: 'blur' }],
|
name: [{ required: true, message: '请输入知识库名称', trigger: 'blur' }],
|
||||||
|
datasetType: [{ required: true, message: '请选择数据集类型', trigger: 'change' }],
|
||||||
});
|
});
|
||||||
|
|
||||||
// 文件列表(含OSS上传结果)
|
// 文件列表(含OSS上传结果)
|
||||||
@@ -555,6 +563,7 @@ const getknowledgeList = async () => {
|
|||||||
const response = await listknowledges({
|
const response = await listknowledges({
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 100,
|
pageSize: 100,
|
||||||
|
datasetType: 1,
|
||||||
});
|
});
|
||||||
knowledgeList.value = response.data.list || [];
|
knowledgeList.value = response.data.list || [];
|
||||||
} catch (_error) {
|
} catch (_error) {
|
||||||
@@ -576,6 +585,7 @@ const onSelectknowledge = (item: any) => {
|
|||||||
const onAddknowledge = () => {
|
const onAddknowledge = () => {
|
||||||
knowledgeForm.id = '';
|
knowledgeForm.id = '';
|
||||||
knowledgeForm.name = '';
|
knowledgeForm.name = '';
|
||||||
|
knowledgeForm.datasetType = undefined;
|
||||||
knowledgeForm.description = '';
|
knowledgeForm.description = '';
|
||||||
showknowledgeDialog.value = true;
|
showknowledgeDialog.value = true;
|
||||||
};
|
};
|
||||||
@@ -594,6 +604,7 @@ const onCardContextMenu = (event: MouseEvent, item: any) => {
|
|||||||
const onRenameknowledge = (item: any) => {
|
const onRenameknowledge = (item: any) => {
|
||||||
knowledgeForm.id = item.id;
|
knowledgeForm.id = item.id;
|
||||||
knowledgeForm.name = item.name;
|
knowledgeForm.name = item.name;
|
||||||
|
knowledgeForm.datasetType = item.datasetType;
|
||||||
knowledgeForm.description = item.description || '';
|
knowledgeForm.description = item.description || '';
|
||||||
showknowledgeDialog.value = true;
|
showknowledgeDialog.value = true;
|
||||||
};
|
};
|
||||||
@@ -634,12 +645,14 @@ const onSaveknowledge = async () => {
|
|||||||
await updateknowledge({
|
await updateknowledge({
|
||||||
id: knowledgeForm.id,
|
id: knowledgeForm.id,
|
||||||
name: knowledgeForm.name,
|
name: knowledgeForm.name,
|
||||||
|
datasetType: knowledgeForm.datasetType,
|
||||||
description: knowledgeForm.description,
|
description: knowledgeForm.description,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// 创建知识库
|
// 创建知识库
|
||||||
await createknowledge({
|
await createknowledge({
|
||||||
name: knowledgeForm.name,
|
name: knowledgeForm.name,
|
||||||
|
datasetType: knowledgeForm.datasetType!,
|
||||||
description: knowledgeForm.description,
|
description: knowledgeForm.description,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -988,7 +1001,7 @@ const onSaveModelConfig = async () => {
|
|||||||
// 构建请求数据,只传递接口需要的字段
|
// 构建请求数据,只传递接口需要的字段
|
||||||
const data = {
|
const data = {
|
||||||
modelType: selectedModelType.value,
|
modelType: selectedModelType.value,
|
||||||
configType: selectedConfigType.value,
|
configType: selectedConfigType,
|
||||||
modelName: modelFormData.value.modelName,
|
modelName: modelFormData.value.modelName,
|
||||||
modelDesc: modelFormData.value.modelDesc,
|
modelDesc: modelFormData.value.modelDesc,
|
||||||
configContent: {} as Record<string, any>,
|
configContent: {} as Record<string, any>,
|
||||||
|
|||||||
Reference in New Issue
Block a user