- 移除硬编码的任务数量(12/5/28/3) - 加载所有任务后统计各状态数量 - 后端任务API page_size限制调整为500
This commit is contained in:
@@ -74,7 +74,7 @@ async def create_task(
|
|||||||
async def get_tasks(
|
async def get_tasks(
|
||||||
status: Optional[str] = Query(None, description="任务状态筛选"),
|
status: Optional[str] = Query(None, description="任务状态筛选"),
|
||||||
page: int = Query(1, ge=1),
|
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),
|
db: AsyncSession = Depends(get_db),
|
||||||
current_user: User = Depends(require_admin_or_manager)
|
current_user: User = Depends(require_admin_or_manager)
|
||||||
):
|
):
|
||||||
|
|||||||
@@ -28,22 +28,22 @@
|
|||||||
<el-tabs v-model="activeTab" @tab-click="handleTabClick">
|
<el-tabs v-model="activeTab" @tab-click="handleTabClick">
|
||||||
<el-tab-pane label="进行中" name="ongoing">
|
<el-tab-pane label="进行中" name="ongoing">
|
||||||
<span slot="label">
|
<span slot="label">
|
||||||
进行中 <el-badge :value="12" class="tab-badge" />
|
进行中 <el-badge :value="taskCounts.ongoing" class="tab-badge" v-if="taskCounts.ongoing > 0" />
|
||||||
</span>
|
</span>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="待开始" name="pending">
|
<el-tab-pane label="待开始" name="pending">
|
||||||
<span slot="label">
|
<span slot="label">
|
||||||
待开始 <el-badge :value="5" class="tab-badge" />
|
待开始 <el-badge :value="taskCounts.pending" class="tab-badge" v-if="taskCounts.pending > 0" />
|
||||||
</span>
|
</span>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="已完成" name="completed">
|
<el-tab-pane label="已完成" name="completed">
|
||||||
<span slot="label">
|
<span slot="label">
|
||||||
已完成 <el-badge :value="28" class="tab-badge" />
|
已完成 <el-badge :value="taskCounts.completed" class="tab-badge" v-if="taskCounts.completed > 0" />
|
||||||
</span>
|
</span>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="已过期" name="expired">
|
<el-tab-pane label="已过期" name="expired">
|
||||||
<span slot="label">
|
<span slot="label">
|
||||||
已过期 <el-badge :value="3" class="tab-badge" />
|
已过期 <el-badge :value="taskCounts.expired" class="tab-badge" v-if="taskCounts.expired > 0" />
|
||||||
</span>
|
</span>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
@@ -383,6 +383,14 @@ const taskStats = ref([
|
|||||||
// 任务列表数据
|
// 任务列表数据
|
||||||
const allTasks = ref<Task[]>([])
|
const allTasks = ref<Task[]>([])
|
||||||
|
|
||||||
|
// 各状态任务数量
|
||||||
|
const taskCounts = reactive({
|
||||||
|
ongoing: 0,
|
||||||
|
pending: 0,
|
||||||
|
completed: 0,
|
||||||
|
expired: 0
|
||||||
|
})
|
||||||
|
|
||||||
// 任务表单
|
// 任务表单
|
||||||
const taskForm = reactive({
|
const taskForm = reactive({
|
||||||
title: '',
|
title: '',
|
||||||
@@ -417,9 +425,6 @@ const rules = reactive<FormRules>({
|
|||||||
|
|
||||||
// 根据当前标签页筛选的任务列表
|
// 根据当前标签页筛选的任务列表
|
||||||
const taskList = computed(() => {
|
const taskList = computed(() => {
|
||||||
if (activeTab.value === 'ongoing') {
|
|
||||||
return allTasks.value
|
|
||||||
}
|
|
||||||
return allTasks.value.filter(task => task.status === activeTab.value)
|
return allTasks.value.filter(task => task.status === activeTab.value)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -442,15 +447,20 @@ const loadTaskStats = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加载任务列表
|
* 加载任务列表(加载所有任务,前端筛选)
|
||||||
*/
|
*/
|
||||||
const loadTasks = async () => {
|
const loadTasks = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
const status = activeTab.value === 'ongoing' ? 'ongoing' : activeTab.value
|
// 不传status参数,获取所有任务
|
||||||
const res = await getTasks({ status })
|
const res = await getTasks({ page_size: 500 })
|
||||||
if (res.code === 200 && res.data) {
|
if (res.code === 200 && res.data) {
|
||||||
allTasks.value = res.data.items
|
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) {
|
} catch (error: any) {
|
||||||
console.error('加载任务列表失败:', error)
|
console.error('加载任务列表失败:', error)
|
||||||
|
|||||||
Reference in New Issue
Block a user