优化: AI Chat全栈多批审查修复与架构清理(risk_level清理/路由解耦/工具渲染/测试补测/死代码)
This commit is contained in:
@@ -9,18 +9,22 @@
|
||||
//! 各视图绑定 confirmState 的 visible/msg 并把按钮点击回 answerConfirm 即可。
|
||||
//!
|
||||
//! i18n:composable 在 setup 内调用,文案由调用方用各自 useI18n().t 翻译后传入 msg,
|
||||
//! 这里无需 i18n 依赖。dangerLabel 由 ConfirmDialog 组件侧兜底为 common.delete。
|
||||
//! 这里无需 i18n 依赖。dangerLabel 透传给 ConfirmDialog,空串时组件兜底为 common.confirm
|
||||
//! (语义中性,删除/清空等场景应显式传 common.delete / 「清空」等)。
|
||||
|
||||
import { ref } from 'vue'
|
||||
|
||||
export interface ConfirmState {
|
||||
visible: boolean
|
||||
msg: string
|
||||
/** 危险按钮文案;空串回退到 ConfirmDialog 组件兜底(common.confirm) */
|
||||
dangerLabel: string
|
||||
resolve: null | ((v: boolean) => void)
|
||||
}
|
||||
|
||||
/** 弹出确认对话框,返回 Promise;resolve(true) 表示用户确认,resolve(false) 表示取消 */
|
||||
export type ConfirmFn = (msg: string) => Promise<boolean>
|
||||
/** 弹出确认对话框,返回 Promise;resolve(true) 表示用户确认,resolve(false) 表示取消。
|
||||
* dangerLabel 可选:覆盖危险按钮文案(如「清空」),不传则回退组件兜底 common.confirm,保持旧行为。 */
|
||||
export type ConfirmFn = (msg: string, dangerLabel?: string) => Promise<boolean>
|
||||
|
||||
/** 关闭弹层并回传结果 */
|
||||
export type AnswerFn = (ok: boolean) => void
|
||||
@@ -29,15 +33,17 @@ export function useConfirm() {
|
||||
const confirmState = ref<ConfirmState>({
|
||||
visible: false,
|
||||
msg: '',
|
||||
dangerLabel: '',
|
||||
resolve: null,
|
||||
})
|
||||
|
||||
function confirmDialog(msg: string): Promise<boolean> {
|
||||
function confirmDialog(msg: string, dangerLabel = ''): 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.dangerLabel = dangerLabel
|
||||
confirmState.value.visible = true
|
||||
confirmState.value.resolve = resolve
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user