2026-10-16.md 13 KB

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 空白检查通过;无需后端更新,真实页面待用户验收。