fix: 修复keywords类型为string

This commit is contained in:
陆光LG
2025-08-20 22:29:36 +08:00
parent 119e45ba2b
commit e3973f4ae6

View File

@@ -731,7 +731,7 @@ const downloadFile = async (url: string) => {
try {
// 获取文件信息
const fileItem = formData.value.fileUploads.find((i) => i.url === url)
const fileName = fileItem?.fileName || '下载文件'
let fileName = fileItem?.fileName || '下载文件'
// 使用 fetch 获取文件
const response = await fetch(url)
@@ -739,6 +739,58 @@ const downloadFile = async (url: string) => {
throw new Error(`HTTP error! status: ${response.status}`)
}
// 如果文件名没有后缀尝试从URL或Content-Type中获取
if (!fileName.includes('.')) {
// 先尝试从URL中提取后缀
const urlParts = url.split('/')
const urlFileName = urlParts[urlParts.length - 1]
if (urlFileName.includes('.')) {
const extension = urlFileName.split('.').pop()
fileName = `${fileName}.${extension}`
} else {
// 从响应头的Content-Type中推断文件类型
const contentType = response.headers.get('Content-Type')
if (contentType) {
if (contentType.includes('text/')) {
fileName = `${fileName}.txt`
} else if (contentType.includes('application/pdf')) {
fileName = `${fileName}.pdf`
} else if (contentType.includes('image/')) {
const imageType = contentType.split('/')[1]
fileName = `${fileName}.${imageType}`
} else if (contentType.includes('application/zip')) {
fileName = `${fileName}.zip`
} else if (contentType.includes('application/json')) {
fileName = `${fileName}.json`
} else {
// 根据文件类型添加默认后缀
switch (fileItem?.fileType) {
case '1':
fileName = `${fileName}.c`
break
case '2':
fileName = `${fileName}.txt`
break
default:
fileName = `${fileName}.txt`
}
}
} else {
// 如果无法获取Content-Type根据fileType添加后缀
switch (fileItem?.fileType) {
case '1':
fileName = `${fileName}.c`
break
case '2':
fileName = `${fileName}.txt`
break
default:
fileName = `${fileName}.txt`
}
}
}
}
// 获取文件内容
const blob = await response.blob()
@@ -823,7 +875,16 @@ const open = async (queryParams: any, type: string, id?: number) => {
formLoading.value = true
try {
const res = await QuestionApi.getQuestion(id)
res.keywords = Array.isArray(res.keywords) ? res.keywords : []
// 处理 keywords如果是字符串则解析为数组否则确保是数组类型
if (typeof res.keywords === 'string') {
try {
res.keywords = JSON.parse(res.keywords)
} catch (e) {
res.keywords = []
}
} else {
res.keywords = Array.isArray(res.keywords) ? res.keywords : []
}
res.questionKeywords = Array.isArray(res.questionKeywords) ? res.questionKeywords : []
res.answerList = Array.isArray(res.answerList) ? res.answerList : []
res.fileUploads = Array.isArray(res.fileUploads)
@@ -1116,6 +1177,11 @@ const submitForm = async () => {
// 如果参考答案是独立管理的,提交时需要赋值给 analysis
dataToSubmit.analysis = referenceAnswer.value
// 将 keywords 数组转换为字符串类型保存
if (Array.isArray(dataToSubmit.keywords)) {
dataToSubmit.keywords = JSON.stringify(dataToSubmit.keywords)
}
if (formType.value === 'create') {
await QuestionApi.addQuestion(dataToSubmit)
message.success(t('common.createSuccess'))