feat: 新增装机绑定功能与权限、BOM工序配置
1. 新增装机绑定实体与相关CRUD逻辑,支持工件工序物料绑定/解绑 2. 为BOM物料新增装配工序字段,支持按工序校验绑定 3. 扩展权限表,新增父权限码字段支持菜单按钮关联 4. 统一各页面帮助弹窗参数,新增角色管理帮助文档 5. 新增公共格式化工具函数,优化侧边栏菜单展开逻辑 6. 新增工位终端绑定代理接口与MES内部绑定API 7. 修复主入口数据库连接与schema初始化逻辑,新增一键迁移工具
This commit is contained in:
@@ -96,42 +96,50 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
}
|
||||
|
||||
// 3.1 按钮级权限(块2):前端按钮 + 后端接口 双重校验
|
||||
buttons := []struct{ code, name, typ, path string }{
|
||||
{"produce.workorder:add", "工单-新增", "BUTTON", ""},
|
||||
{"produce.workorder:edit", "工单-编辑", "BUTTON", ""},
|
||||
{"produce.workorder:delete", "工单-删除", "BUTTON", ""},
|
||||
{"produce.workorder:dailyplan", "工单-日排产", "BUTTON", ""},
|
||||
{"produce.bom:edit", "物料清单-维护", "BUTTON", ""},
|
||||
{"produce.material:generate", "备料单-生成", "BUTTON", ""},
|
||||
{"produce.plc:send", "工位组合-下发", "BUTTON", ""},
|
||||
{"produce.product:add", "产品类型-新增", "BUTTON", ""},
|
||||
{"produce.product:edit", "产品类型-编辑", "BUTTON", ""},
|
||||
{"produce.product:delete", "产品类型-删除", "BUTTON", ""},
|
||||
{"produce.processflow:add", "工艺流程-新增", "BUTTON", ""},
|
||||
{"produce.processflow:edit", "工艺流程-编辑", "BUTTON", ""},
|
||||
{"produce.processflow:delete", "工艺流程-删除", "BUTTON", ""},
|
||||
{"produce.processflow:upload", "工艺流程-上传图纸", "BUTTON", ""},
|
||||
{"produce.station:edit", "工位-绑定", "BUTTON", ""},
|
||||
{"sys.account:add", "账号-新增", "BUTTON", ""},
|
||||
{"sys.account:edit", "账号-编辑", "BUTTON", ""},
|
||||
{"sys.account:delete", "账号-删除", "BUTTON", ""},
|
||||
{"sys.role:add", "角色-新增", "BUTTON", ""},
|
||||
{"sys.role:edit", "角色-编辑", "BUTTON", ""},
|
||||
{"sys.role:delete", "角色-删除", "BUTTON", ""},
|
||||
{"sys.role:perm", "角色-权限定义", "BUTTON", ""},
|
||||
{"sys.inspect:checkin", "巡检-开工签到", "BUTTON", ""},
|
||||
{"sys.inspect:point", "巡检-工位点检", "BUTTON", ""},
|
||||
{"sys.inspect:process", "巡检-过程巡检", "BUTTON", ""},
|
||||
{"sys.inspect:done", "巡检-完工确认", "BUTTON", ""},
|
||||
{"sys.inspect:alarm", "巡检-异常上报", "BUTTON", ""},
|
||||
{"sys.inspect:view", "巡检-记录查看", "BUTTON", ""},
|
||||
// parent = 所属菜单权限码:每个按钮显式声明挂在哪个菜单下,前端据此组装权限树,
|
||||
// 不再用 code.startsWith(菜单+':') 这类前缀通配推断。
|
||||
buttons := []struct{ code, name, typ, path, parent string }{
|
||||
{"produce.workorder:add", "工单-新增", "BUTTON", "", "produce.workorder"},
|
||||
{"produce.workorder:edit", "工单-编辑", "BUTTON", "", "produce.workorder"},
|
||||
{"produce.workorder:delete", "工单-删除", "BUTTON", "", "produce.workorder"},
|
||||
{"produce.workorder:dailyplan", "工单-日排产", "BUTTON", "", "produce.workorder"},
|
||||
{"produce.bom:edit", "物料清单-维护", "BUTTON", "", "produce.bom"},
|
||||
{"produce.material:generate", "备料单-生成", "BUTTON", "", "produce.material"},
|
||||
{"produce.plc:send", "工位组合-下发", "BUTTON", "", "produce.plc"},
|
||||
{"produce.product:add", "产品类型-新增", "BUTTON", "", "produce.product"},
|
||||
{"produce.product:edit", "产品类型-编辑", "BUTTON", "", "produce.product"},
|
||||
{"produce.product:delete", "产品类型-删除", "BUTTON", "", "produce.product"},
|
||||
{"produce.processflow:add", "工艺流程-新增", "BUTTON", "", "produce.processflow"},
|
||||
{"produce.processflow:edit", "工艺流程-编辑", "BUTTON", "", "produce.processflow"},
|
||||
{"produce.processflow:delete", "工艺流程-删除", "BUTTON", "", "produce.processflow"},
|
||||
{"produce.processflow:upload", "工艺流程-上传图纸", "BUTTON", "", "produce.processflow"},
|
||||
{"produce.station:edit", "工位-绑定", "BUTTON", "", "produce.station"},
|
||||
{"sys.account:add", "账号-新增", "BUTTON", "", "sys.account"},
|
||||
{"sys.account:edit", "账号-编辑", "BUTTON", "", "sys.account"},
|
||||
{"sys.account:delete", "账号-删除", "BUTTON", "", "sys.account"},
|
||||
{"sys.role:add", "角色-新增", "BUTTON", "", "sys.role"},
|
||||
{"sys.role:edit", "角色-编辑", "BUTTON", "", "sys.role"},
|
||||
{"sys.role:delete", "角色-删除", "BUTTON", "", "sys.role"},
|
||||
{"sys.role:perm", "角色-权限定义", "BUTTON", "", "sys.role"},
|
||||
{"sys.inspect:checkin", "巡检-开工签到", "BUTTON", "", "sys.inspect"},
|
||||
{"sys.inspect:point", "巡检-工位点检", "BUTTON", "", "sys.inspect"},
|
||||
{"sys.inspect:process", "巡检-过程巡检", "BUTTON", "", "sys.inspect"},
|
||||
{"sys.inspect:done", "巡检-完工确认", "BUTTON", "", "sys.inspect"},
|
||||
{"sys.inspect:alarm", "巡检-异常上报", "BUTTON", "", "sys.inspect"},
|
||||
{"sys.inspect:view", "巡检-记录查看", "BUTTON", "", "sys.inspect"},
|
||||
}
|
||||
for _, b := range buttons {
|
||||
if s.ctx.EntClient.Permission.Query().Where(permission.Code(b.code)).ExistX(ctx) {
|
||||
exist, err := s.ctx.EntClient.Permission.Query().Where(permission.Code(b.code)).Only(ctx)
|
||||
if err == nil && exist != nil {
|
||||
// 已存在:幂等回填 parentCode(避免旧数据没有父子关系导致权限树漏按钮)
|
||||
if exist.ParentCode != b.parent {
|
||||
_ = exist.Update().SetParentCode(b.parent).Exec(ctx)
|
||||
}
|
||||
continue
|
||||
}
|
||||
_ = s.ctx.EntClient.Permission.Create().
|
||||
SetCode(b.code).SetName(b.name).SetType(b.typ).SetPath(b.path).Exec(ctx)
|
||||
SetCode(b.code).SetName(b.name).SetType(b.typ).SetPath(b.path).
|
||||
SetParentCode(b.parent).Exec(ctx)
|
||||
}
|
||||
|
||||
// 3.2 旧版权限码迁移(sys.rbac 家族 → sys.account / sys.role,幂等)
|
||||
|
||||
Reference in New Issue
Block a user