Files
yanpeng200212 1f1b184411 新增工资/仓储/生产日报等模块,移除旧考勤模块
- 新增 PayRoll(工资)、Wms(仓储)、Prod(车速/缫丝/考勤/丝片检测/丝片台账/纤检日报/质量日报) 模块
- 新增对应 Domain 实体、Application DTO/Service、Api Controller 与前端页面
- 移除旧 Attendance 考勤模块(Controller/Service/Entity/DTO 及 5 个前端页面),由 Prod/Kaoqin 取代
- 调整路由、仪表盘、Lsjl 流丝记录实体与服务
- 更新业务种子数据与 DbSeeder
- 补充工作进度文档 14-27
2026-10-27 09:09:57 +08:00

3.4 KiB
Raw Permalink Blame History

工作进度-21:修复「生产-选剥茧」菜单未显示

协作规则(长期生效):每次对话结尾都要生成工作进度。 即在每轮对话结束前,把本轮完成的内容追加为 工作进度/工作进度-N.md,并在文档中保留本条规则,方便下一轮接续。

一、问题

用户反馈:项目里没有"生产-选剥茧"模块,前端看不到菜单页面。

二、根因(重要,后续加菜单必须记住)

项目中有两处菜单种子,但只有 DbSeeder 是主流程:

文件 实体 是否主流程 是否处理角色权限
Infrastructure/Data/DbSeeder.cs(SeedProdMenus → EnsureTopMenuWithChildren) SysMenu ✅ 是(生产菜单实际来源) ✅ 自动 EnsureMenuPermission 关联 admin
Infrastructure/Data/BusinessSeedData.cs(AddMenu) Menu ❌ 否(上轮误改此处) 需另走 adminRole 循环

20 轮只改了 BusinessSeedData.cs,所以菜单没有生效。

结论:以后新增菜单,必须改 DbSeeder.cs 的 SeedProdMenus,用 EnsureTopMenuWithChildren。

三、修复

在 DbSeeder.cs「生产-后缫」之后新增(Sort 7):

EnsureTopMenuWithChildren(fsql, snowflake, "/prod/xuanjian", "生产-选剥茧", "Grid", 7,
    new (string Name, string Path, string Component, string Permission, string Icon, int Sort)[]
    {
        ("选茧日报", "/prod/xuanjian/rb",    "prod/xuanjian/index", "prod:xuanjian:list",       "Document", 1),
        ("选茧计划", "/prod/xuanjian/plan",  "prod/xuanjian/index", "prod:xuanjian:plan:list",  "Calendar", 2),
        ("选茧班组", "/prod/xuanjian/banzu", "prod/xuanjian/index", "prod:xuanjian:banzu:list", "User",     3)
    });

并补「子菜单顺序归一」(/prod/xuanjian/rb=1、/plan=2、/banzu=3)。

EnsureTopMenuWithChildren 会:

  1. 建/更新一级目录(/prod/xuanjian,MenuType_Enum.分组)
  2. 建子菜单(不存在才插入)
  3. EnsureMenuPermission 关联 admin 角色 → 无需另外配权限

BusinessSeedData.cs 里 20 轮加的那段保留(AddMenu 有 if (!Any(m => m.Path == path)) 幂等保护,不会重复)。

四、前端路由(已确认存在)

web/src/router/index.js:

'prod/xuanjian/index': () => import('../views/prod/xuanjian/index.vue'),

菜单的 Component 字段 prod/xuanjian/index 与之对应,三个菜单共用该组件, 由 index.vue 内 tabOf(route.path) 按路由末段自动切 Tab(rb / plan / banzu)。

五、验证

  • F9WebAiTest.Infrastructure 编译:无 error CS

六、用户需要做的

  1. 重启后端服务(菜单在启动时 seed;且运行中 Api 进程锁 DLL 会导致编译复制失败)
  2. 重启后重新登录 / 刷新(菜单随登录接口下发)
  3. 用 admin 角色查看(权限只关联了 admin;其他角色需在角色管理里勾选)

七、遗留

  • 非 admin 角色需在「角色管理」手动勾选选剥茧三个菜单
  • 标包重仍是 localStorage 临时方案,建议改 /sys/registry(见 20 轮)
  • 计划里「领料单ID」为手填数字框,老系统是选择原料出库单

八、下次接续提示

  • 新增菜单一律改 DbSeeder.SeedProdMenus(SysMenu + EnsureTopMenuWithChildren),不要再只改 BusinessSeedData
  • 每轮对话结尾记得生成本工作进度文档