diff --git a/src/components/ToolCardList.vue b/src/components/ToolCardList.vue index fdccf91..0e068dc 100644 --- a/src/components/ToolCardList.vue +++ b/src/components/ToolCardList.vue @@ -45,9 +45,13 @@ function toggleExpand(id: string) { /** 收起不在 activeIds 中的已完成/已拒绝卡片(供父组件 auto-collapse watch 调用) */ function collapseInactive(activeIds: Set): 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 }) diff --git a/src/composables/useConfirm.ts b/src/composables/useConfirm.ts index 71ab34a..255a2e5 100644 --- a/src/composables/useConfirm.ts +++ b/src/composables/useConfirm.ts @@ -34,6 +34,9 @@ export function useConfirm() { function confirmDialog(msg: string): Promise { 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