2026-10-16:PC 预警发布、列表与详情优化
目标
- 优化预警发布、待办、处置和综合查询四个 PC 页面。
- 发布草稿时选择处置人和核验人,发布人默认草稿创建人。
- 关联设备按
equipment_warning_type 中当前预警类型对应的设备类型过滤。
- 统一预警详情的处置时间、时间轴和附件展示。
结论与变更
LRelease.vue 的新增/编辑表单移除发布人、处置人、核验人,将关联设备和内容描述移动到类型/级别后;发布操作新增处置人、核验人选择弹窗,并同时提交两个账号。
- 新增
/warning/config/equipment-type-ids,通过 warning_type.warning_code 和 equipment_warning_type.warning_type_id 返回允许的设备类型;设备分页接口支持设备类型集合过滤,保存草稿时后端再次校验设备与预警类型的关系。
- 草稿创建时将发布人初始化为创建人,发布时仍以
create_by 为准,兼容历史数据时回退当前发布人。
- 四个主列表按要求移除序号/权属单位列并增加预警内容;待办查询移除预警专项、权属单位、发布人、处置人;综合查询表格使用内容列填充可用宽度。
- 新增共享
WarningDisposalTimeline.vue,参照工单详情按日期倒序分组,展示时分节点、人员、动作、内容、原因和附件;共享附件改为文件类型卡片样式,保留受控预览/下载接口。
- 无数据库结构变更,前后端需要同步部署。
验证
node --test tests/warningAttachments.test.mjs tests/warningReviewAction.test.mjs:8 项通过。
- 6 个相关 Vue SFC 使用
@vue/compiler-sfc 完成脚本和模板编译检查。
mvn -pl pipe-network-service/zksy-admin -am -DskipTests compile:成功。
- 前后端
git diff --check:通过。
npm run build:prod:完成 1816 个模块转换后失败;既有 DisPlanEditing.vue 引用 xlsx,但当前依赖未安装(npm ls xlsx --depth=0 为空),与本次预警变更无关。
风险与后续
- 联调环境需确认各预警类型已在
equipment_warning_type 配置设备类型;未配置时设备选择器会明确提示且不能选择设备。
- 完整生产构建需先补齐项目既有
xlsx 依赖问题。
详情标题栏补充优化
- 四个预警详情抽屉将预警单号移入“预警详情”标题右侧,并将当前状态放到同一行右侧;详情字段区不再重复显示单号和状态。
- 清除 Element Plus 抽屉头部默认的大间距,头部与正文分别使用 10px、12px 的紧凑间距;有关联事项时同步去掉事项卡片顶部重复留白。
- 四个详情字段区将预警内容调整为第一行并跨两列展示。
- 相关列表的预警编号列统一加宽到 210px,避免常见长编号换行。
- 新增共享
WarningContentCell.vue,列表预警内容单行省略,点击后通过弹层查看可换行、可滚动的完整内容。
预警详情统一
- 新增公共
components/WarningDetailDrawer.vue 和 warningDetail.js,统一详情加载、字段兼容和布局;预警内容置顶,按基础信息、关联事项、关联报警、处置记录、督办记录、其他附件、电子存档分区展示。
- 发布、待办、处置、综合查询、关联管理、首页、今日预警、今日未处置、历史预警及管网预警共 10 个查看入口改用公共详情抽屉;待办通知已读等页面特有逻辑仍留在父页面。
- 报告上传和发布编辑继续使用详情数据,但统一改调
api/pipeNetwork/earlyWarning.js 的 getWarningFullDetailData;删除 yjfb.js 中重复的详情 API 封装和概览模块旧版详情抽屉。
- 后端删除未被仓内调用的简版
/warning/detail/{warningId} 及对应 Service 方法,以 /warning/detail/full/{warningId} 作为唯一详情接口;无数据库变更。
- 新增
tests/warningDetail.test.mjs,覆盖下划线/驼峰字段兼容、数值零和完整详情集合标准化。
统一详情验证
- 11 项预警详情、附件和核验相关 Node 测试通过。
- 12 个受影响 Vue SFC 的模板与脚本编译通过,前后端
git diff --check 通过。
mvn -pl pipe-network-service/zksy-admin -am -DskipTests compile:成功。
npm run build:prod:相关代码完成 1823 个模块转换,最终仍因既有 DisPlanEditing.vue 无法解析本地 xlsx 依赖而失败,与本次变更无关。
- Vite 开发服务
http://localhost:5173/ 返回 200,无热更新错误。
处置记录图片预览补充
- 统一预警详情的处置时间轴改为与工单详情一致的图片交互:图片附件显示 50×50 缩略图,点击后查看大图,同一条处置记录的多张图片可在预览器中切换。
- 缩略图继续通过受控附件预览接口读取,不暴露对象存储地址;非图片附件仍保留原文件卡片、预览和下载操作,“其他附件”区域维持原布局。
- 图片 Blob URL 在附件变化和组件销毁时主动释放;加载失败时在缩略图位置展示明确状态。
- 11 项预警附件、详情和核验测试通过,
WarningAttachments.vue、WarningDisposalTimeline.vue 模板与脚本编译通过,前端 git diff --check 通过;Vite 热更新无组件编译错误,本地仅有后端 8301 未启动造成的既有 SSE 代理失败。
处置记录人员昵称补充
- 处置记录查询关联
app_user.sys_user,新增 disposal_user_name 返回昵称;昵称为空或历史账号已无法匹配时回退 warning_disposal.disposal_user。
- 公共预警详情时间轴优先展示昵称字段,数据库仍保存登录账号,流程人员校验、统计和历史审计语义不变。
- 管理后端 Maven 编译、公共时间轴 Vue 编译及前后端
git diff --check 均通过,Vite 热更新无新增错误。
详情入口文案统一
- 预警发布、待办、今日预警、今日未处置和历史预警列表中原“查看”或“查看详情”按钮统一改为“详情”,与预警处置、综合查询、首页和管网预警入口一致。
- 关联管理保留“查看预警”和“报警详情”,避免同一操作列中两个不同详情对象产生歧义。
- 5 个受影响 Vue SFC 编译通过,预警相关页面已无“查看详情”或单独“查看”的详情按钮,
git diff --check 和 Vite 热更新检查通过。
新增预警设备类型来源调整
- 新增/编辑预警的关联设备选择器左栏直接使用
/equipmentType(equipment_type)接口返回的 id、typeName,不再由前端推导并展示设备根大类。
- 左栏接口类型与当前预警类型在
equipment_warning_type 中的关联 ID 取交集,只展示实际允许的具体设备类型;点击类型后通过 equipmentTypeId 精确筛选,选择“全部类型”时仍通过 equipmentTypeIds 限制在允许范围内。
LRelease.vue 模板与脚本编译、11 项预警测试及 git diff --check 通过,Vite 热更新无错误。
两端发布人员与待办闭环
- 目标:PC/移动端统一按设备所属公司及角色权限筛选处置人、核验人;核验人仅在当前账户具备 audit 权限且属于合格候选集合时默认当前账户,仍可改选其他人。
- 后端
WarningParticipantService 按关联设备的直接父类型与部门自身/祖先公司匹配候选人员,处置 handle、核验 audit 分开;权限过滤在分页前执行,发布再次校验人员资格。新增 WarningAccessService/WarningAccessScope,统一管理、详情、归档、流程操作及移动端数据范围;公司范围不对管理员豁免。
EarlyWarningMapper.xml 复用可见性/待办 SQL:公司范围内有 publish 权限可处理所有 DRAFT,不再要求系统自动创建;待办按权限、指定人员与状态计算,不依赖待办记录;发布时间为空时用创建时间过滤。发布人保持创建人。
- PC
LRelease.vue 使用 warningId/role 查询候选部门和人员;新增 components/WarningPublishAction.vue,接入 WarningWorkflowActions.vue,支持草稿直接发布、远程搜索、合格当前账户默认及异步防覆盖。LwarningDisp.vue 保留服务端 availableActions。
- 移动端
WarningActionDrawer.vue、warning-detail.vue、services/warnings.ts 使用相同候选规则;选择器增加占位项,允许选第一个实际人员;操作成功增加版本标记,待办/管理列表返回时仅按预警变更定向刷新,普通 onShow 不重复请求。
- 验证:后端 MobileControllerMappingTest、WarningParticipantServiceTest、WarningScopeMapperTest 合计 15 项通过;PC
node --test tests/warning*.test.mjs 15 项通过,npm run build:prod 成功(此前 xlsx 构建问题当前已不复现);移动端类型检查、H5 构建及 2 项抽屉行为测试通过。三仓 git diff --check 通过。
- 风险/后续:尚未进行真实 Kingbase 与登录态端到端联调,需同步部署 PC、移动端及后端;候选权限依赖实际角色授权与部门/设备关联数据。无新增数据库结构迁移,保留此前已有修改。
工单与预警统一选人及共享设备例外
- 目标/结论:工单选人与预警对齐,设备直接父类型 1/2/3 对应部门自身或祖先 101/102/103;工单没有设备或两类业务父类型为 4 时不按候选部门过滤,仅要求用户启用、未删除且具备角色对应权限。公司外或无部门合格用户可选,关联损坏不作为无设备放宽。
- 后端
WorkOrderServiceImpl、SysUserMapper 新增业务候选查询,工单 handler/reviewer 分别要求 process/audit 权限;候选 API 携带 orderId/type,提交派单再次校验。WarningParticipantMapper 父类型 4 不限制部门。工单派单后按指定责任人/核验人与状态办理;EarlyWarningMapper 为共享设备指定人员增加可见性例外,保证公司外候选能够办理,不扩大其他预警和草稿范围。
- PC
ops/workOrder/dispose.vue 与 api/pipeNetwork/ops/workOrder.js 携带工单及角色查询部门/人员,合格当前账户才默认核验人,异步结果不覆盖改选或新工单。移动端 services/workorders.ts、workorder-detail.vue 同步参数,ActionFormDrawer.vue 使用核验人统一文案;预警空候选提示兼容共享设备。
- 验证:后端五类回归合计 83 项通过(64 工单、8 Controller、6 预警人员、3 预警范围、2 Mapper SQL);PC 工单/预警/状态行为测试 10 项、移动端预警抽屉 2 项通过。PC 生产构建、移动端类型检查及 H5 构建通过,三仓 diff 空白检查通过。新增回归覆盖无设备/父类 4、常规公司范围、角色权限、提交复核和公司外人员后续办理。
- 风险/后续:无结构迁移;工单候选接口新增必填业务参数,需要后端、PC、移动端同步部署。尚未进行真实 Kingbase 与登录态端到端联调,保留已有修改。
两端详情内容优先与处置人员分区
- 目标/结论:预警内容放进“预警信息”第一行,人员区域统一为“处置相关人员”。工单详情顺序改为故障信息、设备信息、处置相关人员,故障描述独占首行并保留换行,人员区单独展示处置人、核验人;工单产品文案将责任人统一称为处置人。
- PC 修改共享
WarningDetailDrawer.vue,拆出设备与人员分区,所有预警详情入口同步;warningDetail.js 兼容人员昵称的驼峰/下划线字段。工单 dispose.vue 重排详情、修改派单及提示,工单 index/list、供水旧工单页和报警关联工单同步改名。
- 移动端
warning-detail.vue、workorder-detail.vue 同步内容与分区顺序,ActionFormDrawer.vue 和报警关联工单同步改名,services/workorders.ts 增加 verifyUserName 类型。
- 后端
WorkOrderVO 新增 verifyUserName,WorkOrderServiceImpl 将处置人与核验人 ID 合并批量查询,昵称优先回填;派单及身份校验提示、新派单日志同步使用处置人。接口原有 ID 字段及选人权限不变,历史存储日志不改写。
- 验证:新增工单详情两人昵称单批回填回归,工单 Service 65 项通过;PC 相关行为 10 项、移动端 2 项通过;PC 生产构建、移动端类型检查/H5 构建通过,最后追加的关联工单文案变更通过 SFC 编译。三仓 diff 空白检查通过。
- 风险/后续:本次无数据库迁移;需部署后端新增字段以展示核验人姓名,真实登录页面与设备数据尚未端到端验收。保留三仓已有修改。
详情描述字体统一
- 按用户要求,PC 与移动端故障描述、预警内容改为普通字重;移动端去掉独立字号、颜色,PC 预警内容继承普通字段字号和颜色,保持首行位置及换行能力。
- 修改两端预警与工单详情四个组件;仅涉及 CSS,无接口或后端改动。
- 验证:四个 Vue 组件样式编译通过,两端 diff 空白检查通过;无需后端更新,真实页面待用户验收。