-- 合并 CRM「报价单/合同审批人设置」为系统管理下「报价、合同审批人设置」 -- 1) 插入新菜单 SYS_APPROVER_SETTING -- 2) 软隐藏旧 CRM 菜单 CRM…0015 / CRM…0026 -- 3) 曾拥有任一旧菜单的角色,自动挂上新菜单(幂等) -- 注意:web-admin 开发环境默认 VITE_ACCESS_MODE=frontend,侧栏还依赖 -- web-admin/src/router/modules/sqxp.ts 中新路由与旧路由 isHide=true。 -- 新菜单:系统管理 → 报价、合同审批人设置 INSERT INTO `sys_menu` ( `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` ) VALUES ( 'SYS_APPROVER_SETTING', '报价、合同审批人设置', 'SYSM000000000000000000000000000001', 'C', 'approver-setting', '/system/approver-setting/index', 'system:approverSetting', 1, '1', '1', 'shanxia2.0', 9, '租户级默认报价/合同审批人(合并页)', 'system', '', NOW(), NULL, NOW(), 0 ) ON DUPLICATE KEY UPDATE `menu_name` = VALUES(`menu_name`), `parent_id` = VALUES(`parent_id`), `path` = VALUES(`path`), `component` = VALUES(`component`), `perms` = VALUES(`perms`), `visible` = '1', `status` = '1', `order_num` = VALUES(`order_num`), `remark` = VALUES(`remark`), `del_flag` = 0, `update_time` = NOW(); -- 软隐藏旧 CRM 菜单 UPDATE `sys_menu` SET `visible` = '0', `update_time` = NOW() WHERE `id` IN ( 'CRM3000000000000000000000000015', 'CRM3000000000000000000000000026' ) AND `del_flag` = 0 AND `visible` <> '0'; -- 角色菜单迁移:拥有任一旧菜单 → 挂上新菜单 INSERT INTO `sys_role_menu` ( `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` ) SELECT UPPER(REPLACE(UUID(), '-', '')), t.`role_id`, 'SYS_APPROVER_SETTING', t.`tenant_no`, 0, 'migrated from quote/contract approver setting menus', 'system', '', NOW(), NULL, NOW(), 0 FROM ( SELECT DISTINCT `role_id`, `tenant_no` FROM `sys_role_menu` WHERE `menu_id` IN ( 'CRM3000000000000000000000000015', 'CRM3000000000000000000000000026' ) AND `del_flag` = 0 ) t WHERE NOT EXISTS ( SELECT 1 FROM `sys_role_menu` x WHERE x.`role_id` = t.`role_id` AND x.`menu_id` = 'SYS_APPROVER_SETTING' AND x.`del_flag` = 0 );