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

View File

@@ -46,7 +46,8 @@
<el-form-item label="是否进行预处理:" required prop="beMinerU"> <el-form-item label="是否进行预处理:" required prop="beMinerU">
<template slot="label"> <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> <i class="el-icon-info ml5" style="color: #909399;"></i>
</el-tooltip> </el-tooltip>
@@ -82,7 +83,9 @@
</div> </div>
</template> </template>
<script> <script>
import { uploadFileByCustom, uploadFileByTemplate } from '@/api/generatedApi/index' import { uploadFileByCustom, uploadFileByTemplate } from '@/api/generatedApi'
import { downloadKnowledgeTemplate } from '@/api/knowledge/task-page'
export default { export default {
name: 'preprocessing', name: 'preprocessing',
data() { data() {
@@ -110,7 +113,40 @@ export default {
getFileType() { getFileType() {
this.$emit('getFileType', this.form.radio) 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 // 生成filed
createFiled() { createFiled() {
@@ -204,8 +240,10 @@ export default {
return true return true
} }
}, },
created() {}, created() {
mounted() {}, },
mounted() {
},
computed: {} computed: {}
} }
</script> </script>
@@ -219,9 +257,11 @@ export default {
height: 330px; height: 330px;
width: 50%; width: 50%;
text-align: center; text-align: center;
&:hover { &:hover {
border-color: #409eff; border-color: #409eff;
} }
&.drag-over { &.drag-over {
border-color: #409eff; border-color: #409eff;
background-color: #ecf5ff; background-color: #ecf5ff;
@@ -238,6 +278,7 @@ export default {
} }
} }
} }
#preprocessing-container { #preprocessing-container {
} }
@@ -271,6 +312,7 @@ export default {
overflow-y: auto; overflow-y: auto;
} }
} }
.dialog-footer { .dialog-footer {
text-align: center; text-align: center;
} }