不做多余前端过滤直接沿用后端数据
This commit is contained in:
parent
7e7e2f6c5a
commit
ea70b79ada
|
|
@ -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 或 taskStatus,值为4表示已完成)
|
||||
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 {
|
||||
// 如果状态不是2,设置为pending(后续会被过滤掉)
|
||||
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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user