2026-10-14.md 18 KB

2026-10-14:工单取消限制同步

目标与结论

  • 用户要求移动端与 PC 端仅允许待派单(0)、待接单(1)工单取消;已接单及后续状态不可取消。
  • 移动端详情按钮、PC 公共 canOperate.cancel 和后端 WorkOrderStatusEnum.canCancel 已统一收窄;既有取消权限与数据范围不变。
  • 后端取消继续使用原状态作为更新条件,更新失败时提示刷新并阻止写入取消成功日志。

文件变更

  • 移动端:src/pages/message/workorder-detail.vue。
  • PC:src/views/subSystem/pipeNetwork/ops/workOrder/js/workOrderDict.js、tests/waterSupplyWorkOrderStatusDict.test.mjs。
  • 后端:WorkOrderStatusEnum.java、WorkOrderServiceImpl.java、WorkOrderService.java、WorkOrderController.java、WorkOrderServiceImplTest.java。
  • 同步两仓生命周期文档、PC CONTEXT.md 和长期记忆中的取消规则。新要求取代历史任意中间态可取消口径。

验证

  • 后端工单专项测试 54 项通过,包含待派单/待接单可取消、其他状态拒绝、并发更新失败不写成功日志;相关模块编译通过。
  • 补齐既有测试中公司范围支持类重构后的模拟返回值,恢复两项验收测试。
  • PC 工单字典专项测试 3 项通过,npm run build:prod 通过。
  • 移动端 npm run type-check、npm run build:h5 通过。

风险与后续

  • 需同步部署 PC、移动端和管理后端,后端重启后接口限制生效;无需数据库迁移。
  • 未使用真实登录工单执行取消操作。

移动端“我的-登录日志”接口接入

  • 目标:参考 PC /monitor/logininfor/list 接入移动端登录日志,仅查询当前登录用户的记录。
  • 新增 GET /monitor/logininfor/mobile/list,支持 pageNum/pageSize,只要求已登录,不依赖 PC 日志管理权限;账号从服务端登录态获取,管理员也仅返回本人日志,不接受客户端指定查询账号。
  • 登录日志表按 user_name 记录账号,移动端使用必选的精确匹配,避免 PC 模糊查询误带相似账号;按登录时间、日志 ID 倒序展示,PC 原接口保持原行为。
  • 移动端移除示例数据,展示真实 IP、描述、登录时间;支持首次进入加载、下拉刷新、触底分页、空状态及失败重试,不使用页面再次显示自动请求或轮询。失败重试保留原刷新/分页操作。
  • 文件:移动端 src/services/login-logs.ts、src/pages/profile/login-log.vue、src/pages.json;后端 SysLogininforController、ISysLogininforService、SysLogininforServiceImpl、SysLogininforMapper 及 XML,新增服务和 Mapper 测试。
  • 验证:登录日志专项测试 5 项通过(当前账号、管理员隔离、无登录/空账号拒绝、精确 SQL 绑定与稳定倒序),管理后端及依赖模块编译通过;移动端类型检查和 H5 生产构建通过。
  • 风险与后续:需部署移动端并更新、重启管理后端,无数据库迁移或菜单授权变更;未使用真实登录态和数据库联调日志列表。

移动端照片按组切换与工单底部提示移除

  • 目标:工单详情、处理日志、巡检详情等照片预览支持同一组连续查看;移除工单详情“当前没有可执行操作”。
  • 新增公共 PhotoPreview.vue:H5 全屏展示上一张/下一张、当前张数、滑动切换,支持缩放和键盘左右键/Esc;非 H5 继续使用原生整组预览。点击时从选中的照片打开,首尾禁用对应切换按钮,单张不展示切换区。
  • 接入工单维修前/维修后、每条处理日志附件、巡检现场照片;各组独立,不跨组切换。公共 UploadPanel.vue 已选图片同样支持预览,删除按钮仍独立工作。
  • 工单详情移除无操作提示栏,仅有操作按钮时保留底部操作区域及对应留白。
  • 文件:移动端 src/components/PhotoPreview.vue、src/components/UploadPanel.vue、src/pages/message/workorder-detail.vue、src/pages/office/patrol-detail.vue。
  • 验证:类型检查、H5 和微信小程序构建通过;隔离 Chrome 浏览器使用拦截接口及本地测试图片验证选中项、前后切换、首尾禁用、分组隔离、单张、巡检触摸滑动、关闭/Esc、上传表单预览层级及删除、无操作工单底部提示与留白移除,无页面异常。
  • 风险与后续:仅需部署移动端,无后端或数据库变更;未以真实业务照片进行真机验收。

巡检列表整张卡片进入详情

  • 用户要求巡检列表点击整张任务卡片均可进入详情;已将跳转事件移到卡片容器,“查看详情”文字保留并通过事件冒泡共用跳转,避免重复导航。
  • 文件:移动端 src/pages/office/patrol.vue,无需后端变更。
  • 验证:类型检查、H5 构建通过;隔离浏览器使用拦截接口验证标题、字段、卡片空白与“查看详情”均进入对应任务,覆盖待巡检及已完成,每次点击仅一次详情请求。未进行真机验收。

移动端“日常-故障通知”列表、详情与审核

  • 目标:参考 PC src/views/subSystem/alarm/common/audit.vue 接入真实列表和审核,并按当前用户公司限制故障数据;列表右上角展示审核结果,详情底部弹出审核表单,“故障信息/处置全流程”使用左右页签。
  • 后端新增 /api/alarm/mobile 列表、/{id} 详情、/{id}/logs 历史、/{id}/reviews 审核和 /{id}/attachments 上传。读取仅要求登录,审核/上传保留 alarm:review:audit。公司范围在服务端由部门自身及祖先 101/102/103 映射为设备类型直接 parent_id=1/2/3;不含共享类型4、不递归类型树,管理员无范围豁免,rootTypeId 可选但只能收窄。
  • 有关联工单的报警通过 work_order.device_id 取设备;未转工单报警按 device_code 取设备,损坏工单关联不回退。所有入口使用同一公司范围,空范围不返回全系统数据;列表与 PC 审核页一致只展示未处理报警,包括三种审核结果。
  • 审核复用 PC 原事务、并发状态检查及附件票据:确认报警创建待派单工单,误报警仅写结论;均不直接修改监测/报警处理状态。结果必选,意见选填最多500字,JPG/JPEG/PNG图片最多5张、每张不超过10MB。报警附件沿用框架上传目录及 Redis 临时票据(绑定用户与报警,2小时过期),本次未改为工单 MinIO 附件机制。
  • 移动端列表支持等级、关键字、审核结果筛选,整卡点击、首次加载、下拉刷新、触底分页、空状态和失败重试。详情展示实际字段及关联工单,处置历史沿用 alarm_log 倒序日期分组;设备照片与每条历史照片分别成组预览。实际值0有效,无实际值时不展示实际值/阈值。
  • 底部审核抽屉支持上传、预览、删除、失败重试,上传/提交中锁定关闭和重复操作;只有未审核、未处理且有审核权限才显示审核按钮,提交成功刷新详情及历史。
  • 浏览器分页验证发现公共 H5 样式 overflow-x:hidden 将页面外壳变为独立纵向滚动容器,导致 onReachBottom 不触发;改为 overflow-x:clip 保持横向裁剪和页面纵向滚动。已验证连续三页23条及刷新回第一页,并回归工单/巡检/上传表单的照片预览。
  • 文件:移动端 src/services/alarms.ts、src/components/AlarmAuditDrawer.vue、src/pages/office/alarms.vue、src/pages/message/alarm-detail.vue、src/pages.json、src/styles/global.scss;后端 MobileAlarmQuery、MobileAlarmService、MobileAlarmController,扩展 AlarmOperationsService/Mapper/XML、AlarmReviewService/Mapper/XML 及相应测试,新增公司部门范围及移动端 Controller 测试;更新后端 CONTEXT 和 PC 记忆库。
  • 验证:后端专项及 PC 兼容回归共88项通过,管理后端与依赖编译通过;枚举替换后 Controller 5项复验通过。移动端类型检查、H5与微信小程序构建通过。隔离 Chrome 拦截接口验证三种标签、筛选(含 auditStatus=0)、整卡跳转、页签、分组照片、两种审核结果、必填检查、失败重试、附件格式/大小/数量/票据、权限与状态限制、分页和刷新,无页面异常。
  • 风险与后续:需要同步部署移动端并更新、重启管理后端,无数据库迁移。浏览器使用隔离模拟接口,未用真实登录态、KingbaseES数据或真机执行审核/上传;PC运行源码未改变,原入口行为由专项测试回归。

移动端基本资料性别改为单选

  • 用户要求“我的-基本资料”去掉保密选项,性别使用男、女两个 radio,不使用下拉。已在 src/pages/profile/basic.vue 改为横排原生单选,保留接口编码男0、女1。
  • 历史性别2或未设置时不默认指定性别,显示未选中;保存时提示选择性别,避免无意修改。请求中直接提交选中的0/1,加载或保存时禁用单选。
  • 验证:类型检查、H5与微信小程序构建通过;隔离 Chrome 拦截接口验证两项单选、回显与互斥、点击文字切换、保存提交0/1、旧保密值未选中且提示选择,无页面异常,未写入真实资料。
  • 风险与后续:仅需部署移动端,无后端、PC运行代码或数据库变更;未进行真机验收。

移动端专用 Controller 集中,共用 PC 业务 Service

  • 用户确认将移动端接口统一放入后端 zksy-admin/src/main/java/com/zksy/web/controller/mobile。已迁入 MobileWorkOrderController、MobileInspectTaskController、MobileEquipmentController、MobileAlarmController、MobileNoticeController、MobileLogininforController、MobileContactsController,旧 Controller 中对应的移动端专用方法移除。
  • URL、参数、响应、权限和数据范围保持兼容,移动端无需更改接口地址。登录、资料、通用上传及工单处置等 PC/移动端共用同一 URL 的接口继续保留原 Controller。
  • 撤销上一阶段单设的 MobileAlarmService,将查询、公司范围及审核分别归入现有 AlarmOperationsService、AlarmReviewScopeService、AlarmReviewService;移动端审核公开方法保留事务,与 PC 共用审核核心。
  • 更新后端 CONTEXT.md 并新增 ADR-0011。Maven 定向 clean package 通过:14 个测试类、140 项测试、0 失败/错误;覆盖两端同时注册无映射冲突、18 个移动端 URL、公共接口保留、参数绑定、数据范围和审核事务等。确认构建目录旧报警 Controller 和旧 MobileAlarmService 类已清除。
  • 仅需部署并重启管理后端,无前端或数据库变更;未操作真实工单/报警或执行生产部署,真实登录环境联调待更新后端后确认。

移动端接口 URL 统一为 /api/mobile

  • 用户选择 /api/mobile/ops/inspectTask 形式并要求执行。七类移动端 Controller 全部统一到 /api/mobile 前缀,工单/巡检继续保留 ops 业务域;故障通知为 /api/mobile/alarm,公告为 /api/mobile/notice,设备为 /api/mobile/equipment-base,本人登录日志为 /api/mobile/monitor/logininfor/list,通讯录为 /api/mobile/contacts。
  • 同步修改移动端 src/services 下 workorders、inspect-tasks、equipment、alarms(含审核图片上传)、notices、login-logs、contacts 七个文件,并更新后端映射测试、CONTEXT 和 ADR-0011。本决定取代上一节保留旧移动端 URL 的约定,旧地址直接迁移。
  • 工单处置、登录/资料、通用 MinIO 上传仍使用两端共用原入口。Service、数据范围、参数、响应和权限未改,PC 运行源码无需调整。
  • 验证:Maven 管理后端打包及 11 项 Controller 回归通过;移动端类型检查、H5及微信小程序生产构建通过。执行真实 Service 模块的隔离请求检查,验证18个移动端调用(含报警附件)和10个共用调用的 URL/方法,未发网络请求。源码扫描确认无旧移动端地址残留。
  • 交付需同步更新移动端和管理后端并重启后端,无数据库变更;未部署或执行真实工单、巡检、审核操作。

移动端故障通知筛选布局及核实文案

  • 用户要求审核状态改为 tab、报警等级下拉放在搜索框前并参考工单列表,随后确认“未审核”改为“待核实”、审核操作改称“核实”。
  • 顶部 tab 为全部/待核实/确认报警/误报警,等级独立提供全部等级/一级/二级/三级/四级;复用公共 SearchBar,新增可选 prefix 插槽,切换任一条件重置第一页并保留其余筛选。auditStatus=0 正常发送,全部不限制结果或等级。
  • 状态0优先显示“待核实”,覆盖后端旧 auditStatusName;详情按钮、核实结果/意见、抽屉标题、提交按钮及提示同步使用核实文案。接口、枚举与权限沿用现有约定。
  • 文件:移动端 src/pages/office/alarms.vue、src/components/SearchBar.vue、src/services/alarms.ts、src/pages/message/alarm-detail.vue、src/components/AlarmAuditDrawer.vue;同步长期记忆及索引。
  • 验证:类型检查、H5与微信小程序构建通过。隔离 Chrome 拦截接口验证四种 tab、等级选择/取消、组合搜索、分页及筛选重置、320/375/430宽度无横向溢出,并回归工单公共搜索栏。详情验证后端旧文案覆盖、核实按钮和弹窗、结果必选提示、模拟提交原参数及成功后状态更新/按钮隐藏,无页面异常。
  • 风险与后续:仅需更新移动端,无后端或数据库变更;未调用真实核实接口,尚未真机验收。

PC 报警核实命名同步

  • 用户要求 PC 同步移动端命名:报警状态“未审核/待审核”统一展示为“待核实”,菜单、操作、表单及提示使用“核实”。覆盖公共核实页、报警清单、详情、提醒、排水研判、供水首页和报警台账(含 CSV 导出)。工单验收与延期审核不受影响。
  • 新增 src/utils/alarmLabels.js 兼容后端旧状态名称,状态0优先显示待核实;供水展示状态1同样优先显示待核实。动态路由按报警组件将旧菜单标题映射为报警核实,首页入口兼容新旧标题;不修改数据库菜单、路由、接口枚举或权限。
  • 文件:上述公共报警页面、waterSupply/components/WaterAlarmPage.vue、waterAlarmManagementModel.js、waterHomeModel.js、alarmMenuView.js、waterHomeRouteResolver.js、权限 Store 及对应现有回归测试。修正核实页测试中已过期的列表数值快照断言,保留共享详情实际值保护检查。
  • 验证:生产构建及42项相关回归通过;隔离 Chrome 拦截接口验证菜单、待核实 tab/筛选/表格、必选提示、核实表单按原参数模拟提交、详情跳转和提醒,无页面异常;差异格式检查通过。
  • 风险与后续:仅需更新 PC 前端,无后端或数据库变更;浏览器提交为模拟接口,未执行真实报警核实。

移动端工单、故障列表查询样式

  • 用户要求两个列表参照设备列表,查询按钮紧贴输入框,并移除总数行右侧重复的状态文字。
  • 公共 SearchBar.vue 新增可选 attached 样式,将输入框和查询按钮连接,按钮尺寸、直角和配色与设备列表一致;仅工单与故障列表启用,其他页面保持默认样式。故障报警等级下拉仍位于输入框前。
  • 文件:移动端 src/components/SearchBar.vue、src/pages/profile/workorders.vue、src/pages/office/alarms.vue;两页总数行仅保留数量,顶部状态 tab 及卡片状态保留。
  • 验证:类型检查、H5 与微信小程序构建通过;隔离 Chrome 拦截接口检查320/375/430宽度,按钮与设备列表尺寸、颜色及圆角一致,输入框按钮无间隙、页面无横向溢出;按钮查询、回车查询和状态 tab 请求参数正常,总数行无重复状态,等级筛选位置正常。
  • 风险与后续:仅需更新移动端,无后端或数据库变更;未进行真机验收。

故障通知等级选项文案

  • 用户要求故障通知列表报警等级增加“报警”二字。下拉选项调整为全部等级、一级报警、二级报警、三级报警、四级报警,等级筛选参数和列表字段不变。
  • 文件:移动端 src/pages/office/alarms.vue。
  • 验证:移动端类型检查通过。
  • 风险与后续:仅需更新移动端,无接口、后端或数据库变更。

列表查询按钮文案完整显示

  • 用户反馈多个列表的查询按钮只显示“查”。按钮源文案原本为“查询”,问题是窄按钮保留了平台默认内边距,文字无法完整排布。
  • 公共 SearchBar.vue 和设备列表按钮清除默认内边距并禁止换行,保持原有文案、按钮宽高和查询逻辑。
  • 文件:移动端 src/components/SearchBar.vue、src/pages/office/devices.vue。
  • 验证:类型检查、H5 构建通过;隔离浏览器对设备、工单、故障、预警、处置方案及事件列表在320/375/430宽度检查按钮文案保持单行“查询”、页面无横向溢出或运行异常。

巡查管理移除查询输入框

  • 用户要求巡查管理列表去掉查询条件输入框。已移除搜索输入框和专属查询按钮,同时删除关键字状态及请求参数;状态 Tab、列表数据、下拉刷新与分页保持不变。
  • 文件:移动端 src/pages/office/patrol.vue。
  • 验证:移动端类型检查通过。
  • 风险与后续:仅需更新移动端,无后端或数据库变更。

工单、故障核实、巡检图片统一 10MB

  • 用户要求故障详情核实表单提示统一为“支持 png / jpg / jpeg,单个文件不超过 10MB”,并将工单、故障、巡检操作涉及的图片上传限制统一为单文件不超过 10MB,PC 端同步调整。
  • 移动端 UploadPanel 增加单文件大小校验,工单操作、故障核实、巡检完成均显式使用 10MB,并统一上传提示文案。
  • PC 端工单处置/验收/延期、巡检完成的 ImageUpload 显式设置 file-size=10;报警核实提示与校验统一为 10MB;公共 ImageUpload 允许恰好 10MB 的文件通过(边界改为 >)。
  • 非本次业务范围的基础维修、隐患清单等组件仍保留原有 5MB 限制,避免扩大其他上传场景的行为变化。
  • 验证:移动端 npm run type-check、npm run build:h5 与 PC 端 npm run build:prod 均通过;PC git diff --check 通过。PC 构建仅输出既有 Sass 弃用警告。