Files
zkxw/docs/sql/patch_2026-07-15_oa_approval_sys_menu.sql
T
2026-07-15 16:20:48 +08:00

159 lines
7.4 KiB
SQL

-- =============================================================================
-- 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();