76 lines
4.7 KiB
SQL
76 lines
4.7 KiB
SQL
-- =============================================================================
|
||
-- 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 = '*:*:*');
|