不做多余前端过滤直接沿用后端数据

This commit is contained in:
WindowBird 2025-11-06 14:04:51 +08:00
parent 7e7e2f6c5a
commit ea70b79ada

View File

@ -6,7 +6,7 @@
<template v-if="!loading">
<view
class="task-card"
v-for="task in filteredTasks"
v-for="task in tasks"
:key="task.id"
:class="getTaskCardClass(task.status)"
@click="goToTaskDetail(task)"
@ -64,7 +64,7 @@
</view>
<!-- 空状态 -->
<view class="empty-state" v-else-if="filteredTasks.length === 0">
<view class="empty-state" v-else-if="tasks.length === 0">
<text class="empty-text">暂无{{ getStatusText(statusFilter) || '' }}任务</text>
</view>
</view>
@ -73,7 +73,7 @@
</template>
<script setup>
import { ref, computed } from 'vue';
import { ref } from 'vue';
import { onLoad } from '@dcloudio/uni-app';
import { getStatusText, getTaskStatusType, getTaskStatusStyle } from '@/utils/taskConfig.js';
import { getTaskList } from '@/common/api';
@ -101,14 +101,6 @@ const statusReverseMap = {
//
const tasks = ref([]);
//
const filteredTasks = computed(() => {
if (!statusFilter.value) {
return tasks.value;
}
return tasks.value.filter(task => task.status === statusFilter.value);
});
// 使
const getTagCustomStyle = (status) => {
const styleConfig = getTaskStatusStyle(status);
@ -229,13 +221,16 @@ const getOwnerNames = (memberList) => {
};
//
const transformTaskData = (item, status) => {
const transformTaskData = (item) => {
const expireTime = item.expireTime || item.expire_time || '';
const remainingDays = calculateRemainingDays(expireTime);
// 使使
const taskStatus = statusFilter.value || 'pending';
return {
id: item.id || '',
status: status,
status: taskStatus,
date: formatDate(expireTime) || '',
project: item.projectName || item.project_name || '',
description: item.description || item.task_name || '',
@ -253,20 +248,12 @@ const loadTaskList = async () => {
//
if (statusFilter.value === 'completed') {
// 使 statusList=[4]
res = await getTaskList({ statusList: [4] });
} else if (statusFilter.value === 'overdue') {
// 使 overdue=true
res = await getTaskList({
overdue: true,
});
res = await getTaskList({ overdue: true });
} else if (statusFilter.value === 'pending') {
// 使 statusList=[2]
res = await getTaskList({ statusList: [2] });
} else if (statusFilter.value === 'imminent') {
// 使 statusList=[2] 3
const dateRange = getImminentDateRange();
res = await getTaskList({
statusList: [2],
@ -274,7 +261,6 @@ const loadTaskList = async () => {
expireTimeEnd: dateRange.expireTimeEnd
});
} else {
//
res = await getTaskList({});
}
@ -291,82 +277,7 @@ const loadTaskList = async () => {
}
//
tasks.value = taskList.map((item) => {
// status
let taskStatus = statusFilter.value;
//
if (!taskStatus) {
// status taskStatus4
const itemStatus = item.status || item.taskStatus || item.task_status;
if (itemStatus === 4) {
taskStatus = 'completed';
} else if (itemStatus === 2) {
// 2
const remainingDays = calculateRemainingDays(item.expireTime || item.expire_time);
if (remainingDays === null) {
taskStatus = 'pending';
} else if (remainingDays < 0) {
taskStatus = 'overdue';
} else if (remainingDays <= 7) {
taskStatus = 'imminent';
} else {
taskStatus = 'pending';
}
} else {
//
const remainingDays = calculateRemainingDays(item.expireTime || item.expire_time);
if (remainingDays === null) {
taskStatus = 'pending';
} else if (remainingDays < 0) {
taskStatus = 'overdue';
} else if (remainingDays <= 7) {
taskStatus = 'imminent';
} else {
taskStatus = 'pending';
}
}
} else if (statusFilter.value === 'pending' || statusFilter.value === 'imminent') {
// 2
const itemStatus = item.status || item.taskStatus || item.task_status;
if (itemStatus === 2) {
//
if (statusFilter.value === 'imminent') {
const remainingDays = calculateRemainingDays(item.expireTime || item.expire_time);
if (remainingDays !== null && remainingDays > 0 && remainingDays <= 7) {
taskStatus = 'imminent';
} else {
// pending
taskStatus = 'pending';
}
} else {
//
const remainingDays = calculateRemainingDays(item.expireTime || item.expire_time);
if (remainingDays !== null && remainingDays < 0) {
taskStatus = 'overdue';
} else {
taskStatus = 'pending';
}
}
} else {
// 2pending
taskStatus = 'pending';
}
}
return transformTaskData(item, taskStatus);
});
//
if (statusFilter.value === 'overdue') {
tasks.value = tasks.value.filter(task => task.status === 'overdue');
} else if (statusFilter.value === 'completed') {
tasks.value = tasks.value.filter(task => task.status === 'completed');
} else if (statusFilter.value === 'imminent') {
tasks.value = tasks.value.filter(task => task.status === 'imminent');
} else if (statusFilter.value === 'pending') {
tasks.value = tasks.value.filter(task => task.status === 'pending');
}
tasks.value = taskList.map(item => transformTaskData(item));
} catch (err) {
console.error('加载任务列表失败:', err);