From 541c3a283c527ad41c86bbdf61ea058a1157cecd Mon Sep 17 00:00:00 2001 From: xiaosi <2652281683@qq.com> Date: Fri, 4 Sep 2026 10:48:36 +0800 Subject: [PATCH] fix: show route waypointCount from list API Route list returns waypointCount, not waypoints[]. Cards were always rendering 0 because the frontend only checked the array. --- src/views/TasksView/TasksView.vue | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/views/TasksView/TasksView.vue b/src/views/TasksView/TasksView.vue index afb6067..d9f81a9 100644 --- a/src/views/TasksView/TasksView.vue +++ b/src/views/TasksView/TasksView.vue @@ -502,14 +502,28 @@ async function load() { return toExecutionRecord(r, taskNames.get(r.taskId), '', video ? { id: String(video.id), status: video.status } : null) }) - routes.value = (routePage?.records || []).map((r, i) => ({ - id: String(r.id), - name: r.name, - waypoints: Array.isArray(r.waypoints) ? r.waypoints.length : 0, - distance: Array.isArray(r.waypoints) ? `${routeDistance(r.waypoints.map((p) => ({ longitude: Number(p.longitude), latitude: Number(p.latitude) })) ).toFixed(1)} km` : '--', - collectedAt: fmtTime(r.createdAt), - mapClass: i % 2 === 0 ? 'route-a' : 'route-c' - })) + routes.value = (routePage?.records || []).map((r, i) => { + // 列表接口返回 waypointCount,不含 waypoints[];详情才有完整航点 + const count = Number(r.waypointCount ?? r.waypoint_count) + const fromList = Array.isArray(r.waypoints) ? r.waypoints.length : NaN + const waypoints = Number.isFinite(fromList) + ? fromList + : (Number.isFinite(count) ? count : 0) + const distance = Array.isArray(r.waypoints) && r.waypoints.length + ? `${routeDistance(r.waypoints.map((p) => ({ + longitude: Number(p.longitude), + latitude: Number(p.latitude), + }))).toFixed(1)} km` + : (r.distance || '--') + return { + id: String(r.id), + name: r.name, + waypoints, + distance, + collectedAt: fmtTime(r.createdAt), + mapClass: i % 2 === 0 ? 'route-a' : 'route-c', + } + }) const hasActiveExecution = (execPage?.records || []).some((r) => ['pending', 'running'].includes(r.status)) if (hasActiveExecution && !refreshTimer) refreshTimer = window.setInterval(load, 5000) if (!hasActiveExecution && refreshTimer) {