gaoluyang
9 小时以前 f6c08840767a5b9c5d09870e94c0c83a46a3ccba
fix(mes): 补充质检单「完成」按钮权限,修复完成检验单报没有该操作权限

- /mes/qc/{iqc,ipqc,oqc,rqc}/finish 校验的 finish 权限码在 system_menu 中没有对应按钮
- 新增四个完成按钮菜单并授权给已拥有对应质检列表菜单的角色

Co-Authored-By: Claude Code <noreply@anthropic.com>
已添加1个文件
39 ■■■■■ 文件已修改
docs/sql/mes_qc_finish_menu.sql 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/sql/mes_qc_finish_menu.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
-- è´¨æ£€å•「完成」按钮权限
--
-- èƒŒæ™¯ï¼šåŽç«¯ MesQcIqc/Ipqc/Oqc/RqcController çš„ /finish æŽ¥å£åˆ†åˆ«æ ¡éªŒ
--       mes:qc-iqc:finish / mes:qc-ipqc:finish / mes:qc-oqc:finish / mes:qc-rqc:finish,
--       ä½† system_menu ä¸­æ²¡æœ‰è¿™å››ä¸ªæƒé™ç å¯¹åº”的按钮,导致非超管用户点击「完成」
--       ç›´æŽ¥è¿”回 403「没有该操作权限」。
--
-- æœ¬è„šæœ¬å¹‚ç­‰ï¼Œå¯é‡å¤æ‰§è¡Œã€‚æ‰§è¡ŒåŽæ¸…ç† Redis ä¸­ç›¸å…³è§’色的 role_menu_ids ç¼“存,
-- æˆ–让用户重新登录后生效。
-- 1. è¡¥å››ä¸ªã€Œå®Œæˆã€æŒ‰é’®ï¼ŒæŒ‚在各自质检列表菜单下
INSERT INTO system_menu (name, permission, type, sort, parent_id, status, icon, creator, updater)
SELECT s.name, s.permission, 3, 7, p.id, 0, '', '1', '1'
FROM system_menu p
JOIN (
    SELECT '来料检验完成' AS name, 'mes:qc-iqc:finish' AS permission, 'mes/qc/iqc/index' AS component
    UNION ALL SELECT '过程检验完成', 'mes:qc-ipqc:finish', 'mes/qc/ipqc/index'
    UNION ALL SELECT '出货检验完成', 'mes:qc-oqc:finish', 'mes/qc/oqc/index'
    UNION ALL SELECT '退料检验完成', 'mes:qc-rqc:finish', 'mes/qc/rqc/index'
) s ON p.component = s.component
WHERE p.type = 2 AND p.deleted = b'0'
  AND NOT EXISTS (
      SELECT 1 FROM system_menu m
      WHERE m.permission = s.permission AND m.deleted = b'0'
  );
-- 2. æŽˆäºˆå·²æ‹¥æœ‰å¯¹åº”质检列表菜单的角色
INSERT INTO system_role_menu (role_id, menu_id, creator, updater)
SELECT DISTINCT rm.role_id, m.id, '1', '1'
FROM system_role_menu rm
JOIN system_menu p ON p.id = rm.menu_id AND p.type = 2 AND p.deleted = b'0'
JOIN system_menu m ON m.parent_id = p.id AND m.deleted = b'0'
WHERE p.component IN ('mes/qc/iqc/index', 'mes/qc/ipqc/index', 'mes/qc/oqc/index', 'mes/qc/rqc/index')
  AND m.permission IN ('mes:qc-iqc:finish', 'mes:qc-ipqc:finish', 'mes:qc-oqc:finish', 'mes:qc-rqc:finish')
  AND rm.deleted = b'0'
  AND NOT EXISTS (
      SELECT 1 FROM system_role_menu x
      WHERE x.role_id = rm.role_id AND x.menu_id = m.id AND x.deleted = b'0'
  );