feat: 完成多模块迭代更新
- 新增过程巡检按步骤上报、数量不符上报、工位退料功能 - 增加工单工程编号三级归属字段 - 新增物料安全库存与缺货预警 - 新增附件管理、退库单管理模块 - 优化生产看板展示逻辑与前端页面文案 - 清理冗余的工艺路线相关代码与备份文件
This commit is contained in:
@@ -36,6 +36,7 @@ var seedPermissions = []seedPerm{
|
||||
{"stocktake:view", "库存盘点", "MENU", "/stocktake", "List", 60, ""},
|
||||
{"semi:view", "半成品/成品", "MENU", "/semi", "Box", 70, ""},
|
||||
{"ledger:view", "备料台账", "MENU", "/ledger", "Tickets", 80, ""},
|
||||
{"return:view", "退库确认", "MENU", "/return-order", "RefreshLeft", 85, ""},
|
||||
{"zone:view", "区域维护", "MENU", "/zone", "Location", 90, ""},
|
||||
{"material:view", "物料档案", "MENU", "/material", "Goods", 100, ""},
|
||||
{"user:manage", "账号管理", "MENU", "/users", "EditPen", 110, ""},
|
||||
@@ -68,6 +69,7 @@ var seedPermissions = []seedPerm{
|
||||
{"role:edit", "编辑角色", "BUTTON", "", "", 271, "role:manage"},
|
||||
{"role:delete", "删除角色", "BUTTON", "", "", 272, "role:manage"},
|
||||
{"agv:dispatch", "下发AGV", "BUTTON", "", "", 280, "agv:manage"},
|
||||
{"return:confirm", "确认收货", "BUTTON", "", "", 205, "return:view"},
|
||||
// 注:导出权限已按菜单拆分(inbound/outbound/inspection/inventory:export),
|
||||
// 不再使用全局 *:export,以更精细地控制“谁能在哪个菜单导出”。
|
||||
}
|
||||
@@ -193,6 +195,40 @@ func seedRbacHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
}
|
||||
_, _ = ctx.EntClient.Role.UpdateOneID(rl.ID).SetPermissionCodes(newCodes).Save(ctx0())
|
||||
}
|
||||
// 新增菜单权限的自动补授:seed 新增了 MENU 权限码(如新上线「退库确认」),
|
||||
// 但内置角色已存在、不会被上面覆盖 → 这里把内置角色(非 admin)按 seedRoleCodes
|
||||
// 的期望集合做「并集补授」,保证新菜单对既有角色立即可见。仅对内置三角色生效,
|
||||
// 不触碰自建角色(避免影响管理员的自定义授权)。
|
||||
builtin := map[string]bool{"admin": true, "operator": true, "inspector": true}
|
||||
for _, m := range seedRoleMeta {
|
||||
if m.Code == "admin" || !builtin[m.Code] {
|
||||
continue
|
||||
}
|
||||
rl, err := ctx.EntClient.Role.Query().Where(role.CodeEQ(m.Code)).Only(ctx0())
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
want := codes[m.Code]
|
||||
set := map[string]bool{}
|
||||
for _, c := range rl.PermissionCodes {
|
||||
set[c] = true
|
||||
}
|
||||
changed := false
|
||||
for _, c := range want {
|
||||
if !set[c] {
|
||||
set[c] = true
|
||||
changed = true
|
||||
}
|
||||
}
|
||||
if !changed {
|
||||
continue
|
||||
}
|
||||
merged := make([]string, 0, len(set))
|
||||
for c := range set {
|
||||
merged = append(merged, c)
|
||||
}
|
||||
_, _ = ctx.EntClient.Role.UpdateOneID(rl.ID).SetPermissionCodes(merged).Save(ctx0())
|
||||
}
|
||||
// 强制管理员角色始终拥有全部权限(不允许被缩减),与“admin 拥有所有权限”一致
|
||||
if adminRole, aerr := ctx.EntClient.Role.Query().Where(role.CodeEQ("admin")).Only(ctx0()); aerr == nil {
|
||||
_ = ctx.EntClient.Role.UpdateOneID(adminRole.ID).SetPermissionCodes(codes["admin"]).Exec(ctx0())
|
||||
|
||||
Reference in New Issue
Block a user