已完成最高优先级
待完成里面显示包括未完成的逾期任务
This commit is contained in:
parent
c5391f86b6
commit
b1df2e7df0
|
|
@ -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,不做任何其他校验
|
||||
// 支持多种字段名和数据类型:status、taskStatus、statusId 等
|
||||
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 || '',
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user