|
|
|
|
@ -674,14 +674,17 @@ export default { |
|
|
|
|
this.uploadProgressDialogVisible = true; |
|
|
|
|
this.uploadPercent = 0; |
|
|
|
|
|
|
|
|
|
// 创建初始上传记录(无论成功失败都会保存) |
|
|
|
|
const recordId = this.createTransferRecord(file); |
|
|
|
|
|
|
|
|
|
// 执行 MinIO 上传 |
|
|
|
|
this.uploadToMinio(file); |
|
|
|
|
this.uploadToMinio(file, recordId); |
|
|
|
|
|
|
|
|
|
// 清空文件输入 |
|
|
|
|
event.target.value = ""; |
|
|
|
|
}, |
|
|
|
|
// 上传到 MinIO(支持 PDF 缩略图生成) |
|
|
|
|
async uploadToMinio(file) { |
|
|
|
|
async uploadToMinio(file, recordId) { |
|
|
|
|
try { |
|
|
|
|
// 确保 MinIO 客户端已初始化 |
|
|
|
|
await this.ensureMinioInitialized(); |
|
|
|
|
@ -713,7 +716,8 @@ export default { |
|
|
|
|
result.objectName, |
|
|
|
|
file, |
|
|
|
|
result.thumbnailPath, |
|
|
|
|
bucket |
|
|
|
|
bucket, |
|
|
|
|
recordId |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// 完成上传 |
|
|
|
|
@ -727,6 +731,8 @@ export default { |
|
|
|
|
console.error("上传失败:", error); |
|
|
|
|
this.uploadProgressDialogVisible = false; |
|
|
|
|
this.$modal.msgError("上传失败: " + error.message); |
|
|
|
|
// 更新上传记录为失败状态 |
|
|
|
|
this.updateTransferRecord(recordId, false, ""); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
// 确保 MinIO 客户端已初始化 |
|
|
|
|
@ -738,7 +744,7 @@ export default { |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
// 保存知识库记录到业务数据库 |
|
|
|
|
async saveKnowledgeToDB(filePath, file, thumbnailPath = "", bucket = "") { |
|
|
|
|
async saveKnowledgeToDB(filePath, file, thumbnailPath = "", bucket = "", recordId = null) { |
|
|
|
|
console.log("saveKnowledgeToDB:", filePath, file, thumbnailPath, bucket); |
|
|
|
|
|
|
|
|
|
// 构建完整的文件路径(bucket/object 格式) |
|
|
|
|
@ -764,6 +770,72 @@ export default { |
|
|
|
|
}; |
|
|
|
|
await postKnowledgeCreate(data); |
|
|
|
|
console.log("知识库记录保存成功"); |
|
|
|
|
// 更新上传记录为成功状态,保存完整的可预览路径 |
|
|
|
|
if (recordId) { |
|
|
|
|
const minioEndpoint = this.$store.state.user.netConfig?.MINIO_ENDPOINT_HTTPS?.trim() || "http://47.92.6.51:9100/"; |
|
|
|
|
const fileUrl = minioEndpoint + fullFilePath; |
|
|
|
|
this.updateTransferRecord(recordId, true, fileUrl); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
// 创建初始上传记录(文件选择时调用,无论成功失败都会保存) |
|
|
|
|
createTransferRecord(file) { |
|
|
|
|
const STORAGE_KEY = "file_transfer_records"; |
|
|
|
|
try { |
|
|
|
|
// 获取现有记录 |
|
|
|
|
const existingData = localStorage.getItem(STORAGE_KEY); |
|
|
|
|
const records = existingData ? JSON.parse(existingData) : []; |
|
|
|
|
|
|
|
|
|
// 生成唯一记录 ID |
|
|
|
|
const recordId = Date.now() + "_" + Math.random().toString(36).substr(2, 9); |
|
|
|
|
|
|
|
|
|
// 创建新记录(transfer_type: 3 表示上传) |
|
|
|
|
const newRecord = { |
|
|
|
|
id: recordId, |
|
|
|
|
file_name: file.name, |
|
|
|
|
file_size: file.size, |
|
|
|
|
time: new Date().toISOString(), |
|
|
|
|
transfer_type: 3, // 3 表示上传操作 |
|
|
|
|
is_success: false, // 初始状态为未完成 |
|
|
|
|
is_uploading: true, // 正在上传中 |
|
|
|
|
file_url: "", |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// 添加到记录数组 |
|
|
|
|
records.unshift(newRecord); |
|
|
|
|
|
|
|
|
|
// 保存回 localStorage |
|
|
|
|
localStorage.setItem(STORAGE_KEY, JSON.stringify(records)); |
|
|
|
|
console.log("上传记录已创建:", newRecord); |
|
|
|
|
return recordId; |
|
|
|
|
} catch (e) { |
|
|
|
|
console.error("创建上传记录失败", e); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
// 更新上传记录状态 |
|
|
|
|
updateTransferRecord(recordId, isSuccess, fileUrl = "") { |
|
|
|
|
const STORAGE_KEY = "file_transfer_records"; |
|
|
|
|
try { |
|
|
|
|
// 获取现有记录 |
|
|
|
|
const existingData = localStorage.getItem(STORAGE_KEY); |
|
|
|
|
const records = existingData ? JSON.parse(existingData) : []; |
|
|
|
|
|
|
|
|
|
// 查找并更新记录 |
|
|
|
|
const recordIndex = records.findIndex(record => record.id === recordId); |
|
|
|
|
if (recordIndex !== -1) { |
|
|
|
|
records[recordIndex].is_success = isSuccess; |
|
|
|
|
records[recordIndex].is_uploading = false; // 上传完成,不再是上传中 |
|
|
|
|
if (fileUrl) { |
|
|
|
|
records[recordIndex].file_url = fileUrl; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 保存回 localStorage |
|
|
|
|
localStorage.setItem(STORAGE_KEY, JSON.stringify(records)); |
|
|
|
|
console.log("上传记录已更新:", records[recordIndex]); |
|
|
|
|
} |
|
|
|
|
} catch (e) { |
|
|
|
|
console.error("更新上传记录失败", e); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}; |
|
|
|
|
|