-- ============================================================ -- 排班模板 —— 平台端菜单(yz_system_menu) -- -- 挂载位置:平台端「基础设置」(path = /basicSettings)下,与「字典管理」并列。 -- 基础设置 -- └─ 排班模板(页面,/basicSettings/schedTemplate) -- -- 说明: -- 1. views = [1]:只在平台端出现;租户端通过 /backend/oa/scheduling/templates -- 读取模板(不在租户菜单里暴露模板管理入口)。 -- 2. 平台端菜单接口(/platform/menu/:id)按 views 过滤,不按角色 rights 过滤, -- 因此本脚本无需追加角色授权。 -- 3. 幂等:按 path 判重,重复执行不会产生重复菜单。 -- 4. 本脚本不使用会话变量 / PREPARE,可整段执行也可逐条执行。 -- ============================================================ -- 1) 有「基础设置」目录时,挂到该目录下 INSERT INTO yz_system_menu (pid, title, path, component_path, icon, sort, status, is_visible, views, type, creater, remark) SELECT (SELECT id FROM (SELECT id FROM yz_system_menu WHERE path = '/basicSettings' AND delete_time IS NULL ORDER BY id LIMIT 1) b), '排班模板', '/basicSettings/schedTemplate', '/system/schedTemplate/index.vue', 'Calendar', 90, 1, 1, '[1]', 2, 'system', '全局排班模板:预置双休/单休/大小周/月休/三班倒/做一休一,租户调用后存入自己的方案' FROM DUAL WHERE EXISTS (SELECT 1 FROM (SELECT id FROM yz_system_menu WHERE path = '/basicSettings' AND delete_time IS NULL) b) AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM yz_system_menu WHERE path = '/basicSettings/schedTemplate' AND delete_time IS NULL) e); -- 2) 未找到「基础设置」目录时,退化为平台端顶级菜单(pid=0) INSERT INTO yz_system_menu (pid, title, path, component_path, icon, sort, status, is_visible, views, type, creater, remark) SELECT 0, '排班模板', '/basicSettings/schedTemplate', '/system/schedTemplate/index.vue', 'Calendar', 92, 1, 1, '[1]', 2, 'system', '全局排班模板:预置双休/单休/大小周/月休/三班倒/做一休一,租户调用后存入自己的方案' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM yz_system_menu WHERE path = '/basicSettings' AND delete_time IS NULL) b) AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM yz_system_menu WHERE path = '/basicSettings/schedTemplate' AND delete_time IS NULL) e); -- 结果校验:应返回 1 行 SELECT id, pid, title, path, component_path, views, type, is_visible, status FROM yz_system_menu WHERE delete_time IS NULL AND path = '/basicSettings/schedTemplate';