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

@@ -1,8 +1,7 @@
<template>
<div style="height: 100%;">
<div class="mv10 mh20 text-right" v-if="isEdit">
<el-button type="primary" size="medium" @click="saveMarkDown">保存并处理</el-button>
<el-button size="medium">取消</el-button>
<el-button type="primary" size="medium" @click="saveMarkDown" :disabled="finishedMiner">保存并处理</el-button>
</div>
<div :class="!isEdit ? 'mt10 flex' : 'flex'" style="height:calc(100% - 35px);flex:1">
<iframe
@@ -11,7 +10,7 @@
:src="`${iframeSrc}/pdfjs-dist/web/viewer.html?file=${encodeURIComponent(prdUrl)}`"
class="miner-u el-card is-always-shadow ml20"
></iframe>
<div style="flex:1;" class="mh20 miner-u-md">
<div style="flex:1;" class="mh20 miner-u-md" v-loading="finishedMiner" element-loading-text="正在识别中...">
<el-tabs type="border-card" style="height: 100%;overflow: hidden" @tab-click="changeTab">
<el-tab-pane label="预览" style="overflow:scroll;">
<div v-html="markdownHtml" class="view-body" id="viewBody" ref="viewBody"></div>
@@ -27,7 +26,7 @@
</div>
</template>
<script>
import { getPdfUrl, minerUBbox, minerUMarkDown, minerUMarkDownUpdate } from '@/api/generatedApi/index'
import { getPdfUrl, minerUBbox, minerUMarkDown, minerUMarkDownUpdate, minerUQuery } from '@/api/generatedApi/index'
import { DEFAULT_COLOR_SECTION, PDF_COLOR_PICKER } from './pdf-color'
import MarkdownIt from 'markdown-it'
import markdownItKatex from 'markdown-it-katex'
@@ -40,6 +39,7 @@ export default {
data() {
return {
tableIdCounter: 0,
finishedMiner: false,
prdUrl: ``,
iframeSrc: window.location.origin,
bboxList: [],
@@ -103,7 +103,18 @@ export default {
default: true
}
},
watch: {},
watch: {
documentId: {
handler(newVal, oldVal) {
if (newVal) {
this.getMinerUStatus()
this.prdUrl = getPdfUrl({ documentId: newVal })
}
},
immediate: true
}
},
components: {},
filters: {},
methods: {
@@ -171,9 +182,10 @@ export default {
minerUMarkDownUpdate({
documentId: this.documentId,
newMd: pre
}).then(res => {
this.$emit('saveMarkDown', true)
})
},
// 给文件增加色块
formatJson(data) {
return data.map(item => {
@@ -245,13 +257,36 @@ export default {
'*'
)
}
},
// 获取识别状态
getMinerUStatus() {
this.finishedMiner = true
minerUQuery({ id: this.documentId }).then(res => {
console.log(res)
let mineruStatus = res.content.content.mineruStatus
switch (mineruStatus) {
case 0:
case '0':
setTimeout(() => {
this.getMinerUStatus()
}, 1000)
break
case 1:
case '1':
this.finishedMiner = false
this.getPDFDetailBbox()
this.getPDFDetailMarkDown()
break
default:
this.finishedMiner = false
break
}
})
}
},
created() {
this.getPDFDetailBbox()
this.getPDFDetailMarkDown()
this.prdUrl = getPdfUrl({ documentId: this.documentId })
},
created() {},
mounted() {
// 监听 iframe 的 postMessage 事件
window.addEventListener('message', event => {