Product表正确存储空间数据,包含:
productName, productType, statusspace 对象(spaceName, area, spaceType, complexity等)quotation 对象(price, basePrice, priceLevel等)requirements 对象profile 指针订单分配阶段(quotation-editor)
↓ 增删改操作
Product表更新
↓ productsUpdated事件
stage-order监听
↓ 发出全局事件
document.dispatchEvent('product-spaces-updated')
↓ 全局事件传播
其他阶段监听器
↓ 重新加载数据
确认需求、交付执行等阶段刷新
步骤1:quotation-editor发出事件
quotation-editor.component.ts@Output() productsUpdated 事件addProduct(), editProduct(), deleteProduct() 后发出事件{action: 'add'|'edit'|'delete', count: number}步骤2:stage-order转发全局事件
stage-order.component.html 第201行(productsUpdated)="onProductsUpdated($event)"stage-order.component.ts 第853-878行onProductsUpdated() 方法发出全局事件步骤3:其他阶段监听并刷新
确认需求阶段:
stage-requirements.component.tsOnDestroy 接口productUpdateListener 属性ngOnInit() 中调用 setupProductUpdateListener()setupProductUpdateListener() 监听全局事件ngOnDestroy() 清理监听器交付执行阶段:
stage-delivery.component.tsproductUpdateListener 属性ngOnInit() 中调用 setupProductUpdateListener()setupProductUpdateListener() 监听全局事件ngOnDestroy() 清理监听器productsUpdated 事件发射器addProduct() 中添加产品失败检查addProduct() 后发出事件editProduct() 后发出事件deleteProduct() 后发出事件(productsUpdated) 事件绑定onProductsUpdated() 方法
OnDestroyOnDestroy 接口productUpdateListener 属性ngOnInit() 中设置监听器setupProductUpdateListener() 方法ngOnDestroy() 方法productUpdateListener 属性ngOnInit() 中设置监听器ngOnDestroy() 清理监听器setupProductUpdateListener() 方法1. 用户点击"添加产品"按钮
↓
2. quotation-editor.addProduct()
- 创建Product记录并保存到数据库
- 重新加载产品列表
- 生成报价
↓
3. 发出 productsUpdated 事件
{action: 'add', count: 5}
↓
4. stage-order.onProductsUpdated() 接收
- 重新加载空间列表
- 发出全局事件:'product-spaces-updated'
↓
5. 其他阶段的监听器触发
- stage-requirements 检测到事件
- stage-delivery 检测到事件
↓
6. 各阶段重新加载数据
- 调用 loadData() 或 loadProjectProducts()
- 从Product表查询最新数据
- 更新UI显示
1. 用户点击删除按钮
↓
2. quotation-editor.deleteProduct()
- 从Product表删除记录
- 更新本地产品列表
- 更新报价spaces数组
- 重新计算总价
↓
3. 发出 productsUpdated 事件
{action: 'delete', count: 4}
↓
4. 全局事件传播
↓
5. 其他阶段自动刷新
- 确认需求阶段:空间列表更新
- 交付执行阶段:空间列表更新
观察控制台日志:
✅ [产品变更] 已添加产品,当前数量: 5
🔄 [订单分配] 产品添加, 当前数量: 5
✅ [订单分配] 已发出全局事件 product-spaces-updated
切换到"确认需求"阶段
观察控制台日志:
🔄 [确认需求] 检测到产品添加事件,重新加载空间...
✅ [确认需求] 空间加载完成,共 5 个空间
验证:确认需求阶段显示新添加的"书房"
观察控制台日志:
✅ [产品变更] 已删除产品,当前数量: 4
🔄 [订单分配] 产品删除, 当前数量: 4
切换到"交付执行"阶段
观察控制台日志:
🔄 [交付执行] 检测到产品删除事件,重新加载空间...
✅ [交付执行] 空间加载完成,共 4 个空间
验证:交付执行阶段不再显示已删除的空间
✅ [产品变更] 已添加产品,当前数量: 5
✅ [产品变更] 已编辑产品,当前数量: 5
✅ [产品变更] 已删除产品,当前数量: 4
🔄 [订单分配] 产品添加, 当前数量: 5
✅ [订单分配] 已发出全局事件 product-spaces-updated
✅ [确认需求] 已设置产品更新监听器
✅ [交付执行] 已设置产品更新监听器
🔄 [确认需求] 检测到产品添加事件,重新加载空间...
✅ [确认需求] 空间加载完成,共 5 个空间
🔄 [交付执行] 检测到产品删除事件,重新加载空间...
✅ [交付执行] 空间加载完成,共 4 个空间
🧹 [确认需求] 已清理产品更新监听器
🧹 [交付执行] 已清理产品更新监听器
使用RxJS Subject
添加加载状态指示
错误处理
批量操作优化
实现完成时间:2024年11月15日 14:30
修改文件数:6个文件
新增代码行数:约150行
测试状态:待用户验证