列表分组渲染按 tasks 数组顺序, reorderTask 此前只给任务打新 sortOrder 字段而保持原数组顺序 —— 松手后界面无任何变化, 看起来 就是组内无法排序 (数据其实已提交)。改为直接按新顺序重建数组, 不在分组内的任务 (孤儿) 追加在尾部。
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user