fix(任务): 修复列表与看板拖拽「能触发但放不下」—— uuid 主键被 Number() 成 NaN
Docker Build and Push / build-image (push) Successful in 1m34s
Docker Build and Push / build-image (push) Successful in 1m34s
0.2.1 切本地库后 Task.id / BoardColumn.id 为 uuid 字符串, 拖拽落点却用 Number(dataset.xxxId) 取值得到 NaN: - 看板 hitColumn 返回 NaN -> NaN 为 falsy, onDrop 永不触发; 目标列也不高亮 - 列表 colId/taskId 为 NaN -> 组内命中与换列 findIndex 恒失败, 松手无操作 (打卡侧仍走 REST 数字 id, 故未受影响) - 新增 src/pages/task/ids.js: idStr / sameId / datasetId, 统一按字符串比对 - useColumnDrag / useRowDrag: 落点、组内命中、换列、提交判定改用 sameId - ProjectView: moveToColumn / reorderTask / changeStatus 改用 sameId, 落点为空直接忽略, 不把坏 id 写进本地库 - api/task.js: update 拦截 "NaN"/"undefined" 列 id, 报「看板列无效」 验证: headless Edge + CDP 派发真实指针事件驱动两个 hook (uuid 数据), 修复前 4 条落点断言全挂, 修复后全部通过。
This commit is contained in:
+8
-1
@@ -536,10 +536,17 @@ export const taskApi = {
|
||||
}
|
||||
|
||||
// 列 / 状态联动裁决 (与 server/task-domain/resolveStatus.js 同口径)
|
||||
// 本地库主键是 uuid 字符串: 若调用方把 id 过了一道 Number() 会变成 NaN / "NaN",
|
||||
// 这里直接拦下并给出可定位的错误, 而不是让后续比对静默失败
|
||||
let status = task.status
|
||||
let columnId = String(task.columnId)
|
||||
const patch = {}
|
||||
if (body?.columnId !== undefined) patch.columnId = String(body.columnId)
|
||||
if (body?.columnId !== undefined) {
|
||||
const cid = body.columnId === null ? '' : String(body.columnId)
|
||||
if (!cid) throw new Error('看板列不能为空')
|
||||
if (cid === 'NaN' || cid === 'undefined') throw new Error('看板列无效(编号已损坏)')
|
||||
patch.columnId = cid
|
||||
}
|
||||
if (body?.status !== undefined) {
|
||||
if (!['todo', 'doing', 'done'].includes(body.status)) throw new Error('任务状态取值非法')
|
||||
patch.status = body.status
|
||||
|
||||
Reference in New Issue
Block a user