fix: 修复keywords类型为string
This commit is contained in:
@@ -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'))
|
||||
|
Reference in New Issue
Block a user