# 工作进度-20:生产 · 选剥茧 前端完成(模块可运行) > **协作规则(长期生效)**:**每次对话结尾都要生成工作进度**。 > 即在每轮对话结束前,把本轮完成的内容追加为 `工作进度/工作进度-N.md`,并在文档中保留本条规则,方便下一轮接续。 > 承接 [工作进度-19](./工作进度-19.md)(后端完成)。本轮完成前端,模块至此可运行。 ## 一、本次完成(前端) 新建目录 `web/src/views/prod/xuanjian/`: | 文件 | 内容 | | --- | --- | | `index.vue` | Tab 容器;三个菜单共用本组件,**按路由末段自动定位 Tab**(`/rb`、`/plan`、`/banzu`) | | `XjrbPanel.vue` | **选茧日报**:查询、多表头列表(8 类茧各自包数/重量)、编辑弹窗、「计算盈亏」按钮 | | `XjrbPlanPanel.vue` | **选茧计划**:列表 + **展开行主从联动**显示计划明细,明细增删改,明细内「计算盈亏」 | | `XjpbBanzuPanel.vue` | **选茧班组**:班组列表 + 展开行显示职工,「编辑录入」弹窗按班次批量分配职工与组别 | ### 关键实现 - **日报「计算盈亏」**:填完包数/重量后点按钮 → `POST /prod/xjrb/count-yingkui` → 回填 `liantongRate` / `yingkui`,并 `ElMessage` 提示"从 xxx 开始累计"(即后端返回的 `startDateText`) - **标包重**:老系统从注册表 `生产\选剥茧` 读取(重量 = 包数 × 标包重,茧花/退回手工录入)。 本次**先用 `localStorage`(key `xuanjian_biaobaozhong`)临时存放**并带「按标包重换算」按钮; 折叠面板可编辑 7 个品类的标包重(联统/好五级/五级/绵/双宫/下脚/茧衣) - **计划维度**联统率按**包数**口径(与日报按重量不同),明细勾选「选茧完成」保存后计划置为已完成、不可再改 - **班组「编辑录入」**:按班次整体覆盖(后端先清该班次旧职工与班组,再重建) ### 接口对接要点(踩坑) | 事项 | 正确写法 | | --- | --- | | 工艺庄口选择 | 用组件 `web/src/components/select/CraftZhuangKouSelect.vue`,`@confirm` 回调参数含 `id` / `zhuangKouName` / `productionDisplayName` | | 员工列表 | `GET /sys/employee`,参数是 **`depId`**、**`worktypeId`**(注意不是 workTypeId)、`banci`、`workStatus`、`like` | | 工种列表 | `GET /sys/worktype`,返回 `res.data.items` | | 员工筛选口径 | 部门 = 职责类型「选剥茧」的车间(`depOptions({ duty: [DUTY.选剥茧] })`)+ 工种名含「选茧」 | | 路由 | `web/src/router/index.js` 的路径映射表,新增 `'prod/xuanjian/index'` | ## 二、注册与菜单 1. **路由**(`web/src/router/index.js`): ```js 'prod/xuanjian/index': () => import('../views/prod/xuanjian/index.vue'), ``` 2. **菜单**(`backend/F9WebAiTest.Infrastructure/Data/BusinessSeedData.cs`): 新建一级目录「生产-选剥茧」(`/prod/xuanjian`,Sort 7),下挂三个菜单: - 选茧日报 → `/prod/xuanjian/rb` - 选茧计划 → `/prod/xuanjian/plan` - 选茧班组 → `/prod/xuanjian/banzu` 组件均为 `prod/xuanjian/index` > ⚠️ `DbSeeder.cs` 里**另有一处**生产菜单的批量插入(`SeedProdMenus`,含"纤度检验/黑板检验…"元组列表)。 > 若启动后菜单未出现,需在那一处同步补上选剥茧的三个菜单项(本轮只改了 `BusinessSeedData.cs`)。 ## 三、验证情况 - 前端 4 个新文件 lint:**0 错误** - `F9WebAiTest.Infrastructure` 编译:无 `error CS`(菜单种子数据通过) - 后端(19 轮):Application 已成功生成、Api 无 CS 错误 ## 四、待办 / 可优化 1. **标包重改为注册表**:新系统有 `/sys/registry` 接口(老系统正是存注册表 `生产\选剥茧`)。 当前用 localStorage 是临时方案,建议改为后端注册表读写,实现多端一致 2. **领料单选择**:计划里的「领料单ID」目前是手填数字框,老系统是选择原料出库单, 应改为下拉/弹窗选择并回填 `yllingliaodanCode` 3. **日报/计划关联**:老系统计划可按领料单生成日报,当前两侧独立,未做联动 4. 菜单如未显示,补 `DbSeeder.SeedProdMenus` 5. 启动前需**重启后端服务**(新表在启动时建立;且 Api 进程会锁定 DLL 导致编译复制失败) ## 五、下次接续提示 - 选剥茧三个页面都挂在 `prod/xuanjian/index.vue`,改 Tab 逻辑看 `tabOf(route.path)` - 日报盈亏口径最易改错:起始日期由近及远跳过 `LiantongRate == 0` 的记录,见 19 轮文档第二节 - 计划维度联统率用**包数**,日报用**重量**,两者分母不同,勿混用 - **每轮对话结尾记得生成本工作进度文档**