feat(knowledge): 实现知识库文件上传和预处理功能

- 新增文件上传接口和相关组件
- 实现文件上传、预处理和保存功能
- 添加预处理结果预览功能
-优化知识库详情展示,增加文件内容和关键词显示
- 实现知识库文件删除功能
- TODO 拆分的文档展示  还需要调整  可能会把tags 放在标题上  需要修改样式
This commit is contained in:
陈昱达
2025-04-14 21:18:56 +08:00
parent 7f123159a3
commit bcff977d38
7 changed files with 263 additions and 57 deletions

View File

@@ -13,17 +13,7 @@
</el-form-item>
<!-- 文件上传-->
<el-form-item label="" required prop="file">
<el-upload
drag
:action="form.radio === '1' ? uploadFileByCustom() : uploadFileByTemplate()"
:headers="headers"
class="upload-demo"
:on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload"
:show-file-list="false"
:file-list="fieldList"
:data="form"
>
<div @click="createFiled" class="upload-demo">
<el-empty v-if="!uploadLoading">
<template #description>
<p>点击或将文件拖拽到这里上传</p>
@@ -31,7 +21,7 @@
</template>
</el-empty>
<div v-else v-loading="uploadLoading" :element-loading-text="'文件上传中...'" style="height: 100%"></div>
</el-upload>
</div>
</el-form-item>
<!-- 本地文件 -->
@@ -80,8 +70,7 @@ export default {
name: 'preprocessing',
data() {
return {
uploadFileByCustom,
uploadFileByTemplate,
filed: null,
uploadLoading: false,
headers: {},
fieldList: [],
@@ -92,7 +81,7 @@ export default {
datasetId: this.$route.query.datasetId
},
previewDialogVisible: false, // 添加对话框显示控制变量
documentId: null
documentId: '1361400636462174208'
}
},
props: {},
@@ -104,6 +93,41 @@ export default {
this.$emit('getFileType', this.form.radio)
},
downloadTemplate() {},
// 生成filed
createFiled() {
let input = document.createElement('input')
input.type = 'file'
input.onchange = e => {
// this.$emit('getFile', e.target.files[0])
this.filed = e.target.files[0]
}
input.click()
},
uploadFiled() {
let formData = new FormData()
formData.append('file', this.filed)
formData.append('datasetId', this.form.datasetId)
let api = this.form.radio === '1' ? uploadFileByCustom : uploadFileByTemplate
if (this.form.radio === '1') {
formData.append('beMinerU', this.form.beMinerU)
formData.append('beOcr', this.form.beOcr)
}
api(formData).then(response => {
this.documentId = response.content.content
// 向上导入documentId
this.$emit('getDocumentId', this.documentId)
// 文件内容
this.$emit('getUploadDetail', response.content.content)
// 表单内容
this.$emit('getForm', this.form, this.$refs.processForm)
if (this.form.beMinerU) {
this.$emit('beMinerU', true)
}
})
},
handleUploadSuccess(response, file) {
this.fieldList = [file]
this.uploadLoading = false