# 交付执行阶段统一显示修复 ## 问题描述 在交付执行阶段,`currentStage`会被设置为具体的子阶段(白模、软装、渲染、后期),导致: 1. 项目管理页面显示状态为"待分配"(因为子阶段未被`getProjectStatusByStage`识别) 2. 底部卡片显示具体子阶段而非"交付执行" ## 修复方案 ### 1. 统一 currentStage 为"交付执行" - `currentStage` 统一设置为"交付执行" - 子阶段信息保存在 `data.deliverySubStage` 中 ### 2. 修改位置 #### 文件:`stage-delivery.component.ts` **Line 1727-1748:审批通过后的阶段更新逻辑** ```typescript if (allStagesApproved) { // 所有阶段都已通过,推进到尾款结算 this.project.set('currentStage', '尾款结算'); data.deliveryCompletedAt = now; data.deliveryCompletedBy = this.currentUser.get('name'); delete data.deliverySubStage; // 清除子阶段标记 console.log('✅ 所有交付阶段已完成,推进到尾款结算'); } else { // 保持 currentStage 为"交付执行",更新 deliverySubStage 为下一个子阶段 const nextStage = this.getNextStage(currentType); if (nextStage) { const nextStageName = stageNameMap[nextStage] || '白模'; data.deliverySubStage = nextStageName; this.project.set('currentStage', '交付执行'); // 保持为"交付执行" console.log(`当前阶段审批通过,currentStage保持为"交付执行",deliverySubStage更新为: ${nextStageName}`); } else { const currentStageName = stageNameMap[currentType] || '白模'; data.deliverySubStage = currentStageName; this.project.set('currentStage', '交付执行'); // 保持为"交付执行" console.log(`当前阶段审批通过,currentStage保持为"交付执行",deliverySubStage保持为: ${currentStageName}`); } } ``` **需要添加:unifyDeliveryStage() 方法** - 在项目加载时调用 - 检查旧数据,将子阶段统一为"交付执行" ## 效果 ### 修复前 - `currentStage`: "白模" / "软装" / "渲染" / "后期" - 项目管理状态:待分配(错误) - 底部卡片:显示具体子阶段 ### 修复后 - `currentStage`: "交付执行"(统一) - `data.deliverySubStage`: "白模" / "软装" / "渲染" / "后期"(保留) - 项目管理状态:进行中(正确) - 底部卡片:显示"交付执行"(正确) ## 数据结构 ```typescript { currentStage: "交付执行", // 统一为交付执行 data: { deliverySubStage: "白模", // 保留子阶段信息 deliveryStageStatus: { whitemodel: { status: "pending" }, softdecor: { status: "pending" }, rendering: { status: "pending" }, postprocess: { status: "pending" } } } } ``` ## 测试验证 1. 打开处于"白模"阶段的项目 2. 检查 `currentStage` 是否统一为"交付执行" 3. 检查 `data.deliverySubStage` 是否保留为"白模" 4. 查看项目管理页面,状态应为"进行中" 5. 查看底部卡片,应显示"交付执行"