Files
jcgl-dev/dev/sql/apt_rev01/13_it2_frontend_menus.sql
T
zfjia 35751b4f00
IT-0 verify / verify (push) Waiting to run
1111
2026-11-11 18:30:31 +08:00

76 lines
4.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- IT-2 前端页面菜单种子(可重放):为公寓端 4 个已落地 Vue 页面登记 C 类型菜单。
-- 依据:公寓端/02 §2.5、16 第 9 章、04 表 4-6 / 4-8 / 4-17、13 表 13-12。
-- 前提:09_it1_permissions.sql 已建 3000 父目录;12_it2_permissions.sql 已建 F 权限点。
--
-- 口径:
-- 1) 只新增 menu_type='C' 的页面菜单(3101~3104),不改 3000 目录、不改任何 F 权限点,
-- 不动 59 张业务表;重复执行不产生重复数据。
-- 2) 路由由后端 getRouters 下发,component 走前端 loadView('@/views/' + component),
-- 与 system/user 等既有页面同构;不在 constantRoutes 里硬编码业务页面。
-- 3) 详情页 /apt/route-detail/index/:id、/apt/room-detail/index/:id 属前端
-- dynamicRoutes(hidden + permissions),不建 C 菜单、不出现在侧边栏。
-- 4) 仅登记「后端接口已就绪」的 4 个页面。叫乘、人员、设备、语音、入住、
-- 消费/充值/菜品等仅设计未实现,按 13 表 13-29「预埋不上线」不建菜单、不建页面;
-- IT-9~IT-11 账务域更是明文「不开接口、不建包、权限点置灰」。
-- 5) C 菜单 perms 留空:菜单可见性由 sys_role_menu 控制,按钮级权限由 F 权限点控制。
-- =============================================================================
-- 1. 页面菜单(C):父目录 3000(path='apt'),完整路由为 /apt/<path>
INSERT INTO sys_menu
(menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES
(3101, '交路管理', 3000, 1, 'route', 'apt/route/index', '', '', 1, 0, 'C', '0', '0',
'', 'guide', 'IT-2', NOW(),
'IT-2 / M1 交路列表页;对应 /apt/route/** 7 接口;按钮权限 3001/3007~3010'),
(3102, '房间管理', 3000, 2, 'room', 'apt/room/index', '', '', 1, 0, 'C', '0', '0',
'', 'build', 'IT-2', NOW(),
'IT-2 / M2 房间列表页;对应 /apt/room/** 5 接口;按钮权限 3003/3011~3014'),
(3103, '主数据版本', 3000, 3, 'version', 'apt/master/version/index', '', '', 1, 0, 'C', '0', '0',
'', 'clipboard', 'IT-2', NOW(),
'IT-2 版本只读台账;对应 /apt/master/versions;权限口径 apt:ops:health / apt:master:version'),
(3104, '连通性自检', 3000, 4, 'connectivity', 'apt/ops/connectivity/index', '', '', 1, 0, 'C', '0', '0',
'', 'monitor', 'IT-2', NOW(),
'IT-0~IT-1 自检页;对应 /apt/ops/connectivity/**;接口 @Anonymous + 开关 + 回环双限')
ON DUPLICATE KEY UPDATE menu_name = VALUES(menu_name), parent_id = VALUES(parent_id),
order_num = VALUES(order_num), path = VALUES(path), component = VALUES(component),
menu_type = VALUES(menu_type), visible = VALUES(visible), status = VALUES(status),
icon = VALUES(icon), remark = VALUES(remark);
-- 2. 关联超管角色(超管本身已有 *:*:*,此处为 getRouters 下发与审计留痕)
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, m.menu_id FROM sys_menu m
WHERE m.menu_id BETWEEN 3101 AND 3104
AND NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = 1 AND rm.menu_id = m.menu_id);
-- 3. 校验
SELECT '=== IT-2 前端页面菜单(应为 4 条 C)===' AS section;
SELECT menu_id, menu_name, parent_id, path, component, menu_type, visible, status, icon
FROM sys_menu WHERE menu_id BETWEEN 3101 AND 3104 ORDER BY menu_id;
SELECT '=== 组件路径(须与 RuoYi-Vue2-master/src/views/apt/** 一致)===' AS section;
SELECT menu_id, CONCAT('src/views/', component, '.vue') AS vue_file
FROM sys_menu WHERE menu_id BETWEEN 3101 AND 3104 ORDER BY menu_id;
SELECT '=== C 菜单是否全部关联超管(应为 4)===' AS section;
SELECT COUNT(*) AS admin_frontend_menu_bound
FROM sys_role_menu rm JOIN sys_menu m ON m.menu_id = rm.menu_id
WHERE rm.role_id = 1 AND m.menu_id BETWEEN 3101 AND 3104 AND m.menu_type = 'C';
SELECT '=== 公寓端菜单树构成(应 M=1 / C=4 / F=15)===' AS section;
SELECT menu_type, COUNT(*) AS cnt
FROM sys_menu
WHERE menu_id = 3000 OR parent_id = 3000
GROUP BY menu_type ORDER BY menu_type;
SELECT '=== 置灰权限点是否仍未关联角色(3004~3006 / 3014 应为 0)===' AS section;
SELECT COUNT(*) AS grey_bound
FROM sys_role_menu rm JOIN sys_menu m ON m.menu_id = rm.menu_id
WHERE m.menu_id IN (3004, 3005, 3006, 3014);
SELECT '=== M0 验收账号仍无公寓端权限点(应为 0)===' AS section;
SELECT COUNT(*) AS apt_permission_count
FROM sys_role_menu rm JOIN sys_menu m ON m.menu_id = rm.menu_id
WHERE rm.role_id = 300 AND (m.perms LIKE 'apt:%' OR m.perms LIKE 'duty:%' OR m.perms = '*:*:*');