feat(web3): 分页查询 orchestrator + 中断按钮 + 进度 + appendMode 行追加
把单次同步 runQuery 替换成分页 + 并发 worker 模式:
DataQualityView.vue 重写查询逻辑:
onQuery()
1) POST /start → COUNT + 编译规则 + 拿 session_id + total_pages
2) PAGE_CONCURRENCY=3 个 worker 并发抢 queue([1..total_pages]),
每个 worker /page 拉到 → appendPage() 按页号升序拼进 rows
3) 收尾聚合 lastResult + toast
onCancel()
- /cancel 摘 session(best-effort)
- AbortController.abort() 让在飞的 fetch 立即 reject
- resetQueryStatus() 清空 sessionId / rows / lastResult / queryError
进度展示:task-info-bar 顶部「查询中 N/M 页 · 命中 K 条」
onBeforeUnmount:cancel + abort,避免组件销毁后 fetch 还在飞
ResultTable.vue 新增 appendMode prop:
watch(() => props.rows.length, () => {
if (!props.appendMode) currentPage.value = 1
})
默认 false 保持原行为(rows 替换 → 回第 1 页);
append 模式下 rows 增量追加不重置页码
ResultTable 新增 row-key 模式:父组件传 rowKey 函数,
用后端注入的 __row_index 做稳定 key(append 模式下保证 Vue DOM 复用正确)
PAGE_SIZE = 500(与后端默认对齐)
无单测(前端无测试基础设施,手动 e2e 验证见 work-logs/2026-08-21.md)
Showing
This diff is collapsed.
Please register or sign in to comment