fix: 任务中心标签页显示真实任务数量
Some checks failed
continuous-integration/drone/push Build is failing

- 移除硬编码的任务数量(12/5/28/3)
- 加载所有任务后统计各状态数量
- 后端任务API page_size限制调整为500
This commit is contained in:
yuliang_guo
2026-01-31 18:48:26 +08:00
parent e942a9de2c
commit 616bb7185e
2 changed files with 21 additions and 11 deletions

View File

@@ -74,7 +74,7 @@ async def create_task(
async def get_tasks(
status: Optional[str] = Query(None, description="任务状态筛选"),
page: int = Query(1, ge=1),
page_size: int = Query(20, ge=1, le=100),
page_size: int = Query(20, ge=1, le=500),
db: AsyncSession = Depends(get_db),
current_user: User = Depends(require_admin_or_manager)
):

View File

@@ -28,22 +28,22 @@
<el-tabs v-model="activeTab" @tab-click="handleTabClick">
<el-tab-pane label="进行中" name="ongoing">
<span slot="label">
进行中 <el-badge :value="12" class="tab-badge" />
进行中 <el-badge :value="taskCounts.ongoing" class="tab-badge" v-if="taskCounts.ongoing > 0" />
</span>
</el-tab-pane>
<el-tab-pane label="待开始" name="pending">
<span slot="label">
待开始 <el-badge :value="5" class="tab-badge" />
待开始 <el-badge :value="taskCounts.pending" class="tab-badge" v-if="taskCounts.pending > 0" />
</span>
</el-tab-pane>
<el-tab-pane label="已完成" name="completed">
<span slot="label">
已完成 <el-badge :value="28" class="tab-badge" />
已完成 <el-badge :value="taskCounts.completed" class="tab-badge" v-if="taskCounts.completed > 0" />
</span>
</el-tab-pane>
<el-tab-pane label="已过期" name="expired">
<span slot="label">
已过期 <el-badge :value="3" class="tab-badge" />
已过期 <el-badge :value="taskCounts.expired" class="tab-badge" v-if="taskCounts.expired > 0" />
</span>
</el-tab-pane>
</el-tabs>
@@ -383,6 +383,14 @@ const taskStats = ref([
// 任务列表数据
const allTasks = ref<Task[]>([])
// 各状态任务数量
const taskCounts = reactive({
ongoing: 0,
pending: 0,
completed: 0,
expired: 0
})
// 任务表单
const taskForm = reactive({
title: '',
@@ -417,9 +425,6 @@ const rules = reactive<FormRules>({
// 根据当前标签页筛选的任务列表
const taskList = computed(() => {
if (activeTab.value === 'ongoing') {
return allTasks.value
}
return allTasks.value.filter(task => task.status === activeTab.value)
})
@@ -442,15 +447,20 @@ const loadTaskStats = async () => {
}
/**
* 加载任务列表
* 加载任务列表(加载所有任务,前端筛选)
*/
const loadTasks = async () => {
loading.value = true
try {
const status = activeTab.value === 'ongoing' ? 'ongoing' : activeTab.value
const res = await getTasks({ status })
// 不传status参数获取所有任务
const res = await getTasks({ page_size: 500 })
if (res.code === 200 && res.data) {
allTasks.value = res.data.items
// 统计各状态任务数量
taskCounts.ongoing = allTasks.value.filter(t => t.status === 'ongoing').length
taskCounts.pending = allTasks.value.filter(t => t.status === 'pending').length
taskCounts.completed = allTasks.value.filter(t => t.status === 'completed').length
taskCounts.expired = allTasks.value.filter(t => t.status === 'expired').length
}
} catch (error: any) {
console.error('加载任务列表失败:', error)