新增工资/仓储/生产日报等模块,移除旧考勤模块
- 新增 PayRoll(工资)、Wms(仓储)、Prod(车速/缫丝/考勤/丝片检测/丝片台账/纤检日报/质量日报) 模块 - 新增对应 Domain 实体、Application DTO/Service、Api Controller 与前端页面 - 移除旧 Attendance 考勤模块(Controller/Service/Entity/DTO 及 5 个前端页面),由 Prod/Kaoqin 取代 - 调整路由、仪表盘、Lsjl 流丝记录实体与服务 - 更新业务种子数据与 DbSeeder - 补充工作进度文档 14-27
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
# 工作进度-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):
|
||||
|
||||
```csharp
|
||||
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`:
|
||||
```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`
|
||||
- **每轮对话结尾记得生成本工作进度文档**
|
||||
Reference in New Issue
Block a user