-- 报价单/合同:审批视图拆为独立菜单 -- 1) 插入「报价单审批」「合同审批」 -- 2) 调整 CRM 侧栏 order_num,使审批紧挨对应管理菜单 -- 3) 曾拥有 list 菜单的角色,幂等挂上 approve(权限仍可在角色管理中单独收回) -- 注意:web-admin 开发环境默认 VITE_ACCESS_MODE=frontend,侧栏还依赖 -- web-admin/src/router/modules/sqxp.ts 中的新路由。 -- 报价单审批(紧挨报价单管理) 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 ( 'CRM3000000000000000000000000016', '报价单审批', 'CRM00000000000000000000000000001', 'C', 'quote-approval', '/crm/quote/approval/index', 'crm:quote:approve', 1, '1', '1', 'shanxia2.0', 6, '报价单待审批/已审批独立入口', '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(); -- 合同审批(紧挨合同管理;合同管理 order_num 同步调整为 7) 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 ( 'CRM3000000000000000000000000021', '合同审批', 'CRM00000000000000000000000000001', 'C', 'contract-approval', '/crm/contract/approval/index', 'crm:contract:approve', 1, '1', '1', 'shanxia2.0', 8, '合同待审批/已审批独立入口', '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(); -- 侧栏顺序:报价管理 5、报价审批 6、合同管理 7、合同审批 8、调价函 9、客户 10、主体危化品 11 UPDATE `sys_menu` SET `order_num` = 5, `update_time` = NOW() WHERE `id` = 'CRM3000000000000000000000000010' AND `del_flag` = 0; UPDATE `sys_menu` SET `order_num` = 7, `update_time` = NOW() WHERE `id` = 'CRM3000000000000000000000000020' AND `del_flag` = 0; UPDATE `sys_menu` SET `order_num` = 9, `update_time` = NOW() WHERE `id` = 'CRM3000000000000000000000000030' AND `del_flag` = 0; UPDATE `sys_menu` SET `order_num` = 10, `update_time` = NOW() WHERE `id` = 'CRM1000000000000000000000000002' AND `del_flag` = 0; UPDATE `sys_menu` SET `order_num` = 11, `update_time` = NOW() WHERE `id` = 'CRM3000000000000000000000000040' AND `del_flag` = 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 CONCAT('RMQ16_', UPPER(MD5(CONCAT(t.`role_id`, '|CRM3000000000000000000000000016')))), t.`role_id`, 'CRM3000000000000000000000000016', t.`tenant_no`, 0, 'migrated from crm:quote:list for quote approval menu', 'system', '', NOW(), NULL, NOW(), 0 FROM ( SELECT DISTINCT `role_id`, `tenant_no` FROM `sys_role_menu` WHERE `menu_id` = 'CRM3000000000000000000000000010' 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` = 'CRM3000000000000000000000000016' AND x.`del_flag` = 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 CONCAT('RMC21_', UPPER(MD5(CONCAT(t.`role_id`, '|CRM3000000000000000000000000021')))), t.`role_id`, 'CRM3000000000000000000000000021', t.`tenant_no`, 0, 'migrated from crm:contract:list for contract approval menu', 'system', '', NOW(), NULL, NOW(), 0 FROM ( SELECT DISTINCT `role_id`, `tenant_no` FROM `sys_role_menu` WHERE `menu_id` = 'CRM3000000000000000000000000020' 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` = 'CRM3000000000000000000000000021' AND x.`del_flag` = 0 );