feat(knowledge): 优化知识库文件上传功能

- 添加通用模板上传功能
- 优化上传接口调用逻辑
- 增加上传进度显示和模板下载功能
- 调整预处理结果预览对话框逻辑
- 优化文档详情查看功能
This commit is contained in:
陈昱达
2025-04-14 13:26:15 +08:00
parent 5a239bd794
commit 868598cee2
4 changed files with 69 additions and 50 deletions

View File

@@ -8,18 +8,33 @@
</el-radio-group>
<div class="mt10" v-if="form.radio === '2'">
<el-button type="primary" size="medium" class="fs14">下载知识文件模板</el-button>
<el-button type="primary" size="medium" class="fs14" @click="downloadTemplate">下载知识文件模板</el-button>
</div>
</el-form-item>
<!-- 文件上传-->
<el-form-item label="" required prop="file">
<el-upload drag :action="actionUrl" :headers="headers" class="upload-demo" :on-success="handleUploadSuccess" :show-file-list="false" :data="form">
<el-empty>
<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,
beMinerU: form.radio === '2' ? null : form.beMinerU,
beOcr: form.radio === '2' ? null : form.beOcr
}"
>
<el-empty v-if="!uploadLoading">
<template #description>
<p>点击或将文件拖拽到这里上传</p>
<p>支持扩展名.xlsx .doc .docx .pdf .txt...</p>
</template>
</el-empty>
<div v-else v-loading="uploadLoading" :element-loading-text="'文件上传中...'" style="height: 100%"></div>
</el-upload>
</el-form-item>
@@ -55,23 +70,25 @@
</div>
</el-form>
<!-- 添加预处理结果预览对话框 -->
<el-drawer :visible.sync="previewDialogVisible" size="80%" title="预处理结果预览" :before-close="handleClose">
<div style="height:calc(100% - 55px);">
<r-miner-u :documentId="documentId"></r-miner-u>
</div>
</el-drawer>
<!-- &lt;!&ndash; 添加预处理结果预览对话框 &ndash;&gt;-->
<!-- <el-drawer :visible.sync="previewDialogVisible" size="80%" title="预处理结果预览" :before-close="handleClose">-->
<!-- <div style="height:calc(100% - 55px);">-->
<!-- <r-miner-u :documentId="documentId"></r-miner-u>-->
<!-- </div>-->
<!-- </el-drawer>-->
</div>
</template>
<script>
import { uploadFileByCustom } from '@/api/generatedApi/index'
import { uploadFileByCustom, uploadFileByTemplate } from '@/api/generatedApi/index'
export default {
name: 'preprocessing',
data() {
return {
actionUrl: uploadFileByCustom(),
uploadFileByCustom,
uploadFileByTemplate,
uploadLoading: false,
headers: {},
fieldList: [],
form: {
radio: '1',
beMinerU: false,
@@ -87,30 +104,10 @@ export default {
components: {},
filters: {},
methods: {
handleSuccess(response, file, fileList) {
console.log(response, file, fileList)
},
handleError(err, file, fileList) {
console.log(err, file, fileList)
},
beforeUpload(file) {
console.log(file)
return true
},
handleChange(file, fileList) {
console.log(file, fileList)
},
handleRemove(file, fileList) {
console.log(file, fileList)
},
handlePreview(file) {
console.log(file)
},
emitForm() {
this.$emit('getForm', this.$refs.processForm, this.form)
},
handleUploadSuccess(response, file, fileList) {
console.log(response)
downloadTemplate() {},
handleUploadSuccess(response, file) {
this.fieldList = [file]
this.uploadLoading = false
if (response.content.result === '0') {
this.$message({
type: 'success',
@@ -118,12 +115,13 @@ export default {
})
// 如果是预处理
if (this.form.beMinerU) {
this.previewDialogVisible = true
this.$emit('beMinerU', true)
}
this.documentId = response.content.content.id
// 向上导入documentId
this.$emit('getDocumentId', this.documentId)
this.$emit('getUploadDetail', response.content.content)
this.$emit('getForm', this.$refs.processForm, this.form)
} else {
this.$message({
type: 'error',
@@ -133,17 +131,9 @@ export default {
// 显示预处理结果预览对话框
// this.previewDialogVisible = true
},
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done()
})
.catch(_ => {})
},
handleBeforeUpload(file) {
// 这里可以添加文件上传前的处理逻辑
console.log('开始上传文件:', file)
this.previewDialogVisible = true
this.uploadLoading = true
// 可以在这里进行文件类型、大小等验证
// 返回 true 继续上传,返回 false 停止上传