From c0b55277a49945d503ecb9136c3f7e0cbbef4d78 Mon Sep 17 00:00:00 2001 From: "jif2.zhang" Date: Sun, 25 Oct 2026 02:37:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(V0.2):=20=E5=88=97=E8=A1=A8=E7=BB=84?= =?UTF-8?q?=E5=86=85=E6=8E=92=E5=BA=8F=E4=B9=90=E8=A7=82=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=9C=AA=E9=87=8D=E6=8E=92=E6=95=B0=E7=BB=84,=20=E6=9D=BE?= =?UTF-8?q?=E6=89=8B=E5=90=8E=E7=95=8C=E9=9D=A2=E4=B8=8D=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 列表分组渲染按 tasks 数组顺序, reorderTask 此前只给任务打新 sortOrder 字段而保持原数组顺序 —— 松手后界面无任何变化, 看起来 就是组内无法排序 (数据其实已提交)。改为直接按新顺序重建数组, 不在分组内的任务 (孤儿) 追加在尾部。 --- src/pages/task/ProjectView.jsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pages/task/ProjectView.jsx b/src/pages/task/ProjectView.jsx index 679371f..405b5b2 100644 --- a/src/pages/task/ProjectView.jsx +++ b/src/pages/task/ProjectView.jsx @@ -114,8 +114,13 @@ export default function ProjectView({ projectId, onProjectChanged, onProjectExit if (ti < 0) return rest.splice(after ? ti + 1 : ti, 0, task) const flat = groups.map((l) => (l === g ? rest : l)).flat() - const orderOf = new Map(flat.map((t, i) => [t.id, i])) - setTasks((prev) => (prev || []).map((t) => (orderOf.has(t.id) ? { ...t, sortOrder: orderOf.get(t.id) } : t))) + const flatIds = new Set(flat.map((t) => t.id)) + // 乐观更新必须重排数组本身 —— 列表分组渲染按数组顺序, + // 只改 sortOrder 字段界面不会动 (打卡侧即按此口径) + setTasks((prev) => [ + ...flat.map((t, i) => ({ ...t, sortOrder: i })), + ...(prev || []).filter((t) => !flatIds.has(t.id)), + ]) try { await taskApi.reorder(projectId, flat.map((t) => t.id)) } catch (e) {