Commit cde42969 authored by Data Governance Dev's avatar Data Governance Dev

fix(web3): 中断时只清进度,不清空已展示的不合规行

用户反馈:T4 跑了几页后点「中断」,结果表里已经加载到的不合规行全没了。

上一版 onCancel 调 resetQueryStatus(),它会把 rows / lastResult / resultFields / queryError
全清空 —— 等于把用户已经看到的命中行擦掉。

新增 clearProgressOnly():
  只清进度相关(sessionId / totalPages / totalRows / scannedPages /
  scannedRows / receivedPages),保留 rows / lastResult / resultFields

onCancel 改用 clearProgressOnly:
  - 用户已看到的不合规行留住
  - 顶部 toast:「已中断(已扫 N 页,命中 K 条)」
  - 再次点「查询」会走完整 onQuery,自然用新结果覆盖

教训:中断 ≠ 重查。reserve 用户可见状态是默认行为
parent 8e389145
...@@ -204,6 +204,17 @@ function resetQueryStatus() { ...@@ -204,6 +204,17 @@ function resetQueryStatus() {
queryError.value = '' queryError.value = ''
} }
// 「中断」专用:只清进度(session + 页号计数),保留 rows + resultFields + lastResult
// —— 用户已经看到的不合规行不能丢;下一次点「查询」会走完整 onQuery,自然覆盖
function clearProgressOnly() {
sessionId.value = null
totalPages.value = 0
totalRows.value = 0
scannedPages.value = 0
scannedRows.value = 0
receivedPages.value = new Map()
}
async function abortInFlight() { async function abortInFlight() {
// 取消上一轮还在飞的查询(用户连续点 / 切换任务时) // 取消上一轮还在飞的查询(用户连续点 / 切换任务时)
if (sessionId.value) { if (sessionId.value) {
...@@ -309,8 +320,12 @@ async function onCancel() { ...@@ -309,8 +320,12 @@ async function onCancel() {
try { try {
try { await cancelQuery(sessionId.value) } catch (_) { /* best-effort */ } try { await cancelQuery(sessionId.value) } catch (_) { /* best-effort */ }
queryAbort.value?.abort() // 让在飞的 fetch 立即 reject queryAbort.value?.abort() // 让在飞的 fetch 立即 reject
resetQueryStatus() // 注意:不要调 resetQueryStatus —— 那会把 rows 也清空。
ElMessage.info(`已中断(已扫 ${scannedPages.value}/${totalPages.value} 页)`) // 中断后用户已经看到的不合规行要留住(用户重跑时会自然覆盖)
const hit = rows.value.length
const pages = scannedPages.value
clearProgressOnly()
ElMessage.info(`已中断(已扫 ${pages} 页,命中 ${hit} 条)`)
} finally { } finally {
runningQuery.value = false runningQuery.value = false
cancelling.value = false cancelling.value = false
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment