ADD_UNIFY_METHOD.txt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // 在 stage-delivery.component.ts 的 line 518 后添加以下方法:
  2. /**
  3. * 统一旧数据的 currentStage 为"交付执行"
  4. */
  5. async unifyDeliveryStageForOldData(): Promise<void> {
  6. if (!this.project) return;
  7. const currentStage = this.project.get('currentStage');
  8. const validDeliveryStages = ['白模', '软装', '渲染', '后期'];
  9. if (validDeliveryStages.includes(currentStage)) {
  10. console.log(`🔥 [统一阶段] 检测到旧数据 currentStage="${currentStage}",统一为"交付执行"`);
  11. const data = this.project.get('data') || {};
  12. data.deliverySubStage = currentStage;
  13. this.project.set('currentStage', '交付执行');
  14. this.project.set('data', data);
  15. try {
  16. await this.project.save();
  17. console.log(`✅ [统一阶段] currentStage 已统一为"交付执行",子阶段保存到 deliverySubStage`);
  18. } catch (e) {
  19. console.error('❌ [统一阶段] 更新失败:', e);
  20. }
  21. } else if (currentStage === '交付执行') {
  22. const data = this.project.get('data') || {};
  23. if (!data.deliverySubStage) {
  24. const deliveryStageStatus = data.deliveryStageStatus || {};
  25. const stageOrder = ['white_model', 'soft_decor', 'rendering', 'post_process'];
  26. const stageNameMap: Record<string, string> = {
  27. 'white_model': '白模',
  28. 'soft_decor': '软装',
  29. 'rendering': '渲染',
  30. 'post_process': '后期'
  31. };
  32. let targetSubStage = '白模';
  33. for (const stageId of stageOrder) {
  34. const stageKey = stageId.replace('_', '');
  35. const status = deliveryStageStatus[stageKey]?.status;
  36. if (status !== 'approved') {
  37. targetSubStage = stageNameMap[stageId];
  38. break;
  39. }
  40. }
  41. data.deliverySubStage = targetSubStage;
  42. this.project.set('data', data);
  43. try {
  44. await this.project.save();
  45. console.log(`✅ [统一阶段] deliverySubStage 初始化为: ${targetSubStage}`);
  46. } catch (e) {
  47. console.error('❌ [统一阶段] deliverySubStage 初始化失败:', e);
  48. }
  49. }
  50. }
  51. }