-- ===================================================================== -- 各业务菜单统一复用运维工单处置页面 dispose.vue -- -- 背景:燃气 / 排水 / 案件三个业务菜单原本各有一套重复实现的工单页面, -- 现统一指向 subSystem/pipeNetwork/ops/workOrder/dispose.vue。 -- -- 业务口径:按菜单收窄为各自业务设备产生的工单,过滤链路统一为 -- work_order.device_id -> equipment_base.equipment_id -- equipment_base.equipment_type_id -> equipment_type.id -- equipment_type.parent_id = 各业务的父类别ID -- -- 父类别取值: -- 燃气 parent_id = '3' 菜单 燃气工单-工单管理 → dispose.vue -- 排水 parent_id = '2' 菜单 工单管理-排水工单 → dispose.vue -- 案件 parent_id = '4' 菜单 案件管理-工单处置管理 → dispose.vue -- 供水 parent_id = '1' 菜单 设备维修派单 → dispose.vue -- 供水 parent_id = '1' 菜单 设备维修记录 → index.vue(列表页) -- -- 该过滤由前端固定传 deviceTypeParentId、后端 WorkOrderPageDTO / -- WorkOrderServiceImpl#applyDeviceTypeScope 实现; -- 运维工单菜单不匹配任何业务口径,不传该参数,仍查全量。 -- -- 本脚本幂等,重复执行无副作用。执行前请备份数据! -- ===================================================================== -- 1. 燃气:工单管理 UPDATE sys_menu SET component = 'subSystem/pipeNetwork/ops/workOrder/dispose' WHERE component = 'subSystem/basic/BusinessWorkOrder'; -- 2. 排水:工单管理 - 排水工单 UPDATE sys_menu SET component = 'subSystem/pipeNetwork/ops/workOrder/dispose' WHERE component = 'subSystem/drainage/DrainageWorkOrder'; -- 3. 案件:案件管理 - 工单处置管理 -- 已核实 sys_menu 中实际值为 caseHandling 路径,不存在 subSystem/manholeCover/orderDisposal UPDATE sys_menu SET component = 'subSystem/pipeNetwork/ops/workOrder/dispose' WHERE component = 'subSystem/manholeCover/caseHandling/orderDisposal'; -- 4. 监测设备 - 设备维修派单:复用工单处置页 dispose.vue(parent_id = 1) -- 用 LIKE 匹配,兼容 component 实际值带 .vue 后缀或前缀写法不同的情况 UPDATE sys_menu SET component = 'subSystem/pipeNetwork/ops/workOrder/dispose' WHERE component LIKE '%waterSupply/device/maintain%' AND component NOT LIKE '%ops/workOrder%'; -- 5. 监测设备 - 设备维修记录:复用工单列表页 index.vue(parent_id = 1) -- 注意这里是 index.vue(列表页),不是 dispose.vue UPDATE sys_menu SET component = 'subSystem/pipeNetwork/ops/workOrder/index' WHERE component LIKE '%waterSupply/device/record%' AND component NOT LIKE '%ops/workOrder%'; -- 5.1 【诊断】若执行后 maintain 菜单仍未生效,先查它当前的真实 component / path: -- SELECT menu_id, menu_name, parent_id, path, component -- FROM sys_menu -- WHERE component LIKE '%maintain%' OR path LIKE '%maintain%' -- ORDER BY menu_id; -- 把查到的 path 值发出来,用于核对前端 MENU_DEVICE_TYPE_SCOPE 的 pathKey 是否能命中。 -- ===================================================================== -- 6. 校验:确认各菜单已更新 -- SELECT menu_id, menu_name, path, component FROM sys_menu -- WHERE component IN ('subSystem/pipeNetwork/ops/workOrder/dispose', -- 'subSystem/pipeNetwork/ops/workOrder/index'); -- -- 若上面查不到某业务菜单,说明其 component 与本脚本写法不一致, -- 请先执行下句确认实际值,再按实际路径调整上面的 UPDATE: -- SELECT menu_id, menu_name, path, component FROM sys_menu -- WHERE component LIKE '%DrainageWorkOrder%' -- OR component LIKE '%orderDisposal%' -- OR component LIKE '%BusinessWorkOrder%' -- OR component LIKE '%waterSupply/device/%'; -- -- 7. 说明 -- - 不修改 path 与 perms:原菜单的访问权限标识保持不变, -- 已分配的 sys_role_menu 授权无需调整。 -- - 路由判定:组件依据「路由 path 关键字 → 设备父类别」映射(前端常量 -- MENU_DEVICE_TYPE_SCOPE)判定业务来源,两个组件各有一份: -- -- dispose.vue(工单处置页): -- BusinessWorkOrder -> 3 燃气 -- DrainageWorkOrder -> 2 排水 -- orderDisposal -> 4 案件 -- maintain -> 1 设备维修派单 -- -- index.vue(工单列表页): -- record -> 1 设备维修记录 -- -- 若菜单 path 非上述值,需同步调整对应常量,否则会退化为查全量(不会报错但范围不对)。 -- 注意:运维自身菜单(pworkOrder/dispose、pworkOrder/index)不含上述关键字,仍查全量。 -- - 已无菜单引用、确认后可删除的旧页面: -- subSystem/basic/BusinessWorkOrder.vue(已删除) -- subSystem/drainage/DrainageWorkOrder.vue(已删除) -- subSystem/manholeCover/caseHandling/orderDisposal.vue(已删除) -- subSystem/waterSupply/device/maintain.vue(本次替换,暂保留) -- subSystem/waterSupply/device/record.vue(本次替换,暂保留) -- =====================================================================