Skip to content

弹框系统改造报告

文件路径: apps/admin/src/pages/property-manage/community-manage/my/index.vue
改造日期: 2025-11-27
改造依据: make-dialog 子代理规范

1. 改造概述

本次改造按照 make-dialog 子代理的标准模板,对 property-manage/community-manage/my 列表页中的弹框系统进行了全面优化,确保符合项目的弹框开发规范。

2. 主要修改内容

2.1 修复表单类型导入问题

  • 修改前: import { CommunityManageFormProps, defaultForm, type CommunityManageFormVO }
  • 修改后: import { CommunityManageMyFormProps, defaultForm, type CommunityManageMyFormVO }
  • 说明: 统一使用正确的类型名称,确保类型定义与实际使用保持一致

2.2 优化业务对象组装逻辑

  • 改进: 采用推荐写法,将业务对象变量名与类型名保持一致
  • 变更: const formVO: CommunityManageFormVOconst CommunityManageMyFormVO: CommunityManageMyFormVO
  • 优势: 提高代码可读性,遵循最佳实践

2.3 修复按钮配置参数问题

  • 标准化: 确保所有按钮回调函数都有完整的参数 { dialog: { options, index }, button }
  • 改进: 重置和提交按钮都添加了完整的参数结构
  • 一致性: 与标准模板保持完全一致

2.4 优化 info 模式按钮配置

  • 改进前: 使用条件三元表达式完全重写按钮数组
  • 改进后: 使用展开运算符动态添加按钮,更加简洁
  • 优势: 保持取消按钮始终存在,仅在非 info 模式下添加重置和提交按钮

2.5 确保表单实例安全访问

  • 安全性: 为所有表单实例访问添加可选链操作符 ?.
  • 防护: 在 doBeforeClose 中添加实例存在性检查
  • 稳定性: 避免因实例未初始化导致的运行时错误

3. 符合 make-dialog 规范的关键点

3.1 ✅ 严格的 openDialog 函数封装

  • 函数名称统一为 openDialog
  • 参数类型为 { mode: Mode; row?: 我的小区_列表数据 }
  • 使用必填的 mode 参数控制模式

3.2 ✅ 完整的按钮排布顺序

  1. 取消按钮 (type: "info") - 始终存在
  2. 重置按钮 (type: "warning") - 非 info 模式下存在
  3. 提交按钮 (type: "success") - 非 info 模式下存在

3.3 ✅ 标准的按钮回调处理

  • 取消按钮: useDoBeforeClose({ defaultValues, formComputed, index, options })
  • 重置按钮: plusFormInstance.handleReset()
  • 提交按钮: handleSubmit()testAsync()closeDialog()

3.4 ✅ 完善的模式控制

  • 使用 useMode 组合式 API
  • 根据模式动态组装业务对象
  • 支持三种模式: add/edit/info

3.5 ✅ 正确的表单实例使用

  • 使用 InstanceType<typeof ComponentForm> 获取实例类型
  • 通过可选链操作符安全访问实例方法和属性
  • 正确调用 formComputedplusFormInstance

4. 代码质量提升

4.1 类型安全

  • 所有类型定义正确导入和使用
  • 业务对象与类型定义严格匹配
  • 避免了类型转换和不安全的假设

4.2 代码可维护性

  • 遵循统一的编码规范
  • 使用推荐的最佳实践模式
  • 代码结构清晰,易于理解和维护

4.3 运行时稳定性

  • 添加了必要的安全检查
  • 使用可选链操作符避免空值错误
  • 确保在各种场景下都能稳定运行

5. 改造后效果

改造后的弹框系统完全符合 make-dialog 子代理的标准模板要求,具备以下特点:

  • 统一的代码风格和结构
  • 完善的类型安全保障
  • 稳定的运行时表现
  • 易于维护和扩展
  • 与项目其他弹框实现保持一致

6. 总结

本次改造成功地将弹框系统标准化,确保与项目中的其他弹框实现保持一致。所有修改都严格遵循 make-dialog 子代理的要求,提高了代码质量和可维护性。

贡献者

The avatar of contributor named as ruan-cat ruan-cat

页面历史

最近更新