优化: 审批弹窗全局化与体验打磨

This commit is contained in:
lxy
2026-08-10 08:04:30 +08:00
parent dedb9a8862
commit 6141a67b0e
10 changed files with 159 additions and 47 deletions
+2 -23
View File
@@ -359,14 +359,6 @@
</section>
</div>
<!-- 人工审批对话框(抽离至 components/project/ApprovalDialog.vue)-->
<ApprovalDialog
:visible="showApprovalDialog"
:store="store"
@cancel="handleCancelApproval"
@later="showApprovalDialog = false"
/>
<!-- 确认弹层删除/重定位确认替代原生 window.confirm/alert -->
<ConfirmDialog :visible="confirmState.visible" :msg="confirmState.msg" :danger-label="confirmState.dangerLabel" @result="answerConfirm" />
@@ -429,7 +421,6 @@ import { parseStack } from '@/utils/project'
import { parseScores as parseScoresJson, assessmentClass, assessmentLabel as assessmentLabelI18n, scoreTier } from '@/utils/ideaEval'
import { projectStatusLabel, taskStatusLabel, taskStatusClass } from '../constants/project'
import ConfirmDialog from '@/components/ConfirmDialog.vue'
import ApprovalDialog from '@/components/project/ApprovalDialog.vue'
import FileExplorer from '@/components/project/FileExplorer.vue'
import DependencyGraph from '@/components/project/DependencyGraph.vue'
import WorkflowDagDisplay from '@/components/workflow/WorkflowDagDisplay.vue'
@@ -442,7 +433,6 @@ const router = useRouter()
const store = useProjectStore()
const { t, locale } = useI18n()
const logListRef = ref<HTMLElement | null>(null)
const showApprovalDialog = ref(false)
// A1[PD-P1-4]:任务列表随 AI 改动刷新 —— 本地 df-data-changed 监听(entity=task)重拉 loadProjectTasks。
// 对齐 TaskDetail B-260616-18 模式:onMounted 注册、onBeforeUnmount 释放;连发事件防抖合并,
@@ -876,12 +866,8 @@ async function handleImportDir() {
// 审批对话框 UI + 单/多选决策逻辑抽离至 components/project/ApprovalDialog.vue
// handleApproval/handleApprovalMulti/isMultipleSelect/multiDecisions 已迁移;
// submitting(UX-260618-17)在子组件自治,父级 submitting 仅用于 submitNewTask
// ── 取消审批(调 cancel_workflow_node IPC 置节点 Cancelled)──
async function handleCancelApproval() {
await store.cancelHumanApproval()
showApprovalDialog.value = false
}
// P0-C:ApprovalDialog + watch pendingApproval + handleCancelApproval 已提至 App.vue(全局),
// TaskDetail 等无 ApprovalDialog 的页面自动受益(原局部渲染致 HumanNode 超时失败)
// ── 删除项目(软删 → 回收站,可恢复)──
async function handleDelete() {
@@ -897,13 +883,6 @@ watch(formattedEvents, () => {
if (logListRef.value) logListRef.value.scrollTop = logListRef.value.scrollHeight
})
// 监听审批请求(pendingApproval → 开弹窗;多选清空已在 ApprovalDialog 内 watch)
watch(() => store.pendingApproval, (newApproval) => {
if (newApproval) {
showApprovalDialog.value = true
}
}, { immediate: true })
// ── 工具函数 ──
// formatDate 由 ../utils/time 提供(统一毫秒字符串解析,根治 Invalid Date