let currentPage = 1; let claimModal, completeModal, detailModal; $(document).ready(function() { // 初始化模态框 claimModal = new bootstrap.Modal(document.getElementById('claimModal')); completeModal = new bootstrap.Modal(document.getElementById('completeModal')); detailModal = new bootstrap.Modal(document.getElementById('detailModal')); // 加载任务列表 loadTasks(); }); // 加载任务列表 function loadTasks(page = 1) { const status = $('#filter-status').val(); const scope = $('#filter-scope').val(); let params = { page: page, per_page: 20 }; if (status) { params.status = status; } if (scope === 'my') { const user = JSON.parse(localStorage.getItem('current_user')); params.user_id = user.id; } $.ajax({ url: '/api/groups/1/tasks', method: 'GET', data: params, success: function(response) { renderTasks(response.tasks); renderPagination(response.page, response.pages); currentPage = page; }, error: handleAjaxError }); } // 渲染任务列表 function renderTasks(tasks) { const tbody = $('#task-list'); tbody.empty(); if (tasks.length === 0) { tbody.append('暂无数据'); return; } const currentUser = JSON.parse(localStorage.getItem('current_user')); tasks.forEach(function(task) { const priorityClass = getPriorityClass(task.priority); let actions = ''; // 待认领状态 - 所有人可认领 if (task.status === 'pending') { actions = ``; } // 已认领状态 - 认领人可完成或取消 if (task.status === 'claimed' && task.claimed_by_id === currentUser.id) { actions = ` `; } // 查看详情按钮 actions += ` `; // 管理员可删除 if (currentUser.role === 'admin') { actions += ` `; } const row = ` ${task.id} ${task.series_link ? `${task.series_name}` : task.series_name } ${formatDate(task.series_date)} ${task.priority || '-'} ${getStatusBadge(task.status)} ${task.claimed_by || '-'} ${task.torrent_id || '-'} ${formatDateTime(task.created_at)} ${actions} `; tbody.append(row); }); } // 渲染分页 function renderPagination(current, total) { const pagination = $('#pagination'); pagination.empty(); if (total <= 1) return; // 上一页 pagination.append(`
  • 上一页
  • `); // 页码 for (let i = 1; i <= total; i++) { if (i === 1 || i === total || (i >= current - 2 && i <= current + 2)) { pagination.append(`
  • ${i}
  • `); } else if (i === current - 3 || i === current + 3) { pagination.append('
  • ...
  • '); } } // 下一页 pagination.append(`
  • 下一页
  • `); } // 打开认领模态框 function openClaimModal(taskId) { $('#claim-task-id').val(taskId); $('#claim-note').val(''); claimModal.show(); } // 提交认领 function submitClaim() { const taskId = $('#claim-task-id').val(); const note = $('#claim-note').val(); $.ajax({ url: `/api/tasks/${taskId}/claim`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: JSON.stringify({ claim_note: note }), success: function() { claimModal.hide(); showSuccess('认领成功!'); loadTasks(currentPage); }, error: handleAjaxError }); } // 打开完成模态框 function openCompleteModal(taskId) { $('#complete-task-id').val(taskId); $('#torrent-id').val(''); $('#complete-note').val(''); completeModal.show(); } // 提交完成 function submitComplete() { const taskId = $('#complete-task-id').val(); const torrentId = $('#torrent-id').val(); const note = $('#complete-note').val(); if (!torrentId) { alert('请填写种子ID'); return; } $.ajax({ url: `/api/tasks/${taskId}/complete`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: JSON.stringify({ torrent_id: torrentId, complete_note: note }), success: function() { completeModal.hide(); showSuccess('任务完成!'); loadTasks(currentPage); }, error: handleAjaxError }); } // 取消认领 function cancelClaim(taskId) { if (!confirm('确定要取消认领吗?')) { return; } $.ajax({ url: `/api/tasks/${taskId}/cancel-claim`, method: 'POST', success: function() { showSuccess('已取消认领'); loadTasks(currentPage); }, error: handleAjaxError }); } // 查看详情 function viewDetail(taskId) { $.ajax({ url: `/api/tasks/${taskId}`, method: 'GET', success: function(task) { const html = `
    任务ID
    ${task.id}
    剧集名称
    ${task.series_name}
    剧集链接
    ${task.series_link ? `${task.series_link}` : '-' }
    更新日期
    ${formatDate(task.series_date)}
    优先级
    ${task.priority || '-'}
    状态
    ${getStatusBadge(task.status)}
    创建人
    ${task.creator}
    创建时间
    ${formatDateTime(task.created_at)}
    ${task.claimed_by ? `
    认领人
    ${task.claimed_by}
    认领时间
    ${formatDateTime(task.claimed_at)}
    认领备注
    ${task.claim_note || '-'}
    ` : ''} ${task.torrent_id ? `
    种子ID
    ${task.torrent_id}
    完成时间
    ${formatDateTime(task.completed_at)}
    完成备注
    ${task.complete_note || '-'}
    ` : ''}
    `; $('#task-detail').html(html); detailModal.show(); }, error: handleAjaxError }); } // 删除任务 function deleteTask(taskId) { if (!confirm('确定要删除这个任务吗?此操作不可恢复!')) { return; } $.ajax({ url: `/api/tasks/${taskId}`, method: 'DELETE', success: function() { showSuccess('任务已删除'); loadTasks(currentPage); }, error: handleAjaxError }); } // 重置筛选器 function resetFilters() { $('#filter-status').val(''); $('#filter-scope').val('all'); loadTasks(1); }