diff --git a/docs/superpowers/specs/2026-08-17-box-type-select-modal-design.md b/docs/superpowers/specs/2026-08-17-box-type-select-modal-design.md new file mode 100644 index 00000000..1c44f6ec --- /dev/null +++ b/docs/superpowers/specs/2026-08-17-box-type-select-modal-design.md @@ -0,0 +1,32 @@ +# 木箱类型选择弹窗设计 + +## 目标 + +新增可供其他页面复用的木箱类型选择弹窗,调用方式与物料选择弹窗保持一致,并支持单选和多选。 + +## 组件位置 + +`nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/boxtype/components/BoxTypeSelectModal.vue` + +## 交互与接口 + +- 调用方通过 `useVbenModal` 连接组件。 +- 调用方使用 `setData({ multiple: false })` 打开单选,使用 `setData({ multiple: true })` 打开多选;未传时默认单选。 +- 单选使用 radio 列,多选使用 checkbox 列。 +- 确认时通过 `select` 事件返回 `LmsBoxTypeApi.BoxType[]`。 +- 未选择数据时提示“请至少选择一条木箱类型”,并保持弹窗打开。 +- 弹窗关闭时清空上一次选择,避免选择状态泄漏到下次打开。 + +## 查询与展示 + +- 复用 `getBoxTypePage` 分页接口。 +- 查询条件包括木箱类型、木箱描述。 +- 列表展示木箱类型、木箱描述、木箱长度、木箱宽度、木箱高度、是否一次捆扎、是否二次捆扎。 +- 布尔字段复用现有 `CellDict` 和 `INFRA_BOOLEAN_STRING` 字典展示。 +- 行主键使用木箱类型记录的 `id`。 + +## 范围 + +- 只新增通用选择弹窗组件,不替换现有木箱类型维护弹窗或其他页面的选择逻辑。 +- 不新增后端接口,不修改数据库。 +- 按项目约定,未明确要求时不新增或运行测试;交付前运行目标文件 ESLint 和静态 diff 检查。