fix: 修复keywords类型为string
This commit is contained in:
@@ -731,7 +731,7 @@ const downloadFile = async (url: string) => {
|
|||||||
try {
|
try {
|
||||||
// 获取文件信息
|
// 获取文件信息
|
||||||
const fileItem = formData.value.fileUploads.find((i) => i.url === url)
|
const fileItem = formData.value.fileUploads.find((i) => i.url === url)
|
||||||
const fileName = fileItem?.fileName || '下载文件'
|
let fileName = fileItem?.fileName || '下载文件'
|
||||||
|
|
||||||
// 使用 fetch 获取文件
|
// 使用 fetch 获取文件
|
||||||
const response = await fetch(url)
|
const response = await fetch(url)
|
||||||
@@ -739,6 +739,58 @@ const downloadFile = async (url: string) => {
|
|||||||
throw new Error(`HTTP error! status: ${response.status}`)
|
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()
|
const blob = await response.blob()
|
||||||
|
|
||||||
@@ -823,7 +875,16 @@ const open = async (queryParams: any, type: string, id?: number) => {
|
|||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
const res = await QuestionApi.getQuestion(id)
|
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.questionKeywords = Array.isArray(res.questionKeywords) ? res.questionKeywords : []
|
||||||
res.answerList = Array.isArray(res.answerList) ? res.answerList : []
|
res.answerList = Array.isArray(res.answerList) ? res.answerList : []
|
||||||
res.fileUploads = Array.isArray(res.fileUploads)
|
res.fileUploads = Array.isArray(res.fileUploads)
|
||||||
@@ -1116,6 +1177,11 @@ const submitForm = async () => {
|
|||||||
// 如果参考答案是独立管理的,提交时需要赋值给 analysis
|
// 如果参考答案是独立管理的,提交时需要赋值给 analysis
|
||||||
dataToSubmit.analysis = referenceAnswer.value
|
dataToSubmit.analysis = referenceAnswer.value
|
||||||
|
|
||||||
|
// 将 keywords 数组转换为字符串类型保存
|
||||||
|
if (Array.isArray(dataToSubmit.keywords)) {
|
||||||
|
dataToSubmit.keywords = JSON.stringify(dataToSubmit.keywords)
|
||||||
|
}
|
||||||
|
|
||||||
if (formType.value === 'create') {
|
if (formType.value === 'create') {
|
||||||
await QuestionApi.addQuestion(dataToSubmit)
|
await QuestionApi.addQuestion(dataToSubmit)
|
||||||
message.success(t('common.createSuccess'))
|
message.success(t('common.createSuccess'))
|
||||||
|
Reference in New Issue
Block a user