// API基础URL const API_BASE_URL = 'http://localhost:8000'; // 增强错误处理 window.onerror = function(message, source, lineno, colno, error) { console.error('全局错误:', {message, source, lineno, colno, error}); alert('系统错误: ' + message); return true; }; // 修改初始化代码 document.addEventListener('DOMContentLoaded', function() { try { // 检查API是否可用 axios.get('/kb') .then(response => { if (response.status === 200) { initApp(); } else { throw new Error('API不可用'); } }) .catch(error => { console.error('API检查失败:', error); if(error.response) { console.log('HTTP状态码:', error.response.status); console.log('响应数据:', error.response.data); } alert(`后端服务异常: ${error.message || '未知错误'}`); }); } catch (error) { console.error('初始化异常:', error); alert('初始化失败: ' + error.message); } }); $(document).ready(function() { try { initApp(); } catch (e) { console.error('初始化失败:', e); alert('系统初始化失败: ' + e.message); } }); $(function() { // 初始化应用 function initApp() { loadKbList(); // 绑定事件 $('#add-kb-btn').click(showKbModal); $('#kb-selector').change(function() { loadFileList($(this).val()); }); } // 加载知识库列表 function loadKbList() { $.get(API_BASE_URL + '/kb') .done(function(data) { const $container = $('#kb-table-body').empty(); $.each(data, function(index, kb) { $container.append(` ${kb.id} ${kb.kb_name} ${kb.short_name || ''} ${new Date(kb.create_time).toLocaleString()} `); }); bindKbActions(); }) .fail(function(error) { console.error('加载知识库列表失败:', error); alert('加载知识库列表失败'); }); } // 绑定知识库操作 function bindKbActions() { $(document).on('click', '.edit-kb', function() { const kbId = $(this).data('id'); showKbModal(kbId); }); $(document).on('click', '.delete-kb', function() { const kbId = $(this).data('id'); if(confirm('确定要删除这个知识库吗?')) { deleteKb(kbId); } }); } // 初始化应用 initApp(); }); // 添加调试日志 function showKbModal(kbId = null) { console.log('显示知识库模态框,ID:', kbId); const modal = document.getElementById('kb-modal'); const form = document.getElementById('kb-form'); const title = document.getElementById('kb-modal-title'); // 重置表单 form.reset(); // 设置标题 title.textContent = kbId ? '编辑知识库' : '添加知识库'; // 如果是编辑模式,加载知识库数据 if (kbId) { axios.get(`${API_BASE_URL}/kb/${kbId}`) .then(response => { const kb = response.data; form.elements['name'].value = kb.name; form.elements['description'].value = kb.description || ''; }) .catch(error => { console.error('加载知识库详情失败:', error); alert('加载知识库详情失败'); }); } // 显示模态框 $(modal).modal('show'); // 处理表单提交 form.onsubmit = async function(e) { e.preventDefault(); const formData = { name: form.elements['name'].value, description: form.elements['description'].value }; try { if (kbId) { // 更新知识库 await axios.post(`${API_BASE_URL}/kb/update/${kbId}`, formData); alert('更新成功'); } else { // 创建知识库 await axios.post(`${API_BASE_URL}/kb`, formData); alert('添加成功'); } // 刷新列表并关闭模态框 loadKbList(); $(modal).modal('hide'); } catch (error) { console.error('操作失败:', error); alert('操作失败'); } }; } // 显示文件上传模态框 function showFileModal() { // 实现文件上传模态框逻辑 } // 删除知识库 async function deleteKb(kbId) { if (!confirm('确定要删除这个知识库吗?')) return; try { await axios.delete(`${API_BASE_URL}/kb/${kbId}`); alert('删除成功'); loadKbList(); } catch (error) { console.error('删除知识库失败:', error); alert('删除知识库失败'); } } // 删除文件 async function deleteFile(fileId) { if (!confirm('确定要删除这个文件吗?')) return; try { await axios.delete(`${API_BASE_URL}/kb_files/${fileId}`); alert('删除成功'); const kbId = document.getElementById('kb-selector').value; if (kbId) loadFileList(kbId); } catch (error) { console.error('删除文件失败:', error); alert('删除文件失败'); } } // 在initApp()函数前添加以下代码 function loadKbList() { axios.get(`${API_BASE_URL}/kb`) .then(response => { const container = document.getElementById('kb-table-body'); container.innerHTML = ''; response.data.forEach(kb => { const row = document.createElement('tr'); row.innerHTML = ` ${kb.id} ${kb.kb_name} ${kb.short_name || ''} ${new Date(kb.create_time).toLocaleString()} `; container.appendChild(row); }); bindKbActions(); }) .catch(error => { console.error('加载知识库列表失败:', error); alert('加载知识库列表失败: ' + error.message); }); } function loadFileList(kbId) { // 实现文件列表加载逻辑 } function bindKbActions() { // 绑定编辑按钮 document.querySelectorAll('.edit-kb').forEach(btn => { btn.addEventListener('click', function(e) { e.preventDefault(); const kbId = this.dataset.id; showKbModal(kbId); }); }); // 绑定删除按钮 document.querySelectorAll('.delete-kb').forEach(btn => { btn.addEventListener('click', function(e) { e.preventDefault(); const kbId = this.dataset.id; if(confirm('确定要删除这个知识库吗?')) { deleteKb(kbId); } }); }); } // 确保initApp函数已定义 function initApp() { loadKbList(); // 重新绑定所有事件监听器 $('#add-kb-btn').click(function(e) { e.preventDefault(); showKbModal(); }); $('#kb-selector').change(function() { loadFileList($(this).val()); }); console.log('应用初始化完成'); } // 使用jQuery的文档就绪函数 $(function() { try { initApp(); } catch (e) { console.error('初始化失败:', e); alert('系统初始化失败: ' + e.message); } }); function showKbModal(kbId) { // 确保kbId是数字或字符串 const id = typeof kbId === 'object' ? kbId.id : kbId; if (!id) { // 新建知识库模式 $('#kb-name').val(''); $('#kb-desc').val(''); $('#kb-modal').modal('show'); $('#kb-modal-title').text('新建知识库'); $('#kb-submit-btn').text('创建'); currentEditKbId = null; return; } $.ajax({ url: API_BASE_URL + '/kb/' + id, type: 'GET', success: function(response) { if (response) { $('#kb-name').val(response.kb_name); $('#kb-desc').val(response.short_name); $('#kb-modal').modal('show'); $('#kb-modal-title').text('编辑知识库'); $('#kb-submit-btn').text('更新'); currentEditKbId = id; } }, error: function(xhr) { console.error('加载知识库详情失败:', xhr.responseText); alert('加载知识库详情失败: ' + (xhr.responseJSON?.message || xhr.statusText)); } }); } // 显示文件上传模态框 function showFileModal() { // 实现文件上传模态框逻辑 } // 删除知识库 async function deleteKb(kbId) { if (!confirm('确定要删除这个知识库吗?')) return; try { await axios.delete(`${API_BASE_URL}/kb/${kbId}`); alert('删除成功'); loadKbList(); } catch (error) { console.error('删除知识库失败:', error); alert('删除知识库失败'); } } // 删除文件 async function deleteFile(fileId) { if (!confirm('确定要删除这个文件吗?')) return; try { await axios.delete(`${API_BASE_URL}/kb_files/${fileId}`); alert('删除成功'); const kbId = document.getElementById('kb-selector').value; if (kbId) loadFileList(kbId); } catch (error) { console.error('删除文件失败:', error); alert('删除文件失败'); } } // 在initApp()函数前添加以下代码 function loadKbList() { axios.get(`${API_BASE_URL}/kb`) .then(response => { const container = document.getElementById('kb-table-body'); container.innerHTML = ''; response.data.forEach(kb => { const row = document.createElement('tr'); row.innerHTML = ` ${kb.id} ${kb.kb_name} ${kb.short_name || ''} ${new Date(kb.create_time).toLocaleString()} `; container.appendChild(row); }); bindKbActions(); }) .catch(error => { console.error('加载知识库列表失败:', error); alert('加载知识库列表失败: ' + error.message); }); } function loadFileList(kbId) { // 实现文件列表加载逻辑 } function bindKbActions() { // 绑定编辑按钮 document.querySelectorAll('.edit-kb').forEach(btn => { btn.addEventListener('click', function(e) { e.preventDefault(); const kbId = this.dataset.id; showKbModal(kbId); }); }); // 绑定删除按钮 document.querySelectorAll('.delete-kb').forEach(btn => { btn.addEventListener('click', function(e) { e.preventDefault(); const kbId = this.dataset.id; if(confirm('确定要删除这个知识库吗?')) { deleteKb(kbId); } }); }); } // 确保initApp函数已定义 function initApp() { loadKbList(); // 重新绑定所有事件监听器 $('#add-kb-btn').click(function(e) { e.preventDefault(); showKbModal(); }); $('#kb-selector').change(function() { loadFileList($(this).val()); }); console.log('应用初始化完成'); } // 使用jQuery的文档就绪函数 $(function() { try { initApp(); } catch (e) { console.error('初始化失败:', e); alert('系统初始化失败: ' + e.message); } }); function loadKbDetail(kbId) { $.ajax({ url: API_BASE_URL + '/kb/' + kbId, type: 'GET', success: function(response) { if (response) { // 填充知识库详情到表单 $('#kb-name').val(response.kb_name); $('#kb-desc').val(response.short_name); // 显示编辑模态框 $('#kb-modal').modal('show'); $('#kb-modal-title').text('编辑知识库'); $('#kb-submit-btn').text('更新'); // 存储当前编辑的知识库ID currentEditKbId = kbId; } else { alert('获取知识库详情失败:数据为空'); } }, error: function(xhr) { console.error('加载知识库详情失败:', xhr.responseText); alert('加载知识库详情失败: ' + xhr.statusText); } }); }