let currentQA = null; let selectedQuestions = []; let selectedAnswers = []; let selectedQAs = new Set(); // 用于批量操作 let groupList = []; // 存储群组列表 // 加载群组列表 async function loadGroupList() { try { const response = await fetch('api/groups'); const result = await response.json(); if (result.success) { groupList = result.groups || []; // 更新过滤区域的群组下拉框 const groupFilter = document.getElementById('groupFilter'); if (groupFilter) { updateGroupSelect(groupFilter); } // 更新模态框中的群组下拉框 const groupIdSelect = document.getElementById('groupId'); if (groupIdSelect) { updateGroupSelect(groupIdSelect); } } else { console.error('加载群组列表失败:', result.error); } } catch (error) { console.error('加载群组列表时出错:', error); } } // 更新群组下拉框 function updateGroupSelect(selectElement) { if (!selectElement) return; // 保存当前选中的值 const currentValue = selectElement.value; // 清空下拉框,保留第一个选项 selectElement.innerHTML = ''; // 添加群组选项 groupList.forEach(group => { const option = document.createElement('option'); option.value = group.id; option.textContent = group.name ? `${group.name} (${group.id})` : group.id; selectElement.appendChild(option); }); // 恢复之前选中的值 if (currentValue) { selectElement.value = currentValue; } } // 页面加载时获取QA列表 document.addEventListener('DOMContentLoaded', function () { loadQAList(); loadGroupList(); updateSearchHistory(); // 添加点击外部关闭搜索建议的事件 document.addEventListener('click', function(e) { const suggestionsContainer = document.getElementById('searchSuggestions'); const searchInput = document.getElementById('searchInput'); if (suggestionsContainer && searchInput && !suggestionsContainer.contains(e.target) && e.target !== searchInput) { suggestionsContainer.style.display = 'none'; } }); // 添加回车键搜索功能 const searchInput = document.getElementById('searchInput'); if (searchInput) { searchInput.addEventListener('keypress', function(e) { if (e.key === 'Enter') { advancedSearch(); } }); } }); // 加载QA列表 async function loadQAList() { try { // 获取搜索参数 const searchInput = document.getElementById('searchInput'); const groupFilter = document.getElementById('groupFilter'); const startDateFilter = document.getElementById('startDateFilter'); const endDateFilter = document.getElementById('endDateFilter'); const keyword = searchInput ? searchInput.value.trim() : ''; const groupId = groupFilter ? groupFilter.value.trim() : ''; const startTime = startDateFilter ? startDateFilter.value : ''; const endTime = endDateFilter ? endDateFilter.value : ''; // 构建查询URL let url = 'api/qa'; const params = new URLSearchParams(); if (keyword) params.append('keyword', keyword); if (groupId) params.append('group_id', groupId); if (startTime) params.append('start_time', startTime); if (endTime) params.append('end_time', endTime); if (params.toString()) { url += '?' + params.toString(); } const response = await fetch(url); const result = await response.json(); if (result.success) { // 根据后端API返回的数据结构,data字段包含qa_list const qaList = result.qa_list || []; displayQAList(qaList); // 更新统计信息 updateStats(result.total || qaList.length); } else { alert('加载QA列表失败: ' + result.error); } } catch (error) { // 修复错误:确保error.message存在,避免"Cannot read properties of undefined"错误 const errorMessage = error?.message || error?.toString() || '未知错误'; alert('加载QA列表时出错: ' + errorMessage); } } // 更新统计信息 function updateStats(total) { const statsElement = document.getElementById('statsInfo'); if (statsElement) { statsElement.textContent = `共找到 ${total} 条QA记录`; } } // 显示QA列表 async function displayQAList(qaList) { const qaListContainer = document.getElementById('qaList'); if (qaList.length === 0) { qaListContainer.innerHTML = `
点击"创建新QA"按钮开始创建第一个问答记录
请尝试其他搜索关键词或调整搜索条件