feat: 已完成任务卡片添加子任务进度节点和任务明细显示,与进行中任务保持一致

This commit is contained in:
Your Name 2026-01-15 16:37:42 +08:00
parent 37a35e8cb5
commit 23e413984c

View File

@ -1352,7 +1352,7 @@
</div>
<div class="info-item">
<span class="label">获得积分</span>
<span class="value text-brand">{{ formatScore(task.score) }} 分</span>
<span class="value text-brand">{{ formatScore(task.totalScore || task.score) }} 分</span>
</div>
<div class="info-item">
<span class="label">数量</span>
@ -1368,6 +1368,43 @@
</div>
</div>
<!-- 子任务进度时间线(流水线任务)- 横向拉满 -->
<div v-if="task.isPipeline === 1 && task.subTaskTotal" class="subtask-timeline-wrapper full-width">
<div class="subtask-timeline">
<div
v-for="(subTask, index) in (task.subTasks || []).slice(0, 5)"
:key="subTask.id || index"
class="timeline-node"
:class="getSubTaskStatusClass(subTask.status)"
>
<div class="node-dot"></div>
<div class="node-label">{{ getSubTaskLabel(subTask, index) }}</div>
<div class="node-status">{{ getSubTaskStatusText(subTask.status) }}</div>
</div>
<!-- 显示更多子任务提示 -->
<div v-if="(task.subTasks || []).length > 5" class="timeline-node more">
<div class="node-dot"></div>
<div class="node-label">+{{ (task.subTasks || []).length - 5 }}</div>
</div>
<!-- 完结节点 -->
<div class="timeline-node final" :class="{ completed: task.status === 'completed' }">
<div class="node-dot"></div>
<div class="node-label">完结</div>
</div>
</div>
</div>
<!-- 任务类型明细 -->
<div v-if="parseTypeDetails(task.typeDetails).length > 0" class="type-details-section">
<div class="type-details-title">任务明细:</div>
<div class="type-details-list">
<div v-for="(detail, idx) in parseTypeDetails(task.typeDetails)" :key="idx" class="type-detail-item">
<span class="type-name">└ {{ detail.typeName }}</span>
<span class="type-score">x{{ detail.quantity }} = {{ formatScore(detail.totalScore) }}分</span>
</div>
</div>
</div>
<!-- 任务详情 -->
<div class="task-details">
<div class="detail-item">
@ -1380,7 +1417,30 @@
<span class="icon">
<Icon name="user" size="sm" color="#31f08b" />
</span>
<span>完成人: {{ task.receiverName || '--' }}</span>
<span>
完成人: {{ task.receiverName || '--' }}
<span
v-if="task.isPipeline === 1 && task.subTasks && task.subTasks.length > 0 && task.id"
class="expand-subtasks"
@click.stop="toggleTaskSubtasks(task.id!)"
>
<Icon :name="expandedTaskSubtasks[task.id!] ? 'arrowUp' : 'arrowDown'" size="xs" style="margin-left: 4px; cursor: pointer;" />
</span>
</span>
</div>
<!-- 流水线任务子任务详细信息(可展开) -->
<div v-if="task.isPipeline === 1 && task.subTasks && task.subTasks.length > 0 && task.id && expandedTaskSubtasks[task.id]"
class="subtasks-detail">
<div v-for="(subTask, index) in task.subTasks" :key="subTask.id || index" class="subtask-item">
<span class="subtask-label">{{ getSubTaskLabel(subTask, index) }}:</span>
<span class="subtask-receiver">{{ subTask.receiverName || '待接单' }}</span>
<span v-if="getSubTaskDeadline(subTask)" class="subtask-deadline">
完成截止日期: {{ getSubTaskDeadline(subTask) }}
</span>
<span :class="['subtask-status', getSubTaskStatusClass(subTask.status)]">
{{ getSubTaskStatusText(subTask.status) }}
</span>
</div>
</div>
<div v-if="task.brandName" class="detail-item">
<span class="icon">