Files
huachuang/docs/superpowers/plans/2026-08-17-sub-package-relation-batch.md
2026-08-18 18:44:13 +08:00

134 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 子卷包装关系批量新增 PC 原型实现计划
> **面向 AI 代理的工作者:** 必需子技能:使用 superpowers:subagent-driven-development推荐或 superpowers:executing-plans 逐任务实现此计划。步骤使用复选框(`- [ ]`)语法来跟踪进度。
**目标:** 创建一个符合现有 Vben Admin + Ant Design 风格、可在 PC 上完整演示批量新增子卷包装关系流程的单文件 HTML 原型。
**架构:** 使用一个自包含 HTML 文件承载页面结构、CSS 设计令牌与原生 JavaScript 状态管理。以行数组作为唯一数据源,集中实现渲染、木箱尺寸联动、复制/删除、校验和本地模拟提交,避免远程依赖与构建步骤。
**技术栈:** HTML5、CSS3、原生 JavaScript、Playwright 或可用浏览器工具进行交互验证。
---
## 文件结构
- 创建:`docs/prototype_design/design/2026-08-17-sub-package-relation-batch-design.html`——完整页面、弹窗、样式、模拟数据和交互逻辑。
- 修改:`docs/superpowers/plans/2026-08-17-sub-package-relation-batch.md`——执行后勾选任务状态。
### 任务 1建立页面骨架与视觉体系
**文件:**
- 创建:`docs/prototype_design/design/2026-08-17-sub-package-relation-batch-design.html`
- [x] **步骤 1定义可验证的静态结构约束**
确认 HTML 必须包含 `#batchModal``#editableBody``#addRowBtn``#clearBtn``#cancelBtn``#submitBtn`,并包含 11 个业务字段对应的输入控件生成逻辑。
- [x] **步骤 2创建完整后台页面骨架**
实现侧边栏、顶栏、面包屑、查询区、子卷包装关系列表和遮罩层,让弹窗处于真实页面上下文中。
- [x] **步骤 3实现 Ant Design 风格令牌**
`:root` 中定义主色 `#1677ff`、边框 `#d9d9d9`、页面底色 `#f5f5f5`、正文色 `#1f2329`、圆角和阴影;实现按钮、输入框、表格、提示条、弹窗及键盘聚焦状态。
- [x] **步骤 4验证静态结构**
运行:
```powershell
rg -n 'batchModal|editableBody|addRowBtn|clearBtn|cancelBtn|submitBtn' docs/prototype_design/design/2026-08-17-sub-package-relation-batch-design.html
```
预期:六个关键 ID 均至少出现一次。
### 任务 2实现批量录入核心交互
**文件:**
- 修改:`docs/prototype_design/design/2026-08-17-sub-package-relation-batch-design.html`
- [x] **步骤 1定义行数据与木箱类型**
定义 `rows` 数组、递增行键和以下演示字典:
```js
const boxTypes = {
'BX-A': { length: 1200, width: 1000, high: 900 },
'BX-B': { length: 1100, width: 900, high: 850 },
'BX-C': { length: 800, width: 600, high: 600 },
};
```
- [x] **步骤 2实现表格渲染与字段绑定**
每行渲染 `package_box_sn``box_weight``quality_guaran_period``sale_order_name``customer_name``date_of_fg_inbound``container_name``box_type``box_length``box_width``box_high`,其中尺寸字段只读。
- [x] **步骤 3实现木箱类型联动**
监听 `box_type` 变化,将选中类型对应的长、宽、高写入当前行;清空类型时同步清空三个尺寸并重新渲染统计。
- [x] **步骤 4实现行级操作**
实现新增、复制和删除。复制时保留公共数据并清空 `package_box_sn``container_name`;删除到最后一行时用新空行替换。
- [x] **步骤 5实现批量清空**
点击“清空全部”弹出确认层,确认后恢复 3 个空行,取消后保持原数据。
### 任务 3实现校验、提交与关闭流程
**文件:**
- 修改:`docs/prototype_design/design/2026-08-17-sub-package-relation-batch-design.html`
- [x] **步骤 1实现逐行必填校验**
要求七个可编辑业务字段和 `box_type` 均有值,`box_weight` 必须大于 0错误记录为 `{ rowKey, field, message }` 并映射到对应单元格。
- [x] **步骤 2实现重复值校验**
使用两个 `Map` 检查 `package_box_sn``container_name`,第二次出现及其首次出现位置都标红,并显示“与第 N 行重复”。
- [x] **步骤 3实现错误摘要与定位**
提交失败时显示顶部红色摘要,更新错误数量,并聚焦首个无效控件;输入修正后清除当前字段错误。
- [x] **步骤 4实现本地模拟提交**
校验通过后显示加载状态,短暂延迟后关闭弹窗、向背景列表追加记录,并显示“成功新增 N 条子卷包装关系”。
- [x] **步骤 5实现关闭保护与重新打开**
有内容时点击取消、关闭或遮罩显示放弃确认;空表直接关闭。背景页“批量新增”按钮重新打开弹窗并恢复 3 行。
### 任务 4浏览器验证与视觉修正
**文件:**
- 修改:`docs/prototype_design/design/2026-08-17-sub-package-relation-batch-design.html`
- 修改:`docs/superpowers/plans/2026-08-17-sub-package-relation-batch.md`
- [x] **步骤 1以目标视口打开原型**
使用 1440 × 900 视口加载本地 HTML确认弹窗未超出视口表格只在内容区内部滚动底部按钮始终可见。
- [x] **步骤 2走通核心流程**
依次操作新增行、选择 BX-B、确认尺寸为 1100 × 900 × 850、复制行、删除行、清空取消、空表提交校验、重复值校验和有效提交。
- [x] **步骤 3检查运行错误**
确认控制台无 JavaScript 错误、无远程资源失败、所有按钮可点击、Tab 键焦点可见。
- [x] **步骤 4修正视觉问题**
重点检查表头分组、冻结列、横向滚动、错误提示、背景遮罩、弹窗间距和 12 至 14px 的信息密度,修复裁切或重叠。
- [x] **步骤 5完成静态检查**
运行:
```powershell
rg -n 'package_box_sn|box_weight|quality_guaran_period|sale_order_name|customer_name|date_of_fg_inbound|container_name|box_type|box_length|box_width|box_high' docs/prototype_design/design/2026-08-17-sub-package-relation-batch-design.html
```
预期11 个字段名全部存在HTML 无远程 `http://``https://` 依赖。