-- 作废审核独立菜单 + 审批角色授权(PostgreSQL / Kingbase) -- 执行前需已存在「接报案中心」目录及作废相关角色 -- 1. 独立二级菜单「作废审核」 INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id, create_time, update_time) SELECT '作废审核', 2, p.menu_id, 6, '/business/alarm/void-audit-list', '/business/alarm/void-audit-list.vue', false, false, true, false, 1, 'AuditOutlined', false, 1, NOW(), NOW() FROM t_menu p WHERE p.menu_name = '接报案中心' AND p.menu_type = 1 AND p.deleted_flag = 0 AND NOT EXISTS ( SELECT 1 FROM t_menu x WHERE x.path = '/business/alarm/void-audit-list' AND x.deleted_flag = 0 ); -- 2. 功能点 INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id, create_time, update_time) SELECT '查询', 3, m.menu_id, false, false, true, false, 1, 'alarm:void:query', 'alarm:void:query', m.menu_id, false, 1, NOW(), NOW() FROM t_menu m WHERE m.menu_name = '作废审核' AND m.path = '/business/alarm/void-audit-list' AND m.deleted_flag = 0 AND NOT EXISTS (SELECT 1 FROM t_menu x WHERE x.web_perms = 'alarm:void:query' AND x.deleted_flag = 0); INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id, create_time, update_time) SELECT '作废审核', 3, m.menu_id, false, false, true, false, 1, 'alarm:void:audit', 'alarm:void:audit', m.menu_id, false, 1, NOW(), NOW() FROM t_menu m WHERE m.menu_name = '作废审核' AND m.path = '/business/alarm/void-audit-list' AND m.deleted_flag = 0 AND NOT EXISTS (SELECT 1 FROM t_menu x WHERE x.web_perms = 'alarm:void:audit' AND x.parent_id = m.menu_id AND x.menu_type = 3 AND x.deleted_flag = 0); INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id, create_time, update_time) SELECT '查看详情', 3, m.menu_id, false, false, true, false, 1, 'alarm:detail', 'alarm:detail', m.menu_id, false, 1, NOW(), NOW() FROM t_menu m WHERE m.menu_name = '作废审核' AND m.path = '/business/alarm/void-audit-list' AND m.deleted_flag = 0 AND NOT EXISTS ( SELECT 1 FROM t_menu x WHERE x.web_perms = 'alarm:detail' AND x.parent_id = m.menu_id AND x.deleted_flag = 0 ); -- 3. 接报案大厅保留「发起作废」功能点(若尚未创建) INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id, create_time, update_time) SELECT '发起作废', 3, m.menu_id, false, false, true, false, 1, 'alarm:void:apply', 'alarm:void:apply', m.menu_id, false, 1, NOW(), NOW() FROM t_menu m WHERE m.menu_name = '接报案大厅' AND m.deleted_flag = 0 AND NOT EXISTS (SELECT 1 FROM t_menu x WHERE x.web_perms = 'alarm:void:apply' AND x.deleted_flag = 0); -- 4. 移除挂在「审核监督」下的作废审批功能点(改为独立菜单) UPDATE t_menu SET deleted_flag = 1, update_time = NOW() WHERE web_perms = 'alarm:void:audit' AND menu_type = 3 AND parent_id IN (SELECT menu_id FROM t_menu WHERE menu_name = '审核监督' AND deleted_flag = 0); -- 5. 审批角色绑定菜单:市局主任、区县大队长、经侦管理员 -- 说明:超级管理员(admin 账号,administrator_flag=1)登录后自动拥有全部菜单,无需 role_menu 绑定 INSERT INTO t_role_menu (role_id, menu_id) SELECT r.role_id, m.menu_id FROM t_role r JOIN t_menu m ON m.deleted_flag = 0 WHERE r.role_code IN ('alarm_city_director', 'alarm_district_captain', 'JZ_ADMIN') AND ( m.path = '/business/alarm/void-audit-list' OR m.parent_id IN (SELECT menu_id FROM t_menu WHERE path = '/business/alarm/void-audit-list' AND deleted_flag = 0) ) AND NOT EXISTS ( SELECT 1 FROM t_role_menu rm WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id ); -- 6. 接警员角色绑定「发起作废」 INSERT INTO t_role_menu (role_id, menu_id) SELECT r.role_id, m.menu_id FROM t_role r JOIN t_menu m ON m.web_perms = 'alarm:void:apply' AND m.deleted_flag = 0 WHERE r.role_code IN ('alarm_city_receiver', 'alarm_district_receiver') AND NOT EXISTS ( SELECT 1 FROM t_role_menu rm WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id );