DELIVERY_STAGE_UNIFICATION.md 2.9 KB

交付执行阶段统一显示修复

问题描述

在交付执行阶段,currentStage会被设置为具体的子阶段(白模、软装、渲染、后期),导致:

  1. 项目管理页面显示状态为"待分配"(因为子阶段未被getProjectStatusByStage识别)
  2. 底部卡片显示具体子阶段而非"交付执行"

修复方案

1. 统一 currentStage 为"交付执行"

  • currentStage 统一设置为"交付执行"
  • 子阶段信息保存在 data.deliverySubStage

2. 修改位置

文件:stage-delivery.component.ts

Line 1727-1748:审批通过后的阶段更新逻辑

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: "白模" / "软装" / "渲染" / "后期"(保留)
  • 项目管理状态:进行中(正确)
  • 底部卡片:显示"交付执行"(正确)

数据结构

{
  currentStage: "交付执行",  // 统一为交付执行
  data: {
    deliverySubStage: "白模",  // 保留子阶段信息
    deliveryStageStatus: {
      whitemodel: { status: "pending" },
      softdecor: { status: "pending" },
      rendering: { status: "pending" },
      postprocess: { status: "pending" }
    }
  }
}

测试验证

  1. 打开处于"白模"阶段的项目
  2. 检查 currentStage 是否统一为"交付执行"
  3. 检查 data.deliverySubStage 是否保留为"白模"
  4. 查看项目管理页面,状态应为"进行中"
  5. 查看底部卡片,应显示"交付执行"