feat(knowledge): 添加下载知识文件模板功能

- task-page.js
  1. 添加对应的接口
- request.js
  1. 更改校验显示
- preprocessing.vue
  实现 下载模板的功能
This commit is contained in:
Huangzhe
2025-04-17 15:03:07 +08:00
parent eb3be6ba57
commit 3f9f96646d
3 changed files with 74 additions and 16 deletions

View File

@@ -21,3 +21,14 @@ export function getRuleList(data = {}) {
data
})
}
/**
* 下载知识文件模板
*/
export function downloadKnowledgeTemplate() {
return request({
url: getUrl('/datasetDocumentEx/download'),
method: 'get',
responseType: 'blob'
})
}

View File

@@ -35,7 +35,7 @@ service.interceptors.request.use(
endLoading()
}
console.log(config.noLoading)
// console.log(config.noLoading)
//linkage 接口
// config.type 可以从api的接口地址定义 可以不触发loading
if (config.noLoading != true) {
@@ -53,13 +53,18 @@ service.interceptors.response.use(
const res = response.data
endLoading()
if (res.content.code) {
res.content.result = res.content.code
// 检查res.content是否存在处理blob等特殊响应类型
if (res.content) {
if (res.content.code) {
res.content.result = res.content.code
}
if (res.content.result) {
res.content.code = res.content.result
}
}
if (res.content.result) {
res.content.code = res.content.result
}
if (!res.content) {
// 只有当res.content不存在且res不是blob时才显示错误
if (!res.content && !(response.config.responseType === 'blob')) {
Message({
message: res.message,
type: 'error',
@@ -67,13 +72,13 @@ service.interceptors.response.use(
})
return Promise.reject(res)
}
if (response.request.responseType == 'blob' || response.request.responseType == 'Blob') {
if (response.request.responseType === 'blob' || response.request.responseType === 'Blob') {
return response.data
}
if (res.content.code != '0' && res.content.result != 0) {
if (res.content.code !== '0' && res.content.result !== 0) {
//500毫秒延迟 显得过度平滑
// token过期或失效 根据项目设置其code
if (response.headers['content-type'] != 'application/x-zip-compressed') {
if (response.headers['content-type'] !== 'application/x-zip-compressed') {
if (res.content.code === '4001' || res.content.code === '4002') {
MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确认退出', {
confirmButtonText: '重新登录',
@@ -93,7 +98,7 @@ service.interceptors.response.use(
}
}
} else {
if (res.content.code == '1' || res.content.code == '') {
if (res.content.code === '1' || res.content.code === '') {
Message({
message: res.content.resultMessage ? res.content.resultMessage : res.content.message ? res.content.message : '接口错误',
type: 'error',

View File

@@ -46,7 +46,8 @@
<el-form-item label="是否进行预处理:" required prop="beMinerU">
<template slot="label">
是否进行预处理
<el-tooltip class="item" effect="dark" content="通过整合最先进的文档解析模型来提高内容提取质量" placement="top">
<el-tooltip class="item" effect="dark" content="通过整合最先进的文档解析模型来提高内容提取质量"
placement="top">
<i class="el-icon-info ml5" style="color: #909399;"></i>
</el-tooltip>
@@ -82,7 +83,9 @@
</div>
</template>
<script>
import { uploadFileByCustom, uploadFileByTemplate } from '@/api/generatedApi/index'
import { uploadFileByCustom, uploadFileByTemplate } from '@/api/generatedApi'
import { downloadKnowledgeTemplate } from '@/api/knowledge/task-page'
export default {
name: 'preprocessing',
data() {
@@ -110,7 +113,40 @@ export default {
getFileType() {
this.$emit('getFileType', this.form.radio)
},
downloadTemplate() {},
downloadTemplate() {
downloadKnowledgeTemplate().then((res) => {
// 创建Blob URL
const blob = new Blob([res.data])
const url = window.URL.createObjectURL(blob)
console.log(`blob url: `, url)
// 创建一个临时a标签并触发点击
const link = document.createElement('a')
link.href = url
// 尝试从响应头获取文件名,如果没有则使用默认名称
// const contentDisposition = res.headers['content-disposition']
// console.log(`content-disposition: `, contentDisposition)
let filename = '知识文件模板.pdf'
// if (contentDisposition) {
// const filenameMatch = contentDisposition.match(/filename="?(.+)"?/)
// if (filenameMatch && filenameMatch[1]) {
// filename = filenameMatch[1]
// }
// }
link.setAttribute('download', filename)
document.body.appendChild(link)
link.click()
// 清理
window.URL.revokeObjectURL(url)
document.body.removeChild(link)
}).catch(error => {
this.$message.error(error)
})
},
// 生成filed
createFiled() {
@@ -204,8 +240,10 @@ export default {
return true
}
},
created() {},
mounted() {},
created() {
},
mounted() {
},
computed: {}
}
</script>
@@ -219,9 +257,11 @@ export default {
height: 330px;
width: 50%;
text-align: center;
&:hover {
border-color: #409eff;
}
&.drag-over {
border-color: #409eff;
background-color: #ecf5ff;
@@ -238,6 +278,7 @@ export default {
}
}
}
#preprocessing-container {
}
@@ -271,6 +312,7 @@ export default {
overflow-y: auto;
}
}
.dialog-footer {
text-align: center;
}