pms-front-react/scripts/sql/20260316_worklog_menu_init.sql

221 lines
3.4 KiB
MySQL
Raw Permalink Normal View History

2026-03-17 07:18:56 +00:00
-- 工作日志菜单与按钮补录
-- 目标:
-- 1. 确保 sys_menu 中存在工作日志页面菜单(/index
-- 2. 为工作日志页面补齐按钮权限项
-- 3. 所有插入都做不存在判断,避免重复
--
-- 对应前端逻辑:
-- - 页面路由:/index
-- - 页面组件component 包含 worklog 即可被前端识别为工作日志页
-- - 按钮权限:
-- business:work:hour:add
-- business:work:hour:edit
-- business:work:hour:remove
START TRANSACTION;
-- 1. 如果工作日志页面菜单不存在,则补一条页面菜单
INSERT INTO sys_menu (
menu_name,
parent_id,
order_num,
path,
component,
query,
is_frame,
is_cache,
menu_type,
visible,
status,
perms,
icon,
create_by,
create_time,
remark
)
SELECT
'工作日志',
0,
1,
'index',
'worklog/index',
'',
'1',
'0',
'C',
'0',
'0',
'business:work:hour:list',
'dashboard',
'codex',
NOW(),
'工作日志首页菜单'
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM sys_menu
WHERE menu_type IN ('M', 'C')
AND (
path IN ('index', '/index')
OR component LIKE '%worklog%'
)
);
-- 2. 定位工作日志页面菜单
SET @worklog_menu_id := (
SELECT menu_id
FROM sys_menu
WHERE menu_type IN ('M', 'C')
AND (
path IN ('index', '/index')
OR component LIKE '%worklog%'
)
ORDER BY
CASE
WHEN path IN ('index', '/index') THEN 0
ELSE 1
END,
menu_id
LIMIT 1
);
-- 3. 补录按钮:新增日志
INSERT INTO sys_menu (
menu_name,
parent_id,
order_num,
path,
component,
query,
is_frame,
is_cache,
menu_type,
visible,
status,
perms,
icon,
create_by,
create_time,
remark
)
SELECT
'新增日志',
@worklog_menu_id,
1,
'#',
'',
'',
'1',
'0',
'F',
'0',
'0',
'business:work:hour:add',
'#',
'codex',
NOW(),
'工作日志页按钮:添加日志'
FROM DUAL
WHERE @worklog_menu_id IS NOT NULL
AND NOT EXISTS (
SELECT 1
FROM sys_menu
WHERE parent_id = @worklog_menu_id
AND menu_type = 'F'
AND perms = 'business:work:hour:add'
);
-- 4. 补录按钮:编辑日志
INSERT INTO sys_menu (
menu_name,
parent_id,
order_num,
path,
component,
query,
is_frame,
is_cache,
menu_type,
visible,
status,
perms,
icon,
create_by,
create_time,
remark
)
SELECT
'编辑日志',
@worklog_menu_id,
2,
'#',
'',
'',
'1',
'0',
'F',
'0',
'0',
'business:work:hour:edit',
'#',
'codex',
NOW(),
'工作日志页按钮:编辑/确认'
FROM DUAL
WHERE @worklog_menu_id IS NOT NULL
AND NOT EXISTS (
SELECT 1
FROM sys_menu
WHERE parent_id = @worklog_menu_id
AND menu_type = 'F'
AND perms = 'business:work:hour:edit'
);
-- 5. 补录按钮:删除日志
INSERT INTO sys_menu (
menu_name,
parent_id,
order_num,
path,
component,
query,
is_frame,
is_cache,
menu_type,
visible,
status,
perms,
icon,
create_by,
create_time,
remark
)
SELECT
'删除日志',
@worklog_menu_id,
3,
'#',
'',
'',
'1',
'0',
'F',
'0',
'0',
'business:work:hour:remove',
'#',
'codex',
NOW(),
'工作日志页按钮:删除/取消'
FROM DUAL
WHERE @worklog_menu_id IS NOT NULL
AND NOT EXISTS (
SELECT 1
FROM sys_menu
WHERE parent_id = @worklog_menu_id
AND menu_type = 'F'
AND perms = 'business:work:hour:remove'
);
COMMIT;