修复: 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 调用) */
|
||||
function collapseInactive(activeIds: Set<string>): void {
|
||||
// CR-260615-31:对称过滤 expandedTools(原只清 expandedCards,expandedTools 残留致折叠后内容展开态)
|
||||
if (expandedCards.value.size > 0) {
|
||||
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 })
|
||||
|
||||
@@ -34,6 +34,9 @@ export function useConfirm() {
|
||||
|
||||
function confirmDialog(msg: string): Promise<boolean> {
|
||||
return new Promise(resolve => {
|
||||
// CR-260615-31:并发覆盖前一个 confirmDialog(连点删除/confirm 交错)时,
|
||||
// 前一个 Promise 永挂(resolve 被覆盖)→ 先 resolve?.(false) 打断前一个视为取消
|
||||
confirmState.value.resolve?.(false)
|
||||
confirmState.value.msg = msg
|
||||
confirmState.value.visible = true
|
||||
confirmState.value.resolve = resolve
|
||||
|
||||
Reference in New Issue
Block a user