fix(界面切换显示空白bug): 修复知识库管理时,切换到其它菜单,界面变空白的情况 (#31)
This commit is contained in:
parent
dbf6fe0f3b
commit
5a7eba5a29
|
@ -23,7 +23,7 @@ def is_running_in_docker():
|
||||||
# 根据运行环境选择合适的主机地址
|
# 根据运行环境选择合适的主机地址
|
||||||
DB_HOST = 'host.docker.internal' if is_running_in_docker() else 'localhost'
|
DB_HOST = 'host.docker.internal' if is_running_in_docker() else 'localhost'
|
||||||
MINIO_HOST = 'host.docker.internal' if is_running_in_docker() else 'localhost'
|
MINIO_HOST = 'host.docker.internal' if is_running_in_docker() else 'localhost'
|
||||||
ES_HOST = 'host.docker.internal' if is_running_in_docker() else 'localhost' # 添加 ES 主机地址
|
ES_HOST = 'host.docker.internal' if is_running_in_docker() else 'localhost'
|
||||||
|
|
||||||
# 数据库连接配置
|
# 数据库连接配置
|
||||||
DB_CONFIG = {
|
DB_CONFIG = {
|
||||||
|
|
|
@ -54,6 +54,7 @@ export default {
|
||||||
},
|
},
|
||||||
beforeUnmount() {
|
beforeUnmount() {
|
||||||
this.stopPolling()
|
this.stopPolling()
|
||||||
|
this.dialogVisible = false
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
resetProgress() {
|
resetProgress() {
|
||||||
|
|
|
@ -618,317 +618,319 @@ onActivated(() => {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div>
|
||||||
<el-card v-loading="loading" shadow="never" class="search-wrapper">
|
<div class="app-container">
|
||||||
<el-form ref="searchFormRef" :inline="true" :model="searchData">
|
<el-card v-loading="loading" shadow="never" class="search-wrapper">
|
||||||
<el-form-item prop="name" label="知识库名称">
|
<el-form ref="searchFormRef" :inline="true" :model="searchData">
|
||||||
<el-input v-model="searchData.name" placeholder="请输入" />
|
<el-form-item prop="name" label="知识库名称">
|
||||||
</el-form-item>
|
<el-input v-model="searchData.name" placeholder="请输入" />
|
||||||
<el-form-item>
|
</el-form-item>
|
||||||
<el-button type="primary" :icon="Search" @click="handleSearch">
|
<el-form-item>
|
||||||
搜索
|
<el-button type="primary" :icon="Search" @click="handleSearch">
|
||||||
</el-button>
|
搜索
|
||||||
<el-button :icon="Refresh" @click="resetSearch">
|
</el-button>
|
||||||
重置
|
<el-button :icon="Refresh" @click="resetSearch">
|
||||||
</el-button>
|
重置
|
||||||
</el-form-item>
|
</el-button>
|
||||||
</el-form>
|
</el-form-item>
|
||||||
</el-card>
|
</el-form>
|
||||||
<el-card v-loading="loading" shadow="never">
|
</el-card>
|
||||||
<div class="toolbar-wrapper">
|
<el-card v-loading="loading" shadow="never">
|
||||||
<div>
|
<div class="toolbar-wrapper">
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
:icon="Plus"
|
|
||||||
@click="handleCreate"
|
|
||||||
>
|
|
||||||
新建知识库
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
type="danger"
|
|
||||||
:icon="Delete"
|
|
||||||
:disabled="multipleSelection.length === 0"
|
|
||||||
@click="handleBatchDelete"
|
|
||||||
>
|
|
||||||
批量删除
|
|
||||||
</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="table-wrapper">
|
|
||||||
<el-table :data="tableData" @selection-change="handleSelectionChange">
|
|
||||||
<el-table-column type="selection" width="50" align="center" />
|
|
||||||
<el-table-column label="序号" align="center" width="80">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ (paginationData.currentPage - 1) * paginationData.pageSize + scope.$index + 1 }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="name" label="知识库名称" align="center" min-width="120" />
|
|
||||||
<el-table-column prop="description" label="描述" align="center" min-width="180" show-overflow-tooltip />
|
|
||||||
<el-table-column prop="doc_num" label="文档数量" align="center" width="100" />
|
|
||||||
<!-- 添加语言列 -->
|
|
||||||
<el-table-column label="语言" align="center" width="100">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-tag type="info" size="small">
|
|
||||||
{{ scope.row.language === 'Chinese' ? '中文' : '英文' }}
|
|
||||||
</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<!-- 添加权限列 -->
|
|
||||||
<el-table-column label="权限" align="center" width="100">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-tag :type="scope.row.permission === 'me' ? 'success' : 'warning'" size="small">
|
|
||||||
{{ scope.row.permission === 'me' ? '个人' : '团队' }}
|
|
||||||
</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="创建时间" align="center" width="180">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ scope.row.create_date }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column fixed="right" label="操作" width="180" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
text
|
|
||||||
bg
|
|
||||||
size="small"
|
|
||||||
:icon="View"
|
|
||||||
@click="handleView(scope.row)"
|
|
||||||
>
|
|
||||||
查看
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
type="danger"
|
|
||||||
text
|
|
||||||
bg
|
|
||||||
size="small"
|
|
||||||
:icon="Delete"
|
|
||||||
@click="handleDelete(scope.row)"
|
|
||||||
>
|
|
||||||
删除
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
<div class="pager-wrapper">
|
|
||||||
<el-pagination
|
|
||||||
background
|
|
||||||
:layout="paginationData.layout"
|
|
||||||
:page-sizes="paginationData.pageSizes"
|
|
||||||
:total="paginationData.total"
|
|
||||||
:page-size="paginationData.pageSize"
|
|
||||||
:current-page="paginationData.currentPage"
|
|
||||||
@size-change="handleSizeChange"
|
|
||||||
@current-change="handleCurrentChange"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</el-card>
|
|
||||||
|
|
||||||
<!-- 知识库详情对话框 -->
|
|
||||||
<el-dialog
|
|
||||||
v-model="viewDialogVisible"
|
|
||||||
:title="`知识库详情 - ${currentKnowledgeBase?.name || ''}`"
|
|
||||||
width="80%"
|
|
||||||
>
|
|
||||||
<div v-if="currentKnowledgeBase">
|
|
||||||
<div class="kb-info-header">
|
|
||||||
<div>
|
<div>
|
||||||
<span class="kb-info-label">知识库ID:</span> {{ currentKnowledgeBase.id }}
|
<el-button
|
||||||
</div>
|
type="primary"
|
||||||
<div>
|
:icon="Plus"
|
||||||
<span class="kb-info-label">文档总数:</span> {{ currentKnowledgeBase.doc_num }}
|
@click="handleCreate"
|
||||||
</div>
|
>
|
||||||
<div>
|
新建知识库
|
||||||
<span class="kb-info-label">语言:</span>
|
</el-button>
|
||||||
<el-tag type="info" size="small">
|
<el-button
|
||||||
{{ currentKnowledgeBase.language === 'Chinese' ? '中文' : '英文' }}
|
type="danger"
|
||||||
</el-tag>
|
:icon="Delete"
|
||||||
</div>
|
:disabled="multipleSelection.length === 0"
|
||||||
<div>
|
@click="handleBatchDelete"
|
||||||
<span class="kb-info-label">权限:</span>
|
>
|
||||||
<el-tag :type="currentKnowledgeBase.permission === 'me' ? 'success' : 'warning'" size="small">
|
批量删除
|
||||||
{{ currentKnowledgeBase.permission === 'me' ? '个人' : '团队' }}
|
|
||||||
</el-tag>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="document-table-header">
|
|
||||||
<div class="left-buttons">
|
|
||||||
<el-button type="primary" @click="handleAddDocument">
|
|
||||||
添加文档
|
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="document-table-wrapper" v-loading="documentLoading">
|
<div class="table-wrapper">
|
||||||
<el-table :data="documentList" style="width: 100%">
|
<el-table :data="tableData" @selection-change="handleSelectionChange">
|
||||||
<el-table-column prop="name" label="名称" min-width="180" show-overflow-tooltip />
|
<el-table-column type="selection" width="50" align="center" />
|
||||||
<el-table-column prop="chunk_num" label="分块数" width="100" align="center" />
|
<el-table-column label="序号" align="center" width="80">
|
||||||
<el-table-column label="上传日期" width="180" align="center">
|
<template #default="scope">
|
||||||
|
{{ (paginationData.currentPage - 1) * paginationData.pageSize + scope.$index + 1 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="name" label="知识库名称" align="center" min-width="120" />
|
||||||
|
<el-table-column prop="description" label="描述" align="center" min-width="180" show-overflow-tooltip />
|
||||||
|
<el-table-column prop="doc_num" label="文档数量" align="center" width="100" />
|
||||||
|
<!-- 添加语言列 -->
|
||||||
|
<el-table-column label="语言" align="center" width="100">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-tag type="info" size="small">
|
||||||
|
{{ scope.row.language === 'Chinese' ? '中文' : '英文' }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- 添加权限列 -->
|
||||||
|
<el-table-column label="权限" align="center" width="100">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-tag :type="scope.row.permission === 'me' ? 'success' : 'warning'" size="small">
|
||||||
|
{{ scope.row.permission === 'me' ? '个人' : '团队' }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="创建时间" align="center" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.create_date }}
|
{{ scope.row.create_date }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="解析状态" width="120" align="center">
|
<el-table-column fixed="right" label="操作" width="180" align="center">
|
||||||
<template #default="scope">
|
|
||||||
<el-tag :type="getParseStatusType(scope.row.progress)">
|
|
||||||
{{ formatParseStatus(scope.row.progress) }}
|
|
||||||
</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="操作" width="200" align="center">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
type="success"
|
type="primary"
|
||||||
|
text
|
||||||
|
bg
|
||||||
size="small"
|
size="small"
|
||||||
:icon="CaretRight"
|
:icon="View"
|
||||||
@click="handleParseDocument(scope.row)"
|
@click="handleView(scope.row)"
|
||||||
>
|
>
|
||||||
解析
|
查看
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="danger"
|
type="danger"
|
||||||
|
text
|
||||||
|
bg
|
||||||
size="small"
|
size="small"
|
||||||
:icon="Delete"
|
:icon="Delete"
|
||||||
@click="handleRemoveDocument(scope.row)"
|
@click="handleDelete(scope.row)"
|
||||||
>
|
>
|
||||||
移除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="pager-wrapper">
|
||||||
|
<el-pagination
|
||||||
|
background
|
||||||
|
:layout="paginationData.layout"
|
||||||
|
:page-sizes="paginationData.pageSizes"
|
||||||
|
:total="paginationData.total"
|
||||||
|
:page-size="paginationData.pageSize"
|
||||||
|
:current-page="paginationData.currentPage"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<!-- 知识库详情对话框 -->
|
||||||
|
<el-dialog
|
||||||
|
v-model="viewDialogVisible"
|
||||||
|
:title="`知识库详情 - ${currentKnowledgeBase?.name || ''}`"
|
||||||
|
width="80%"
|
||||||
|
>
|
||||||
|
<div v-if="currentKnowledgeBase">
|
||||||
|
<div class="kb-info-header">
|
||||||
|
<div>
|
||||||
|
<span class="kb-info-label">知识库ID:</span> {{ currentKnowledgeBase.id }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span class="kb-info-label">文档总数:</span> {{ currentKnowledgeBase.doc_num }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span class="kb-info-label">语言:</span>
|
||||||
|
<el-tag type="info" size="small">
|
||||||
|
{{ currentKnowledgeBase.language === 'Chinese' ? '中文' : '英文' }}
|
||||||
|
</el-tag>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span class="kb-info-label">权限:</span>
|
||||||
|
<el-tag :type="currentKnowledgeBase.permission === 'me' ? 'success' : 'warning'" size="small">
|
||||||
|
{{ currentKnowledgeBase.permission === 'me' ? '个人' : '团队' }}
|
||||||
|
</el-tag>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document-table-header">
|
||||||
|
<div class="left-buttons">
|
||||||
|
<el-button type="primary" @click="handleAddDocument">
|
||||||
|
添加文档
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="document-table-wrapper" v-loading="documentLoading">
|
||||||
|
<el-table :data="documentList" style="width: 100%">
|
||||||
|
<el-table-column prop="name" label="名称" min-width="180" show-overflow-tooltip />
|
||||||
|
<el-table-column prop="chunk_num" label="分块数" width="100" align="center" />
|
||||||
|
<el-table-column label="上传日期" width="180" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.row.create_date }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="解析状态" width="120" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-tag :type="getParseStatusType(scope.row.progress)">
|
||||||
|
{{ formatParseStatus(scope.row.progress) }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="200" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
type="success"
|
||||||
|
size="small"
|
||||||
|
:icon="CaretRight"
|
||||||
|
@click="handleParseDocument(scope.row)"
|
||||||
|
>
|
||||||
|
解析
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
size="small"
|
||||||
|
:icon="Delete"
|
||||||
|
@click="handleRemoveDocument(scope.row)"
|
||||||
|
>
|
||||||
|
移除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 分页控件 -->
|
||||||
|
<div class="pagination-container">
|
||||||
|
<el-pagination
|
||||||
|
v-model:current-page="docPaginationData.currentPage"
|
||||||
|
v-model:page-size="docPaginationData.pageSize"
|
||||||
|
:page-sizes="docPaginationData.pageSizes"
|
||||||
|
:layout="docPaginationData.layout"
|
||||||
|
:total="docPaginationData.total"
|
||||||
|
@size-change="handleDocSizeChange"
|
||||||
|
@current-change="handleDocCurrentChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 新建知识库对话框 -->
|
||||||
|
<el-dialog
|
||||||
|
v-model="createDialogVisible"
|
||||||
|
title="新建知识库"
|
||||||
|
width="40%"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="knowledgeBaseFormRef"
|
||||||
|
:model="knowledgeBaseForm"
|
||||||
|
:rules="knowledgeBaseFormRules"
|
||||||
|
label-width="100px"
|
||||||
|
>
|
||||||
|
<el-form-item label="知识库名称" prop="name">
|
||||||
|
<el-input v-model="knowledgeBaseForm.name" placeholder="请输入知识库名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述" prop="description">
|
||||||
|
<el-input
|
||||||
|
v-model="knowledgeBaseForm.description"
|
||||||
|
type="textarea"
|
||||||
|
:rows="3"
|
||||||
|
placeholder="请输入知识库描述"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="语言" prop="language">
|
||||||
|
<el-select v-model="knowledgeBaseForm.language" placeholder="请选择语言">
|
||||||
|
<el-option label="中文" value="Chinese" />
|
||||||
|
<el-option label="英文" value="English" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="权限" prop="permission">
|
||||||
|
<el-select v-model="knowledgeBaseForm.permission" placeholder="请选择权限">
|
||||||
|
<el-option label="个人" value="me" />
|
||||||
|
<el-option label="团队" value="team" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="createDialogVisible = false">
|
||||||
|
取消
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
:loading="uploadLoading"
|
||||||
|
@click="submitCreate"
|
||||||
|
>
|
||||||
|
确认创建
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 添加文档对话框 -->
|
||||||
|
<el-dialog
|
||||||
|
v-model="addDocumentDialogVisible"
|
||||||
|
title="添加文档到知识库"
|
||||||
|
width="70%"
|
||||||
|
>
|
||||||
|
<div v-loading="fileLoading">
|
||||||
|
<el-table
|
||||||
|
:data="fileList"
|
||||||
|
style="width: 100%"
|
||||||
|
@selection-change="handleFileSelectionChange"
|
||||||
|
>
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column prop="name" label="文件名" min-width="180" show-overflow-tooltip />
|
||||||
|
<el-table-column prop="size" label="大小" width="100" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ formatFileSize(scope.row.size) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="type" label="类型" width="100" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ formatFileType(scope.row.type) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- 移除上传日期列 -->
|
||||||
|
</el-table>
|
||||||
|
|
||||||
<!-- 分页控件 -->
|
<!-- 分页控件 -->
|
||||||
<div class="pagination-container">
|
<div class="pagination-container">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
v-model:current-page="docPaginationData.currentPage"
|
v-model:current-page="filePaginationData.currentPage"
|
||||||
v-model:page-size="docPaginationData.pageSize"
|
v-model:page-size="filePaginationData.pageSize"
|
||||||
:page-sizes="docPaginationData.pageSizes"
|
:page-sizes="filePaginationData.pageSizes"
|
||||||
:layout="docPaginationData.layout"
|
:layout="filePaginationData.layout"
|
||||||
:total="docPaginationData.total"
|
:total="filePaginationData.total"
|
||||||
@size-change="handleDocSizeChange"
|
@size-change="(size) => { filePaginationData.pageSize = size; filePaginationData.currentPage = 1; getFileList(); }"
|
||||||
@current-change="handleDocCurrentChange"
|
@current-change="(page) => { filePaginationData.currentPage = page; getFileList(); }"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
<!-- 新建知识库对话框 -->
|
<template #footer>
|
||||||
<el-dialog
|
<span class="dialog-footer">
|
||||||
v-model="createDialogVisible"
|
<el-button @click="addDocumentDialogVisible = false">取消</el-button>
|
||||||
title="新建知识库"
|
<el-button
|
||||||
width="40%"
|
type="primary"
|
||||||
>
|
:disabled="isAddingDocument"
|
||||||
<el-form
|
@click.stop.prevent="confirmAddDocument"
|
||||||
ref="knowledgeBaseFormRef"
|
>
|
||||||
:model="knowledgeBaseForm"
|
{{ isAddingDocument ? '处理中...' : '确定' }}
|
||||||
:rules="knowledgeBaseFormRules"
|
</el-button>
|
||||||
label-width="100px"
|
</span>
|
||||||
>
|
</template>
|
||||||
<el-form-item label="知识库名称" prop="name">
|
</el-dialog>
|
||||||
<el-input v-model="knowledgeBaseForm.name" placeholder="请输入知识库名称" />
|
</div>
|
||||||
</el-form-item>
|
<DocumentParseProgress
|
||||||
<el-form-item label="描述" prop="description">
|
:document-id="currentDocId"
|
||||||
<el-input
|
:visible="showParseProgress"
|
||||||
v-model="knowledgeBaseForm.description"
|
@close="showParseProgress = false"
|
||||||
type="textarea"
|
@parse-complete="handleParseComplete"
|
||||||
:rows="3"
|
@parse-failed="handleParseFailed"
|
||||||
placeholder="请输入知识库描述"
|
/>
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="语言" prop="language">
|
|
||||||
<el-select v-model="knowledgeBaseForm.language" placeholder="请选择语言">
|
|
||||||
<el-option label="中文" value="Chinese" />
|
|
||||||
<el-option label="英文" value="English" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="权限" prop="permission">
|
|
||||||
<el-select v-model="knowledgeBaseForm.permission" placeholder="请选择权限">
|
|
||||||
<el-option label="个人" value="me" />
|
|
||||||
<el-option label="团队" value="team" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<template #footer>
|
|
||||||
<el-button @click="createDialogVisible = false">
|
|
||||||
取消
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
:loading="uploadLoading"
|
|
||||||
@click="submitCreate"
|
|
||||||
>
|
|
||||||
确认创建
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
<!-- 添加文档对话框 -->
|
|
||||||
<el-dialog
|
|
||||||
v-model="addDocumentDialogVisible"
|
|
||||||
title="添加文档到知识库"
|
|
||||||
width="70%"
|
|
||||||
>
|
|
||||||
<div v-loading="fileLoading">
|
|
||||||
<el-table
|
|
||||||
:data="fileList"
|
|
||||||
style="width: 100%"
|
|
||||||
@selection-change="handleFileSelectionChange"
|
|
||||||
>
|
|
||||||
<el-table-column type="selection" width="55" />
|
|
||||||
<el-table-column prop="name" label="文件名" min-width="180" show-overflow-tooltip />
|
|
||||||
<el-table-column prop="size" label="大小" width="100" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ formatFileSize(scope.row.size) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="type" label="类型" width="100" align="center">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ formatFileType(scope.row.type) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<!-- 移除上传日期列 -->
|
|
||||||
</el-table>
|
|
||||||
|
|
||||||
<!-- 分页控件 -->
|
|
||||||
<div class="pagination-container">
|
|
||||||
<el-pagination
|
|
||||||
v-model:current-page="filePaginationData.currentPage"
|
|
||||||
v-model:page-size="filePaginationData.pageSize"
|
|
||||||
:page-sizes="filePaginationData.pageSizes"
|
|
||||||
:layout="filePaginationData.layout"
|
|
||||||
:total="filePaginationData.total"
|
|
||||||
@size-change="(size) => { filePaginationData.pageSize = size; filePaginationData.currentPage = 1; getFileList(); }"
|
|
||||||
@current-change="(page) => { filePaginationData.currentPage = page; getFileList(); }"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<template #footer>
|
|
||||||
<span class="dialog-footer">
|
|
||||||
<el-button @click="addDocumentDialogVisible = false">取消</el-button>
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
:disabled="isAddingDocument"
|
|
||||||
@click.stop.prevent="confirmAddDocument"
|
|
||||||
>
|
|
||||||
{{ isAddingDocument ? '处理中...' : '确定' }}
|
|
||||||
</el-button>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
</div>
|
||||||
<DocumentParseProgress
|
|
||||||
:document-id="currentDocId"
|
|
||||||
:visible="showParseProgress"
|
|
||||||
@close="showParseProgress = false"
|
|
||||||
@parse-complete="handleParseComplete"
|
|
||||||
@parse-failed="handleParseFailed"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
|
@ -118,14 +118,14 @@ export const constantRoutes: RouteRecordRaw[] = [
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/kb",
|
path: "/knowledgebase",
|
||||||
component: Layouts,
|
component: Layouts,
|
||||||
redirect: "/kb/index",
|
redirect: "/knowledgebase/index",
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "index",
|
path: "index",
|
||||||
component: () => import("@/pages/knowledgebase/index.vue"),
|
component: () => import("@/pages/knowledgebase/index.vue"),
|
||||||
name: "KB",
|
name: "KnowledgeBase",
|
||||||
meta: {
|
meta: {
|
||||||
title: "知识库管理",
|
title: "知识库管理",
|
||||||
svgIcon: "kb",
|
svgIcon: "kb",
|
||||||
|
|
Loading…
Reference in New Issue