修复: CR-31 useConfirm 并发覆盖 resolve+ToolCardList 对称清 expandedTools
①useConfirm confirmDialog 进入时先 resolve?.(false) 打断前一个(连点删除/confirm 交错时前一个 Promise 永挂,resolve 被覆盖静默中断+内存泄漏),视为取消;②ToolCardList collapseInactive 对称过滤 expandedTools(原只清 expandedCards,expandedTools 残留致已完成卡片折叠后内容展开态)。cron 巡检捕获走查第8轮 CR-31,vue-tsc 0
This commit is contained in:
@@ -45,9 +45,13 @@ function toggleExpand(id: string) {
|
|||||||
|
|
||||||
/** 收起不在 activeIds 中的已完成/已拒绝卡片(供父组件 auto-collapse watch 调用) */
|
/** 收起不在 activeIds 中的已完成/已拒绝卡片(供父组件 auto-collapse watch 调用) */
|
||||||
function collapseInactive(activeIds: Set<string>): void {
|
function collapseInactive(activeIds: Set<string>): void {
|
||||||
|
// CR-260615-31:对称过滤 expandedTools(原只清 expandedCards,expandedTools 残留致折叠后内容展开态)
|
||||||
if (expandedCards.value.size > 0) {
|
if (expandedCards.value.size > 0) {
|
||||||
expandedCards.value = new Set([...expandedCards.value].filter(id => activeIds.has(id)))
|
expandedCards.value = new Set([...expandedCards.value].filter(id => activeIds.has(id)))
|
||||||
}
|
}
|
||||||
|
if (expandedTools.value.size > 0) {
|
||||||
|
expandedTools.value = new Set([...expandedTools.value].filter(id => activeIds.has(id)))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ collapseInactive })
|
defineExpose({ collapseInactive })
|
||||||
|
|||||||
@@ -34,6 +34,9 @@ export function useConfirm() {
|
|||||||
|
|
||||||
function confirmDialog(msg: string): Promise<boolean> {
|
function confirmDialog(msg: string): Promise<boolean> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
|
// CR-260615-31:并发覆盖前一个 confirmDialog(连点删除/confirm 交错)时,
|
||||||
|
// 前一个 Promise 永挂(resolve 被覆盖)→ 先 resolve?.(false) 打断前一个视为取消
|
||||||
|
confirmState.value.resolve?.(false)
|
||||||
confirmState.value.msg = msg
|
confirmState.value.msg = msg
|
||||||
confirmState.value.visible = true
|
confirmState.value.visible = true
|
||||||
confirmState.value.resolve = resolve
|
confirmState.value.resolve = resolve
|
||||||
|
|||||||
Reference in New Issue
Block a user