知识库文档数量同步
This commit is contained in:
@@ -278,6 +278,8 @@ public class AiUploadFileServiceImpl implements AiUploadFileService {
|
||||
uploadFile.setDeleted(false);
|
||||
|
||||
int rows = uploadFileMapper.insertUploadFile(uploadFile);
|
||||
knowledge.setDocumentCount(knowledge.getDocumentCount() + 1);
|
||||
int knowledgeRows = knowledgeMapper.updateKnowledge(knowledge);
|
||||
if (rows > 0) {
|
||||
log.info("知识库文件上传成功: uploadFileId={}, sysFileId={}, fileName={}",
|
||||
uploadFile.getID(), sysFile.getID(), originalFilename);
|
||||
@@ -286,6 +288,9 @@ public class AiUploadFileServiceImpl implements AiUploadFileService {
|
||||
asyncUpdateVectorStatus(uploadFile.getID());
|
||||
|
||||
resultDomain.success("文件上传成功", uploadFile);
|
||||
if (knowledgeRows <=0) {
|
||||
resultDomain.setMessage("知识库文件数量更新失败");
|
||||
}
|
||||
return resultDomain;
|
||||
} else {
|
||||
resultDomain.fail("保存文件记录失败");
|
||||
@@ -330,7 +335,9 @@ public class AiUploadFileServiceImpl implements AiUploadFileService {
|
||||
failedFiles.add(file.getOriginalFilename() + ": " + uploadResult.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
TbAiKnowledge knowledge = knowledgeMapper.selectKnowledgeById(knowledgeId);
|
||||
knowledge.setDocumentCount(knowledge.getDocumentCount() + uploadedFiles.size());
|
||||
int knowledgeRows = knowledgeMapper.updateKnowledge(knowledge);
|
||||
if (!failedFiles.isEmpty()) {
|
||||
String message = "部分文件上传失败: " + String.join(", ", failedFiles);
|
||||
log.warn(message);
|
||||
@@ -338,7 +345,9 @@ public class AiUploadFileServiceImpl implements AiUploadFileService {
|
||||
} else {
|
||||
resultDomain.success("批量上传成功", uploadedFiles);
|
||||
}
|
||||
|
||||
if (knowledgeRows <=0) {
|
||||
resultDomain.setMessage("知识库文件数量更新失败");
|
||||
}
|
||||
return resultDomain;
|
||||
|
||||
} catch (Exception e) {
|
||||
@@ -386,9 +395,14 @@ public class AiUploadFileServiceImpl implements AiUploadFileService {
|
||||
deleteEntity.setID(fileId);
|
||||
|
||||
int rows = uploadFileMapper.deleteUploadFile(deleteEntity);
|
||||
knowledge.setDocumentCount(knowledge.getDocumentCount() - 1);
|
||||
int knowledgeRows = knowledgeMapper.updateKnowledge(knowledge);
|
||||
if (rows > 0) {
|
||||
log.info("文件删除成功: {} - {}", fileId, file.getFileName());
|
||||
resultDomain.success("文件删除成功", true);
|
||||
if (knowledgeRows <=0) {
|
||||
resultDomain.setMessage("知识库文件数量更新失败");
|
||||
}
|
||||
return resultDomain;
|
||||
} else {
|
||||
resultDomain.fail("文件删除失败");
|
||||
|
||||
@@ -12,8 +12,9 @@
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<div class="knowledge-list-content">
|
||||
<div class="knowledge-grid">
|
||||
<KnowledgeCard
|
||||
<KnowledgeCard class="knowledge-card"
|
||||
v-for="knowledge in knowledgeCards"
|
||||
:key="knowledge.id"
|
||||
:knowledge="knowledge"
|
||||
@@ -22,15 +23,17 @@
|
||||
@delete="handleDelete"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<el-empty v-if="!loading && knowledgeCards.length === 0" description="暂无知识库" />
|
||||
|
||||
<el-pagination
|
||||
v-if="total > 0"
|
||||
v-if="total >= 0"
|
||||
:current-page="pageParam.pageNumber"
|
||||
:page-size="pageParam.pageSize"
|
||||
:total="total"
|
||||
:page-sizes="[12, 24, 48]"
|
||||
:page-sizes="[9, 18, 36]"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
@current-change="handlePageChange"
|
||||
@size-change="handleSizeChange"
|
||||
@@ -209,9 +212,9 @@ function handleSizeChange(size: number) {
|
||||
<style scoped lang="scss">
|
||||
.knowledge-management-container {
|
||||
position: relative;
|
||||
padding: 24px;
|
||||
// padding: 24px;
|
||||
background: #F5F5F7;
|
||||
min-height: calc(100vh - 60px);
|
||||
height: calc(100vh - 40px - 44px - 24px - 110px);
|
||||
}
|
||||
|
||||
.knowledge-list-container {
|
||||
@@ -219,8 +222,11 @@ function handleSizeChange(size: number) {
|
||||
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||
border-radius: 14px;
|
||||
padding: 24px;
|
||||
max-width: 1600px;
|
||||
height: 100%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.list-header {
|
||||
@@ -228,6 +234,7 @@ function handleSizeChange(size: number) {
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 24px;
|
||||
width: 100%;
|
||||
|
||||
.list-title {
|
||||
font-size: 18px;
|
||||
@@ -253,18 +260,49 @@ function handleSizeChange(size: number) {
|
||||
}
|
||||
}
|
||||
|
||||
.knowledge-list-content{
|
||||
width: 100%;
|
||||
overflow-y: auto;
|
||||
height: 100%;
|
||||
|
||||
// 自定义滚动条样式
|
||||
&::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background: #D1D5DB;
|
||||
border-radius: 3px;
|
||||
|
||||
&:hover {
|
||||
background: #9CA3AF;
|
||||
}
|
||||
}
|
||||
}
|
||||
.knowledge-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
||||
display: flex;
|
||||
width: 100%;
|
||||
|
||||
gap: 20px;
|
||||
margin-bottom: 24px;
|
||||
margin-top: 12px;
|
||||
|
||||
.knowledge-card {
|
||||
width: 33%;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.el-pagination) {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
justify-content: flex-end;
|
||||
padding-top: 24px;
|
||||
border-top: 1px solid #F3F3F5;
|
||||
margin-top: auto; // 推到容器底部
|
||||
width: 100%;
|
||||
|
||||
.el-pager li {
|
||||
&.is-active {
|
||||
|
||||
@@ -23,10 +23,10 @@
|
||||
<div class="knowledge-avatar">
|
||||
<el-image
|
||||
v-if="knowledge.avatar"
|
||||
:src="knowledge.avatar"
|
||||
:src="FILE_DOWNLOAD_URL + knowledge.avatar"
|
||||
fit="cover"
|
||||
/>
|
||||
<el-icon v-else :size="48"><Document /></el-icon>
|
||||
<el-icon v-else :size="48">📚</el-icon>
|
||||
</div>
|
||||
<div class="knowledge-details">
|
||||
<h2 class="knowledge-name">{{ knowledge.title }}</h2>
|
||||
@@ -230,6 +230,7 @@ import {
|
||||
import type { AiKnowledge, AiUploadFile } from '@/types/ai';
|
||||
import { fileUploadApi } from '@/apis/ai';
|
||||
import { DocumentSegmentDialog } from './';
|
||||
import { FILE_DOWNLOAD_URL } from '@/config';
|
||||
|
||||
defineOptions({
|
||||
name: 'KnowledgeInfo'
|
||||
@@ -476,6 +477,7 @@ function formatFileSize(bytes: number | undefined): string {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
z-index: 10;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.panel-header {
|
||||
|
||||
Reference in New Issue
Block a user