已完成最高优先级

待完成里面显示包括未完成的逾期任务
This commit is contained in:
WindowBird 2025-11-06 14:45:19 +08:00
parent c5391f86b6
commit b1df2e7df0

View File

@ -39,7 +39,7 @@
<view class="task-countdown" v-if="task.status !== 'completed' && task.remainingDays !== null">
<text class="countdown-icon">🕐</text>
<text class="countdown-text" :class="getCountdownClass(task.status)">
剩余{{ task.remainingDays }}
{{ task.remainingDays < 0 ? `已逾期${Math.abs(task.remainingDays)}` : `剩余${task.remainingDays}` }}
</text>
</view>
</view>
@ -223,18 +223,83 @@ const getOwnerNames = (memberList) => {
return memberList.map(member => member.userName || member.name || '').filter(name => name).join('、');
};
//
const determineTaskStatus = (item, expireTime) => {
// 4 completed
const taskStatusFromBackend = item.status;
if (taskStatusFromBackend === 4 || taskStatusFromBackend === 'completed') {
return 'completed';
}
// 使 pending
if (!expireTime) {
return statusFilter.value || 'pending';
}
const expireDate = new Date(expireTime);
const now = new Date();
// 0便
now.setHours(0, 0, 0, 0);
expireDate.setHours(23, 59, 59, 999);
//
if (expireDate.getTime() < now.getTime()) {
return 'overdue';
}
//
const diffTime = expireDate.getTime() - now.getTime();
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
// 3
if (diffDays <= 3 && diffDays > 0) {
return 'imminent';
}
//
return 'pending';
};
//
const transformTaskData = (item) => {
const expireTime = item.expireTime || item.expire_time || '';
const remainingDays = calculateRemainingDays(expireTime);
// 使使
const taskStatus = statusFilter.value || 'pending';
// - status===4 status==='4' completed
// statustaskStatusstatusId
const taskStatus = item.status !== undefined ? item.status :
item.taskStatus !== undefined ? item.taskStatus :
item.statusId !== undefined ? item.statusId : null;
// 4'4''completed'
const isCompleted = taskStatus === 4 ||
taskStatus === '4' ||
taskStatus === 'completed' ||
String(taskStatus) === '4';
//
if (isCompleted) {
return {
id: item.id || '',
status: 'completed', // completed
createName: item.createName || '',
date: formatDate(expireTime) || '',
project: item.projectName || item.project_name || '',
description: item.description || item.task_name || '',
owner: getOwnerNames(item.memberList || item.member_list || []),
releaseTime: formatDate(item.createTime || item.create_time) || '',
remainingDays: null //
};
}
//
const remainingDays = calculateRemainingDays(expireTime);
const finalStatus = determineTaskStatus(item, expireTime);
return {
id: item.id || '',
status: taskStatus,
createName:item.createName,
status: finalStatus,
createName: item.createName || '',
date: formatDate(expireTime) || '',
project: item.projectName || item.project_name || '',
description: item.description || item.task_name || '',