-- ============================================================================= -- OA 审批菜单注册 + 旧「工作流管理」伪删除 -- 日期:2026-07-15 -- 说明: -- 1. 在「系统管理」顶级(TOP...00005)下注册「OA审批」及三级页面菜单, -- id / path / component / perms 与 web-admin sqxp.ts、backend menu.py 对齐。 -- 2. 伪删除旧「工作流管理」二级及其三级菜单(OA 已替代),并清理角色菜单关联。 -- ============================================================================= SET NAMES utf8mb4; -- --------------------------------------------------------------------------- -- 1. 伪删除旧「工作流管理」及其子菜单 -- --------------------------------------------------------------------------- UPDATE `sys_menu` SET `del_flag` = 1, `update_time` = NOW() WHERE `del_flag` = 0 AND ( `id` = 'WKF00000000000000000000000000001' OR `parent_id` = 'WKF00000000000000000000000000001' OR `id` IN ( '10000000000000000000000000000wf01', '10000000000000000000000000000wf02', '10000000000000000000000000000wf03', '10000000000000000000000000000wf04', '10000000000000000000000000000wf05' ) ); DELETE FROM `sys_role_menu` WHERE `menu_id` IN ( 'WKF00000000000000000000000000001', '10000000000000000000000000000wf01', '10000000000000000000000000000wf02', '10000000000000000000000000000wf03', '10000000000000000000000000000wf04', '10000000000000000000000000000wf05' ); -- --------------------------------------------------------------------------- -- 2. 注册「OA审批」二级目录(挂在系统管理顶级下) -- --------------------------------------------------------------------------- INSERT INTO `sys_menu` ( `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` ) SELECT 'OA000000000000000000000000000001', 'OA审批', 'TOP00000000000000000000000000005', 'M', 'oa-approval', NULL, NULL, 1, '1', '1', 'zkxw', 2, '钉钉式 OA 审批(替代旧工作流管理)', NULL, '', NOW(), NULL, NOW(), 0 FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM `sys_menu` WHERE `id` = 'OA000000000000000000000000000001' ); -- 若曾假删过同 id,则恢复 UPDATE `sys_menu` SET `del_flag` = 0, `menu_name` = 'OA审批', `parent_id` = 'TOP00000000000000000000000000005', `menu_type` = 'M', `path` = 'oa-approval', `component` = NULL, `perms` = NULL, `visible` = '1', `status` = '1', `order_num` = 2, `update_time` = NOW() WHERE `id` = 'OA000000000000000000000000000001'; -- --------------------------------------------------------------------------- -- 3. 注册 OA 三级菜单(可见页 + 隐藏详情/设计页) -- --------------------------------------------------------------------------- INSERT INTO `sys_menu` ( `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` ) SELECT * FROM ( SELECT 'OA000000000000000000000000000101' AS id, '审批管理' AS menu_name, 'OA000000000000000000000000000001' AS parent_id, 'C' AS menu_type, 'apps' AS path, '/oa-approval/apps/index' AS component, 'oa:apps:list' AS perms, 1 AS is_frame, '1' AS visible, '1' AS status, 'zkxw' AS tenant_no, 1 AS order_num, NULL AS remark, NULL AS create_by, '' AS create_dept_id, NOW() AS create_time, NULL AS update_by, NOW() AS update_time, 0 AS del_flag UNION ALL SELECT 'OA000000000000000000000000000102', '工作流角色', 'OA000000000000000000000000000001', 'C', 'roles', '/oa-approval/roles/index', 'oa:roles:list', 1, '1', '1', 'zkxw', 2, NULL, NULL, '', NOW(), NULL, NOW(), 0 UNION ALL SELECT 'OA000000000000000000000000000103', '发起审批', 'OA000000000000000000000000000001', 'C', 'start', '/oa-approval/start/index', 'oa:start', 1, '1', '1', 'zkxw', 3, NULL, NULL, '', NOW(), NULL, NOW(), 0 UNION ALL SELECT 'OA000000000000000000000000000104', '待办中心', 'OA000000000000000000000000000001', 'C', 'pending', '/oa-approval/pending/index', 'oa:pending', 1, '1', '1', 'zkxw', 4, NULL, NULL, '', NOW(), NULL, NOW(), 0 UNION ALL SELECT 'OA000000000000000000000000000105', '已办中心', 'OA000000000000000000000000000001', 'C', 'done', '/oa-approval/done/index', 'oa:done', 1, '1', '1', 'zkxw', 5, NULL, NULL, '', NOW(), NULL, NOW(), 0 UNION ALL SELECT 'OA000000000000000000000000000106', '我发起的', 'OA000000000000000000000000000001', 'C', 'mine', '/oa-approval/mine/index', 'oa:mine', 1, '1', '1', 'zkxw', 6, NULL, NULL, '', NOW(), NULL, NOW(), 0 UNION ALL SELECT 'OA000000000000000000000000000107', '抄送我的', 'OA000000000000000000000000000001', 'C', 'cc', '/oa-approval/cc/index', 'oa:cc', 1, '1', '1', 'zkxw', 7, NULL, NULL, '', NOW(), NULL, NOW(), 0 UNION ALL SELECT 'OA000000000000000000000000000201', '审批设计', 'OA000000000000000000000000000001', 'C', 'designer/:id', '/oa-approval/designer/index', 'oa:designer', 1, '0', '1', 'zkxw', 8, '隐藏页:从审批管理进入', NULL, '', NOW(), NULL, NOW(), 0 UNION ALL SELECT 'OA000000000000000000000000000202', '审批详情', 'OA000000000000000000000000000001', 'C', 'instances/:id', '/oa-approval/instances/detail', 'oa:instance:detail', 1, '0', '1', 'zkxw', 9, '隐藏页:从任务/列表进入', NULL, '', NOW(), NULL, NOW(), 0 ) AS t WHERE NOT EXISTS ( SELECT 1 FROM `sys_menu` m WHERE m.`id` = t.id ); -- 幂等:已存在则同步字段并取消伪删除 UPDATE `sys_menu` m JOIN ( SELECT 'OA000000000000000000000000000101' AS id, '审批管理' AS menu_name, 'apps' AS path, '/oa-approval/apps/index' AS component, 'oa:apps:list' AS perms, '1' AS visible, 1 AS order_num UNION ALL SELECT 'OA000000000000000000000000000102', '工作流角色', 'roles', '/oa-approval/roles/index', 'oa:roles:list', '1', 2 UNION ALL SELECT 'OA000000000000000000000000000103', '发起审批', 'start', '/oa-approval/start/index', 'oa:start', '1', 3 UNION ALL SELECT 'OA000000000000000000000000000104', '待办中心', 'pending', '/oa-approval/pending/index', 'oa:pending', '1', 4 UNION ALL SELECT 'OA000000000000000000000000000105', '已办中心', 'done', '/oa-approval/done/index', 'oa:done', '1', 5 UNION ALL SELECT 'OA000000000000000000000000000106', '我发起的', 'mine', '/oa-approval/mine/index', 'oa:mine', '1', 6 UNION ALL SELECT 'OA000000000000000000000000000107', '抄送我的', 'cc', '/oa-approval/cc/index', 'oa:cc', '1', 7 UNION ALL SELECT 'OA000000000000000000000000000201', '审批设计', 'designer/:id', '/oa-approval/designer/index', 'oa:designer', '0', 8 UNION ALL SELECT 'OA000000000000000000000000000202', '审批详情', 'instances/:id', '/oa-approval/instances/detail', 'oa:instance:detail', '0', 9 ) s ON m.id = s.id SET m.`del_flag` = 0, m.`parent_id` = 'OA000000000000000000000000000001', m.`menu_type` = 'C', m.`menu_name` = s.menu_name, m.`path` = s.path, m.`component` = s.component, m.`perms` = s.perms, m.`visible` = s.visible, m.`status` = '1', m.`order_num` = s.order_num, m.`update_time` = NOW();