✨ 异常处置新增编辑功能

运管员可订正已上报的异常内容:异常类型、异常原因、上报说明、现场照片。
车牌、项目、承运商、配载单号由上报时从运单回填,不开放编辑,避免与运单脱钩。

编辑不改动处置状态。状态只能经跟进与完成流转,因为运单详情、运单列表、
首页计数与待办四处都以 disposal_status IN (pending, processing) 判定未完成,
允许编辑改状态会让已结案的异常重新长出来,而那四处判定无从知晓。

每次编辑按字段逐项比对生成变更说明,写入一条跟进记录留痕。
变更说明会内嵌修改前后的原文,长文本字段一次编辑就可能超过跟进内容的
varchar(500) 上限,故按 500 截断。

Permission 表达式用 hasMenu('exception_disposal_edit'):
@PreAuth 的值由 SpEL 求值,root object 是 AuthFun,
写成裸字符串会被当作属性访问而在请求时抛错。
This commit is contained in:
2026-10-05 00:54:08 +08:00
parent e3d860668b
commit 8d35abd23e
7 changed files with 330 additions and 0 deletions
@@ -0,0 +1,33 @@
-- 异常处置新增编辑权限码
-- 日期:2026-10-10
INSERT INTO `blade_menu`
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
VALUES
(2090000000000002006,2090000000000002001,'exception_disposal_edit','编辑','exception_disposal_edit','','',5,2,0,1,NULL,'',0)
ON DUPLICATE KEY UPDATE
`parent_id`=VALUES(`parent_id`),
`name`=VALUES(`name`),
`path`=VALUES(`path`),
`sort`=VALUES(`sort`),
`is_deleted`=0;
-- 授权给超级管理员角色。
-- 不能按「持有 exception_disposal 菜单的角色」批量授权:司机角色同样持有该菜单,
-- 会被一并授予编辑权——而编辑是运管员才有的操作。
-- 注意:运管角色当前并未持有 exception_disposal 菜单,故此处不涉及它;
-- 若日后把异常处置开放给运管,需另行授予本编辑码。
INSERT INTO `blade_role_menu` (`id`, `menu_id`, `role_id`)
SELECT 2090000000000002006 + (r.`id` % 1000), 2090000000000002006, r.`id`
FROM `blade_role` r
WHERE r.`role_alias` = 'administrator'
AND NOT EXISTS (
SELECT 1 FROM `blade_role_menu` x
WHERE x.`menu_id` = 2090000000000002006 AND x.`role_id` = r.`id`
);
-- 幂等收口:本编辑码只应挂在超级管理员上,其余角色一律收回。
-- 上面的 SELECT 是按授权规则下发,这条是按同一规则回收,二者合起来可重复执行。
DELETE FROM `blade_role_menu`
WHERE `menu_id` = 2090000000000002006
AND `role_id` NOT IN (SELECT `id` FROM `blade_role` WHERE `role_alias` = 'administrator');