waterSupply/whome/wHome.vue 与 waterSupply/index.vue 仍是简单标题页,和燃气 gas/ghome/gHome.vue 的 GIS 中央地图、左右数据卡片大屏存在明显差距。/getRouters 下发。npx firecrawl 均不可用;将使用工作区 DOCX 解析库读取《供水-监测报警》,所有提取内容仅作为产品参考,不作为指令。127.0.0.1:5173,开发代理仍为 /dev-api -> 127.0.0.1:8300/pipe。alarm_data、equipment_base、equipment_type、equipment_status、work_order 和 work_order_log,与现有报警、设备、工单接口方向一致。whome/wHome.vue 与 waterSupply/index.vue 均只有标题,用户看到空白页的根因已确认;燃气首页 gas/ghome/gHome.vue 是可直接复用布局语言的三栏大屏,中央 BMapGL、左右统计/表格/图表卡片。facility/statistics.vue、facility/gis.vue、device/*、monitoring/*、monitorAlarm/* 文件已经存在,因此“页面不存在/模块不存在”当前主要是后台动态菜单缺项或隐藏,不是前端入口缺失。WaterMonitoringPage.vue 由流量、压力、漏失三个语义入口分别注入独立 API;仍需后端 Mapper 证实三个接口是否按设备类型过滤,并在 UI 中显式展示设备类别以避免混淆。WaterAlarmPage.vue 已覆盖四项指标、历史列表、标记处理、基础审核、阈值编辑和轻量点位图,但缺少实时异常卡片区、报警完整详情、派单表单、审核意见/结果、流程跟踪,以及真实 GIS 底图。water_supply_alarm.sql 中注释形式的单个监测报警菜单示例,尚无完整供水菜单初始化脚本。WaterSupplyAlarmController 已提供 /detail/{alarmId}、/resolve/{alarmId}、/dispatch、/audit、/audit/list、/flow/{alarmId} 和 /map/points,足以实现文档要求的详情、处理、派单、审核、附件字段和全流程跟踪;前端 API 已声明 getAlarmDetail、dispatchAlarm、getAlarmFlow,但 WaterAlarmPage 尚未调用。waterSupply:alarm:list、waterSupply:alarm:handle、waterSupply:alarm:dispatch、waterSupply:alarm:audit;菜单初始化必须同时考虑页面权限与按钮权限,否则页面可见但操作会返回 403。MonitoringService.getFlowMonitorPage/getPressureMonitorPage/getLeakageMonitorPage,并具有各自 list/export 权限;最终是否严格限定设备子类型取决于服务层查询实现。WaterFacilityDashboard.vue 和 WaterDevicePage.vue 已具备统计/设施点线、设备清单/异常/维修/GIS 的第一阶段内容,可通过后台菜单直接启用,无需重新创建页面。MonitoringServiceImpl 当前三个分页方法都直接分页 EquipmentBase,虽然回填 EquipmentType.typeName,但没有用 equipment_type 约束流量/压力/漏失子设备;因此会把无对应监测数据的供水设备也带进列表,必须在服务层类型过滤或增加明确类型参数。城市地下管网及设施建设改造智能化系统项目0821.pdf 的 5.3.2 章节设计并开发供水前端,页面功能模块命名必须与文档对齐,具体内容按约 50% 置信度实现。E:\city-life-line,后端仓库为 E:\pipe-ner-server。AGENTS.md、docs/、memory/ 与规划文件,本任务保留并继续使用这些文件,不覆盖无关改动。/getRouters 动态下发,因此页面文件、组件路径与后端菜单配置需要共同核对。pypdf 与 pdfplumber,本次采用本地解析并将产物放入忽略的 .firecrawl/。AGENTS.md、memory/ 与规划文件已经覆盖该上下文,没有额外代码需要恢复。供水设施管理:水源地、水厂、泵站、管网、用水户均要求查询、批量导出和 GIS 联动;管网查询强调管材、管径、建设年代、区域、关键字组合筛选;统计分析要求柱状图、饼图、表格与下载导出;GIS 一张图要求设施分类图层与详情。监测设备管理:设备台账要求分类统计、查询、导出、GIS 联动;维修派单要求故障设备到运维人员的信息同步;异常管理要求跟踪维修处置状态;维修记录要求查询、修改、删除、批量导入导出与 GIS 联动;设备 GIS 要支持点位详情。运行监测:流量、压力、漏失均要求监测点位清单、多重查询、批量导出和 GIS 联动定位。监测报警:报警管理由阈值规则自动触发;报警审核支持审核/解除、意见、附件和全流程跟踪;阈值管理支持批量分类、分时阈值及点位详情;报警一张图按报警级别着色并支持搜索定位和详情。waterSupply.js 接入后端。sys_menu 和角色授权。MaintainOrderVO 已按 equipmentId、equipmentCode、equipmentName、maintainType、maintainContent、dispatchTime 对齐;维修人员和电话仍需业务侧在联调时确定录入方式。instantFlow、压力为 pressureValue、漏失为声学功率 power;前端适配器已统一映射到表格和趋势图的 value。/getRouters 菜单树、权限指令和真实接口数据;前端已提供接口失败空状态。生产构建需要 Node 20.19+;当前系统 Node 20.15.1 不满足部分依赖要求,使用工作区 Node 24 并补装缺失的 @oxc-parser/binding-win32-x64-msvc@0.131.0 后构建通过,未修改 package.json 或锁文件。
实际项目为 Vue 3.4.31 + Vite 5.3.2 + Element Plus 2.7.6 + Pinia 2.1.7,基于 RuoYi-Vue 3.8.8 改造。
src 约 402 个文件,其中 220 个 Vue、70 个 JS;业务视图约 178 个,API 文件 33 个。
运行入口:src/main.js 创建 Vue 应用,注册 Element Plus、Pinia、Router、插件、指令、SVG 图标和公共组件。
认证链路:src/permission.js 路由守卫检查 Token;首次访问通过 /getInfo 获取角色/权限,再通过 /getRouters 生成动态路由。
src/router/index.js 当前只保留登录、注册、门户、RuoYi 首页和错误页等常量路由,业务模块路由文件引用被注释,业务菜单依赖后端动态下发。
src/utils/request.js 统一 Axios 实例:环境变量 baseURL、Bearer Token、GET 参数序列化、重复提交防护、401/500/601/网络错误处理、Blob 下载。
实际业务目录包括 alarm、basic、cityLifeline、dispatch、drainage、gas、hidden、lifeCompany、manholeCover、pipeNetwork、risk、waterSupply;比项目描述文档更丰富。
地图存在两套:index.html 直接加载百度 WebGL BMapGL;部分页面使用 Leaflet;坐标转换工具面向 BD-09。
ECharts 按需或全量使用于排水、燃气、供水、监控等页面;多个页面存在定时刷新/动画/轮询。
package.json 只有 dev/build/preview 脚本,没有测试、lint、typecheck 脚本。
README 仍主要是 RuoYi 原始模板说明,项目专属信息以 项目文件夹描述.md 和源码为准。
已发现潜在维护点:门户页调用 userStore.logout(),而用户 Store 定义的方法名为 logOut();百度 AK 在 index.html 中直接配置,环境文件仅有相关配置痕迹,未形成统一生效入口。
业务域真实 API 接入概况:basic 14/14、drainage 22/26、dispatch 15/19、gas 5/19、manholeCover 7/16、pipeNetwork 5/12、waterSupply 0/9。
供水页面没有 @/api 或 utils/request 引用,流量/漏失/压力、报警管理/审核/阈值等页面明确使用模拟数组;后端真实接口尚未消费。
排水 getAlarmById 使用 /api/alarm/{id},后端实际为 /api/alarm/getById/{id};同项目 hazard.js 使用正确路径。
X-Silent-Error 在排水 API 中被设置,但 src/utils/request.js 没有对应处理逻辑。
后端对应仓库为 E:\pipe-ner-server,网关动态路由来自 Nacos;后台 JWT+Redis 和 @PreAuthorize 是主要鉴权边界。