20260625_pl_plan_archive_menu.sql 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. -- =============================================================================
  2. -- 运输计划归档 · 菜单与按钮权限
  3. -- 执行库:shanxia2.0 门户库(与 web-admin 同库)
  4. -- 说明:可重复执行(ON DUPLICATE KEY UPDATE / NOT EXISTS)
  5. -- 执行后:重新登录或刷新菜单缓存,侧栏「运输管理」下出现「运输计划归档」
  6. -- =============================================================================
  7. SET NAMES utf8mb4;
  8. -- -----------------------------------------------------------------------------
  9. -- 1. 菜单(C)+ 按钮权限(F)
  10. -- 路由:/#/pl/plan-archive
  11. -- -----------------------------------------------------------------------------
  12. INSERT INTO `sys_menu` (
  13. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  14. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  15. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  16. ) VALUES
  17. (
  18. 'PL_PLAN_ARCHIVE', '运输计划归档', 'PL_MENU_ROOT', 'C',
  19. 'plan-archive', 'pl/plan-archive/index', 'pl:plan-archive:list',
  20. 1, '1', '1', 'shanxia2.0', 11, NULL,
  21. 'system', '', NOW(), NULL, NOW(), 0
  22. ),
  23. (
  24. 'PL_PLAN_ARCHIVE_Q', '查询', 'PL_PLAN_ARCHIVE', 'F',
  25. '', '', 'pl:plan-archive:query',
  26. 1, '1', '1', 'shanxia2.0', 1, NULL,
  27. 'system', '', NOW(), NULL, NOW(), 0
  28. ),
  29. (
  30. 'PL_PLAN_ARCHIVE_E', '编辑', 'PL_PLAN_ARCHIVE', 'F',
  31. '', '', 'pl:plan-archive:edit',
  32. 1, '1', '1', 'shanxia2.0', 2, NULL,
  33. 'system', '', NOW(), NULL, NOW(), 0
  34. ),
  35. (
  36. 'PL_PLAN_ARCHIVE_A', '归档', 'PL_PLAN_ARCHIVE', 'F',
  37. '', '', 'pl:plan-archive:archive',
  38. 1, '1', '1', 'shanxia2.0', 3, NULL,
  39. 'system', '', NOW(), NULL, NOW(), 0
  40. )
  41. ON DUPLICATE KEY UPDATE
  42. `menu_name` = VALUES(`menu_name`),
  43. `parent_id` = VALUES(`parent_id`),
  44. `menu_type` = VALUES(`menu_type`),
  45. `path` = VALUES(`path`),
  46. `component` = VALUES(`component`),
  47. `perms` = VALUES(`perms`),
  48. `visible` = VALUES(`visible`),
  49. `status` = VALUES(`status`),
  50. `order_num` = VALUES(`order_num`),
  51. `update_time` = NOW(),
  52. `del_flag` = 0;
  53. -- -----------------------------------------------------------------------------
  54. -- 2. 调整「危化品证上传」排序,排在归档菜单之后
  55. -- -----------------------------------------------------------------------------
  56. UPDATE `sys_menu`
  57. SET `order_num` = 12, `update_time` = NOW()
  58. WHERE `id` = 'PL_PLAN_CERT'
  59. AND `del_flag` = 0
  60. AND (`order_num` IS NULL OR `order_num` <> 12);
  61. -- -----------------------------------------------------------------------------
  62. -- 3.(可选)角色授权:为已拥有「运输计划」菜单的角色,自动勾选归档菜单及按钮
  63. -- 若需手工在「系统管理 → 角色管理」里分配,可注释掉本节
  64. -- -----------------------------------------------------------------------------
  65. INSERT INTO `sys_role_menu` (
  66. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  67. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  68. )
  69. SELECT
  70. REPLACE(UUID(), '-', ''),
  71. rm.`role_id`,
  72. m.`menu_id`,
  73. rm.`tenant_no`,
  74. m.`order_num`,
  75. 'pl plan archive auto grant',
  76. 'system',
  77. '',
  78. NOW(),
  79. NULL,
  80. NOW(),
  81. 0
  82. FROM `sys_role_menu` rm
  83. INNER JOIN (
  84. SELECT 'PL_PLAN_ARCHIVE' AS menu_id, 11 AS order_num UNION ALL
  85. SELECT 'PL_PLAN_ARCHIVE_Q', 1 UNION ALL
  86. SELECT 'PL_PLAN_ARCHIVE_E', 2 UNION ALL
  87. SELECT 'PL_PLAN_ARCHIVE_A', 3
  88. ) m ON 1 = 1
  89. WHERE rm.`menu_id` = 'PL_PLAN'
  90. AND rm.`del_flag` = 0
  91. AND NOT EXISTS (
  92. SELECT 1
  93. FROM `sys_role_menu` x
  94. WHERE x.`role_id` = rm.`role_id`
  95. AND x.`menu_id` = m.`menu_id`
  96. AND x.`del_flag` = 0
  97. );
  98. -- -----------------------------------------------------------------------------
  99. -- 4. 校验(执行后可查看结果)
  100. -- -----------------------------------------------------------------------------
  101. SELECT `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `order_num`
  102. FROM `sys_menu`
  103. WHERE `id` IN ('PL_PLAN_ARCHIVE', 'PL_PLAN_ARCHIVE_Q', 'PL_PLAN_ARCHIVE_E', 'PL_PLAN_ARCHIVE_A')
  104. AND `del_flag` = 0
  105. ORDER BY `id`;