class TodoList { static renderTodoList(todos, { onEditExecutor, onEditSchedule, onEditTitle, onEditDescription, onDelete, onComplete, onToggleDescription }) { const todosContainer = document.createElement('div'); todosContainer.className = 'todo-container'; todos.forEach(todo => { const todoElement = document.createElement('div'); todoElement.className = 'todo-item'; // 格式化日期 const createdDate = new Date(todo.created_at).toLocaleString('zh-CN'); const scheDate = new Date(todo.sche_time).toLocaleString('zh-CN'); const completeDate = todo.complete_time ? new Date(todo.complete_time).toLocaleString('zh-CN') : ''; todoElement.innerHTML = `

${todo.project} - ${todo.subproject} - ${todo.title}

${todo.completed ? '已完成' : '进行中'}
执行人: ${todo.exeuser || '未分配'} 创建人: ${todo.adduser}
计划时间: ${scheDate} 创建时间: ${createdDate}
${todo.completed ? `
完成时间: ${completeDate}
` : ''}
详细描述:
${todo.text || '无详细描述'}
`; // 添加执行人链接点击事件 const executorLink = todoElement.querySelector('.executor-link'); executorLink.addEventListener('click', (e) => { e.preventDefault(); onEditExecutor(todo); }); // 添加计划时间链接点击事件 const scheduleLink = todoElement.querySelector('.schedule-link'); scheduleLink.addEventListener('click', (e) => { e.preventDefault(); onEditSchedule(todo); }); // 添加编辑按钮事件 const editButton = todoElement.querySelector('.edit-button'); editButton.addEventListener('click', () => { onEditTitle(todo); }); // 添加描述编辑按钮事件 const descriptionEditButton = todoElement.querySelector('.todo-description .edit-button'); descriptionEditButton.addEventListener('click', () => { onEditDescription(todo); }); // 添加删除按钮事件 const deleteButton = todoElement.querySelector('.delete-button'); deleteButton.addEventListener('click', () => { onDelete(todo); }); // 添加完成/取消完成按钮事件 const completeButton = todoElement.querySelector('.complete-button'); completeButton.addEventListener('click', () => { onComplete(todo); }); // 添加展开/收起按钮事件 const toggleButton = todoElement.querySelector('.toggle-button'); const descriptionContent = todoElement.querySelector('.description-content'); const toggleIcon = toggleButton.querySelector('.toggle-icon'); // 移除可能存在的旧事件监听器 const newToggleButton = toggleButton.cloneNode(true); toggleButton.parentNode.replaceChild(newToggleButton, toggleButton); // 添加新的事件监听器 newToggleButton.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); onToggleDescription(descriptionContent, newToggleButton); }); todosContainer.appendChild(todoElement); }); return todosContainer; } } export default TodoList;