1. 修改了文件上传的功能
This commit is contained in:
@@ -755,7 +755,7 @@
|
||||
};
|
||||
|
||||
// 数据集管理相关功能
|
||||
const API_BASE = 'http://10.10.10.77:8001/api';
|
||||
const API_BASE = 'http://localhost:3000/api';
|
||||
|
||||
// 加载数据集列表
|
||||
async function loadDatasets() {
|
||||
@@ -763,8 +763,11 @@
|
||||
const response = await fetch(`${API_BASE}/datasets`);
|
||||
const result = await response.json();
|
||||
|
||||
if (result.code === 200) {
|
||||
renderDatasetList(result.data.datasets);
|
||||
// 适配StandardResponse格式: {status: 1, response: {...}}
|
||||
if (result.status === 1 && result.response && result.response.datasets) {
|
||||
renderDatasetList(result.response.datasets);
|
||||
} else if (result.status === 0) {
|
||||
console.error('加载数据集列表失败:', result.response?.error || '未知错误');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('加载数据集列表失败:', error);
|
||||
@@ -788,11 +791,12 @@
|
||||
<div class="flex justify-between items-center">
|
||||
<div>
|
||||
<h3 class="font-medium text-dashboard-text">${dataset.name}</h3>
|
||||
<p class="text-sm text-dashboard-textLight mt-1">${dataset.size || '未知大小'} • ${dataset.records_count || dataset.description || '未知'}</p>
|
||||
<p class="text-sm text-dashboard-textLight mt-1">${dataset.size_display || dataset.size_mb + ' MB' || '未知大小'} • ${dataset.description || '无描述'}</p>
|
||||
</div>
|
||||
<div class="flex items-center space-x-2">
|
||||
<span class="px-2 py-1 ${statusClass} text-xs rounded">${statusText}</span>
|
||||
<button class="text-dashboard-primary hover:underline text-sm">查看详情</button>
|
||||
<button onclick="viewDatasetDetails('${dataset.file_id}')" class="text-dashboard-primary hover:underline text-sm">查看详情</button>
|
||||
<button onclick="deleteDataset('${dataset.file_id}', '${dataset.name}')" class="text-red-500 hover:text-red-700 text-sm">删除</button>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
@@ -814,6 +818,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
// 查看数据集详情
|
||||
// 处理文件上传
|
||||
async function handleFileUpload(input) {
|
||||
const file = input.files[0];
|
||||
@@ -849,12 +854,14 @@
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (result.code === 200) {
|
||||
// 适配StandardResponse格式: {status: 1, response: {...}}
|
||||
if (result.status === 1) {
|
||||
alert('上传成功!');
|
||||
// 重新加载数据集列表
|
||||
loadDatasets();
|
||||
} else {
|
||||
alert('上传失败: ' + (result.detail || result.message || '未知错误'));
|
||||
const errorMsg = result.response?.error || result.message || '未知错误';
|
||||
alert('上传失败: ' + errorMsg);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('上传失败:', error);
|
||||
@@ -872,6 +879,151 @@
|
||||
// 跳转到登录页面
|
||||
window.location.href = 'login.html';
|
||||
}
|
||||
|
||||
// 查看数据集详情
|
||||
async function viewDatasetDetails(fileId) {
|
||||
try {
|
||||
// 调用API获取文件内容
|
||||
const response = await fetch(`${API_BASE}/datasets/${fileId}/content?limit=5`);
|
||||
const result = await response.json();
|
||||
|
||||
if (result.status === 1) {
|
||||
const data = result.response;
|
||||
let contentHtml = '';
|
||||
|
||||
if (Array.isArray(data.preview)) {
|
||||
// 如果是数组,显示前5条记录
|
||||
contentHtml = '<div style="max-height: 400px; overflow-y: auto;"><pre>' +
|
||||
JSON.stringify(data.preview, null, 2) +
|
||||
'</pre></div>';
|
||||
} else {
|
||||
// 如果是对象,直接显示
|
||||
contentHtml = '<div style="max-height: 400px; overflow-y: auto;"><pre>' +
|
||||
JSON.stringify(data.preview, null, 2) +
|
||||
'</pre></div>';
|
||||
}
|
||||
|
||||
// 显示模态框
|
||||
showDatasetModal(data.filename, contentHtml);
|
||||
} else {
|
||||
alert('获取文件内容失败: ' + (result.response?.error || '未知错误'));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取文件详情失败:', error);
|
||||
alert('获取文件详情失败: 网络错误');
|
||||
}
|
||||
}
|
||||
|
||||
// 显示数据集详情模态框
|
||||
function showDatasetModal(title, content) {
|
||||
const modal = document.createElement('div');
|
||||
modal.style.cssText = `
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 10000;
|
||||
`;
|
||||
|
||||
const modalContent = document.createElement('div');
|
||||
modalContent.style.cssText = `
|
||||
background: white;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
max-width: 800px;
|
||||
max-height: 600px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
`;
|
||||
|
||||
const modalHeader = document.createElement('div');
|
||||
modalHeader.style.cssText = `
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 15px;
|
||||
border-bottom: 1px solid #eee;
|
||||
padding-bottom: 10px;
|
||||
`;
|
||||
|
||||
const titleElement = document.createElement('h3');
|
||||
titleElement.textContent = title;
|
||||
titleElement.style.cssText = 'margin: 0; color: #333;';
|
||||
|
||||
const closeButton = document.createElement('button');
|
||||
closeButton.textContent = '×';
|
||||
closeButton.style.cssText = `
|
||||
background: none;
|
||||
border: none;
|
||||
font-size: 24px;
|
||||
cursor: pointer;
|
||||
color: #666;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 4px;
|
||||
`;
|
||||
closeButton.onmouseover = () => closeButton.style.background = '#f0f0f0';
|
||||
closeButton.onmouseout = () => closeButton.style.background = 'none';
|
||||
|
||||
const closeModal = () => {
|
||||
document.body.removeChild(modal);
|
||||
};
|
||||
|
||||
closeButton.onclick = closeModal;
|
||||
modal.onclick = (e) => {
|
||||
if (e.target === modal) closeModal();
|
||||
};
|
||||
|
||||
modalHeader.appendChild(titleElement);
|
||||
modalHeader.appendChild(closeButton);
|
||||
|
||||
const contentDiv = document.createElement('div');
|
||||
contentDiv.innerHTML = content;
|
||||
|
||||
modalContent.appendChild(modalHeader);
|
||||
modalContent.appendChild(contentDiv);
|
||||
|
||||
modal.appendChild(modalContent);
|
||||
document.body.appendChild(modal);
|
||||
}
|
||||
|
||||
// 删除数据集
|
||||
async function deleteDataset(fileId, filename) {
|
||||
// 确认删除对话框
|
||||
const confirmMessage = `确定要删除数据集 "${filename}" 吗?\n\n此操作不可撤销!`;
|
||||
|
||||
if (!confirm(confirmMessage)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(`${API_BASE}/datasets/${fileId}`, {
|
||||
method: 'DELETE'
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (result.status === 1) {
|
||||
alert('删除成功!');
|
||||
// 重新加载数据集列表
|
||||
loadDatasets();
|
||||
} else {
|
||||
alert('删除失败: ' + (result.response?.error || '未知错误'));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('删除失败:', error);
|
||||
alert('删除失败: 网络错误');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user