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