[ { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/common.api.ts", "lines": "3-10,46", "title": "bjlist 引用不存在的 Api.bjlist", "severity": "致命", "type": "undefined_api_ref", "symptom": "瓦斯管道故障诊断轮询请求 url 为 undefined,列表/曲线无法加载", "root_cause": "enum Api 无 bjlist 成员,但 bjlist() 仍使用 Api.bjlist", "repro": "宝德矿打开瓦斯预警→管道故障诊断,抓包看请求 URL", "fix_hint": "恢复 bjlist='/safety/ventanalyAlarmLog/list' 或改用 warningHistoryList 路径" }, { "module": "bundleSpyTable", "file": "vent/bundleSpy/bundleSpyTable/index.vue", "lines": "134-147", "title": "色谱仪报表被硬编码 mock 覆盖真实 API", "severity": "致命", "type": "mock_override", "symptom": "页面恒显示写死的 10月2日假报表,真实 queryReportData 不调用", "root_cause": "getbundleSpyInfoList 被注释,改为本地写死 res", "repro": "打开色谱仪报表分析,网络面板无真实报表请求仍能看到固定数据", "fix_hint": "恢复 await getbundleSpyInfoList(...),删除硬编码 res" }, { "module": "workingFace", "file": "vent/deviceManager/workingFace/workingFace.api.ts", "lines": "18-21,79-90", "title": "智能管控批量删除/导入导出误指向 /sys/user/*", "severity": "致命", "type": "wrong_endpoint", "symptom": "批删打到用户批量删除接口,可能删错资源或失败;单删走 managesys 正确路径", "root_cause": "deleteBatch/importExcel/exportXls 从用户模块拷贝未改", "repro": "预警联动勾选多条批删,抓包确认 /sys/user/deleteBatch", "fix_hint": "改为 /safety/ventanalyManageSystem/deleteBatch 及对应导入导出路径" }, { "module": "gasPumpMonitor", "file": "vent/monitorManager/gasPumpMonitor/components/gasPumpHome.vue", "lines": "159-178,355-375,329-333", "title": "就地/远程与检修控制 paramcode 对调且入参分支不匹配", "severity": "致命", "type": "inverted_control_mapping", "symptom": "点就地/远程下发 jxmsqh;点检修下发 ykjdqh;传 0 时 handlerType 不赋值仍弹密码框", "root_cause": "changeCtr 写死 jxmsqh、changeMode 写死 ykjdqh;模板传 0/1,函数判 1/2", "repro": "抽采泵站管控点就地/远程/检修开闭→确认密码→抓包 paramcode", "fix_hint": "changeCtr→ykjdqh,changeMode→jxmsqh;统一 0/1 分支" }, { "module": "gasReportInspect", "file": "vent/gas/gasReportInspect/index-time.vue", "lines": "62-82", "title": "空 records 时先访问 [0] 导致挂载崩溃", "severity": "致命", "type": "crash_on_mount", "symptom": "无日报数据时 Cannot read properties of undefined,页面白屏", "root_cause": "先读 tableList[0].id/content,后才判 length;JSON.parse 无空保护", "repro": "瓦斯日报分析在 queryReportList 返回空 records 时进入页面", "fix_hint": "先判空 return;JSON.parse 包 try/catch(index-type/index-lt 同改)" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue", "lines": "5", "title": "返回按钮权限取反", "severity": "严重", "type": "inverted_permission", "symptom": "有 gasWarn:return 权限看不到返回;无权限反而显示", "root_cause": "v-if=\"!hasPermission(...)\";对照 deviceMonitorWarn 为正逻辑", "repro": "分配 gasWarn:return 后对比返回按钮显隐", "fix_hint": "改为 hasPermission;fire/dust/ventilate/device/waterLevel 同步" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/fireWarn.vue", "lines": "4", "title": "火灾预警返回按钮权限取反", "severity": "严重", "type": "inverted_permission", "symptom": "有 fireWarn:return 看不到返回按钮", "root_cause": "v-if=\"!hasPermission('fireWarn:return')\"", "repro": "分配权限后打开火灾监测预警", "fix_hint": "去掉取反" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/dustWarn.vue", "lines": "6", "title": "粉尘预警返回按钮权限取反", "severity": "严重", "type": "inverted_permission", "symptom": "有 dustWarn:return 看不到返回", "root_cause": "v-if=\"!hasPermission('dustWarn:return')\"", "repro": "分配权限后打开粉尘监测预警", "fix_hint": "改为正逻辑 hasPermission" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue", "lines": "10", "title": "通风预警返回按钮权限取反", "severity": "严重", "type": "inverted_permission", "symptom": "有 ventilateWarn:return 看不到返回", "root_cause": "v-if=\"!hasPermission('ventilateWarn:return')\"", "repro": "分配权限后打开通风监测预警", "fix_hint": "改为正逻辑" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue", "lines": "193", "title": "甲烷显示运算符优先级错误", "severity": "严重", "type": "wrong_operator_precedence", "symptom": "gasC 为空时显示 \"undefined%\" 而非 '--'", "root_cause": "el.readData.gasC + '%' || '--' 中字符串恒 truthy", "repro": "测点 gasC 缺失时看左侧甲烷值", "fix_hint": "(gasC!=null&&gasC!=='') ? gasC+'%' : '--'" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue", "lines": "346-365", "title": "宝德矿第三 Tab 映射到瓦斯参数而非预警指标", "severity": "严重", "type": "wrong_field_binding", "symptom": "菜单第三项「预警指标」点击却渲染 gasParamter(wscs)", "root_cause": "getMonitorComponent(宝德)=[预警监测,故障诊断,预警指标];btnClick ind===2 固定 isShow='wscs'", "repro": "sysOrgCode=sdmtjtbdmk 打开瓦斯预警点第三个类型按钮", "fix_hint": "宝德 ind===2 → yjzb;布尔台 ind===2 保持 wscs" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue", "lines": "368-377", "title": "宝德预警监测卡片误走故障诊断轮询", "severity": "严重", "type": "wrong_comparison", "symptom": "预警监测点卡片会走 bjlist,菜单被故障设备覆盖", "root_cause": "cardClick 仅按 isflag=='1' 分支,未看 isShow/activeIndex", "repro": "宝德→预警监测→切换工作面卡片,观察是否请求 bjlist", "fix_hint": "yjjc→getMonitor;gzzd→getMonitor1" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue", "lines": "311", "title": "gasGlFaultDia 无防护 JSON.parse 可抛错", "severity": "严重", "type": "crash_on_mount", "symptom": "缺/非法 gasGlFaultDia 时脚本异常,故障诊断页中断", "root_cause": "JSON.parse(data.readData.gasGlFaultDia) 无空值与 try/catch", "repro": "故障诊断选中无 gasGlFaultDia 的设备", "fix_hint": "JSON.parse(x||'{}') 并 catch 给默认坐标" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/dustWarn.vue", "lines": "131-143,166-176", "title": "粉尘预测曲线每轮 push 不清理导致无限膨胀", "severity": "严重", "type": "timer_state_leak", "symptom": "停留越久曲线点越多、内存升高", "root_cause": "fillChartByIndex 每秒 echartYc.push;仅 topAreaClick 会清空", "repro": "粉尘预警停留数分钟观察 echartYc 长度", "fix_hint": "每次 fill 前重置 echartYc,或替换最新点" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue", "lines": "239-250", "title": "从巷道阻力分析切回通风监测后轮询不恢复", "severity": "严重", "type": "timer_not_restarted", "symptom": "切回通风监测后顶部/测点停止自动刷新", "root_cause": "btnClick(0) 只 clearNetTimer+getMenuList,未 getMonitor(true)", "repro": "通风监测→巷道阻力→再点通风监测,等待>3s 看是否更新", "fix_hint": "ind===0 时调用 getMonitor(true)" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/fireWarn.vue", "lines": "74-83,148-157,173-185,215-217", "title": "匿名 setTimeout 未清理且 getMonitor 不先 clear", "severity": "严重", "type": "timer_leak", "symptom": "快速切换/离开后仍请求 sysTypeWarn;可能双轮询", "root_cause": "cardClick/reset 的 setTimeout 无句柄;getMonitor 赋值前不清旧 timer", "repro": "火灾预警连点内因/外因后返回首页,抓包仍见请求", "fix_hint": "保存 delay timer 并在 unmount clear;getMonitor 开头 clearPollTimer" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/common/external-threec.vue", "lines": "118-124", "title": "温度传感器列表误绑 fireval", "severity": "严重", "type": "wrong_field_binding", "symptom": "外因火灾温度卡片显示火焰字段/空值", "root_cause": "temperature.map 使用 readData.fireval;mainWell 正确用 temperature", "repro": "外因火灾 temperature 有值、fireval 空时看温度卡", "fix_hint": "改为 el.readData.temperature(fourc:147-153 同步)" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/common/external-fourc.vue", "lines": "147-153", "title": "四参外因温度误绑 fireval", "severity": "严重", "type": "wrong_field_binding", "symptom": "温度监测显示错误/空", "root_cause": "与 threec 相同拷贝错误 val: el.readData.fireval", "repro": "打开外因四参温度列表", "fix_hint": "改为 temperature" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/alarmHistoryTable.vue", "lines": "166-167", "title": "未传 deviceType 时 strtype 变成 \"undefined*\"", "severity": "严重", "type": "wrong_field_binding", "symptom": "设备预警报警历史过滤错误,列表空或错数据", "root_cause": "beforeFetch: props.deviceType + '*';deviceWarn.vue:43 未传 deviceType", "repro": "设备监测预警→报警历史,检查请求 strtype", "fix_hint": "传入正确 deviceType,或空时不拼 strtype" }, { "module": "gasAssessment", "file": "vent/gas/gasAssessment/index.vue", "lines": "43", "title": "进入抽采单元页未传入 unitId", "severity": "严重", "type": "wrong_field_binding", "symptom": "侧栏 list({ids}) 为空,实时数据无法对应选中单元", "root_cause": " 未绑定 :unitId=\"activeUnitId\"", "repro": "达标评判点选单元后看 list 请求 ids", "fix_hint": "" }, { "module": "gasAssessment", "file": "vent/gas/gasAssessment/components/gasUnit.vue", "lines": "27,55,73-75", "title": "单元混量/纯量图表写死 mock", "severity": "严重", "type": "mock_override", "symptom": "图表恒为本地假数据,真实监测不驱动", "root_cause": "CustomChart 绑定 mockGasUnitHlData/mockGasUnitClData", "repro": "打开抽采单元对比接口与图表数据源", "fix_hint": "用接口历史数据替换 mock" }, { "module": "gasPumpMonitor", "file": "vent/gas/gasPumpMonitor/index.vue", "lines": "57-68", "title": "井下泵模型切换后被无条件覆盖为地上泵", "severity": "严重", "type": "copy_paste_bug", "symptom": "选中 pump_under* 仍加载地上 gasPump 三维", "root_cause": "if/else 设类型后末尾又 setModelType('gasPump')", "repro": "抽采泵站监测切到井下泵站设备", "fix_hint": "删除末尾无条件 setModelType('gasPump')" }, { "module": "gasPumpMonitor", "file": "vent/gas/gasPumpMonitor/components/monitorChart.vue", "lines": "50-65", "title": "setInterval 用 clearTimeout 清理导致泄漏", "severity": "严重", "type": "timer_not_cleared", "symptom": "离开监测图表后仍每 2s 推数据", "root_cause": "setInterval + onUnmounted clearTimeout", "repro": "进入监测图表后切走,观察回调是否继续", "fix_hint": "改为 clearInterval(timer)" }, { "module": "gasZk", "file": "vent/gas/gasZk/index.vue", "lines": "61-79", "title": "setInterval 回调内再 startPolling 造成重叠轮询", "severity": "严重", "type": "timer_logic_bug", "symptom": "慢网时 /drill/get/status 并发堆积", "root_cause": "interval 不等待完成可再次触发;成功后又 stop+new interval", "repro": "打开钻孔监测并限速网络观察并发", "fix_hint": "改为 await 后 setTimeout 串行轮询" }, { "module": "gasInspect", "file": "vent/gas/gasInspect/index.vue", "lines": "66-75", "title": "早/中/晚是否巡检真假分支都渲染「是」", "severity": "严重", "type": "wrong_field_binding", "symptom": "未巡检也显示「是」,状态失真", "root_cause": "text=='1' 与 v-else 内均写「是」", "repro": "NFC 地点管理查看未巡检班次列", "fix_hint": "else 显示「否」;对齐 Nonfc 字段约定" }, { "module": "gasInspectNonfc", "file": "vent/gas/gasInspectNonfc/components/inspectEdit.vue", "lines": "12-14,79-81,71-76", "title": "区队下拉缺 value 且整对象重赋值打断响应式", "severity": "严重", "type": "nfc_nonfc_copy_paste", "symptom": "提交可能把区队名当 id;二次编辑表单不刷新", "root_cause": "option 无 :value;formStateEdit=Object.assign 重赋值丢失 reactive 绑定", "repro": "Nonfc 编辑改区队提交看 payload;连续编辑两条", "fix_hint": "补 :value=\"item.value\";Object.assign(formStateEdit, newV) 原地更新" }, { "module": "gasReport", "file": "vent/gas/gasReport/index.vue", "lines": "357-440", "title": "审核/导出异常校验 else-if 导致任一气体合格即放行", "severity": "严重", "type": "inverted_validation_logic", "symptom": "O2 超限但 CO 合格仍可审核通过;多行以最后一行结果为准", "root_cause": "getTs 对 O2/CO/CO2/T/CH4 用 else-if;forEach return 不能结束函数", "repro": "仅 O2 异常其余合格→点审核通过", "fix_hint": "全部字段均在阈内才放行;任异常即 true" }, { "module": "gasReport", "file": "vent/gas/gasReport/index.vue", "lines": "271-274", "title": "巡检图片 Blob 二次封装错误", "severity": "严重", "type": "wrong_blob_usage", "symptom": "查看班次图片失败或 Failed to construct 'Blob'", "root_cause": "gasServerImg 已是 blob,又 new Blob(res,...);构造需 Array", "repro": "日报管理点夜/早/中班「查看」", "fix_hint": "URL.createObjectURL(res) 或 new Blob([res],...)" }, { "module": "gasAnalysis", "file": "vent/gas/gasAnalysis/index.vue", "lines": "177-182,216-219", "title": "列表成功后强制 pagination.current=1 导致分页失效", "severity": "严重", "type": "pagination_logic_bug", "symptom": "翻到第 2 页后被打回第 1 页", "root_cause": "gasReportLogLists 在有 records 时无条件 current=1", "repro": "业务分析多页数据点第 2 页", "fix_hint": "删除该赋值;仅查询/重置时置 1" }, { "module": "gasPipeNet", "file": "vent/gas/gasPipeNet/index.vue", "lines": "142-147", "title": "管网阀门控制提交未调控制接口", "severity": "严重", "type": "undefined_api_call", "symptom": "点确定只 toast 表单 JSON,阀门无动作", "root_cause": "submitHandler 仅 message.success,无 deviceControl", "repro": "管网管控→阀门控制→提交", "fix_hint": "接入泵站同款控制 API" }, { "module": "bundleSpyTable", "file": "vent/bundleSpy/bundleSpyTable/index.vue", "lines": "237-241,386-390", "title": "活鸡兔/寸草塔二矿图表 O₂闭内 误绑 CH₄ 数据", "severity": "严重", "type": "wrong_field_binding", "symptom": "图例 O₂闭内 柱状与 CH₄闭内完全相同", "root_cause": "name:'O₂闭内' 的 data 写成 ch4AveValues", "repro": "对应矿打开色谱仪报表对比 o2_ave 与图", "fix_hint": "改为 o2AveValues" }, { "module": "bundleSpy+bundleMonitor", "file": "vent/bundleSpy/bundleSpyTable/index.vue; vent/bundle/bundleMonitorTable/index.vue", "lines": "bundleSpy:108-109; bundle:101-102", "title": "保德 sysOrgCode 大小写错误导致专用列永不命中", "severity": "严重", "type": "copy_paste_orgcode", "symptom": "保德落到 default 列配置,专用字段不显示", "root_cause": "写 case 'sdmtjtBdmk';全库其余为 'sdmtjtbdmk'", "repro": "sysOrgCode=sdmtjtbdmk 打开色谱仪/束管日报", "fix_hint": "统一改为 sdmtjtbdmk" }, { "module": "bundleMonitorTable", "file": "vent/bundle/bundleMonitorTable/index.vue", "lines": "103-104,453", "title": "补连塔图表分支 orgCode 写成 sdmtjtBltmk", "severity": "严重", "type": "copy_paste_orgcode", "symptom": "表格用 Bltcolumns 正确,柱状图落入 default", "root_cause": "computedColumns 用 sdmtjtbltmk,getSeriesConfig 用 sdmtjtBltmk", "repro": "sysOrgCode=sdmtjtbltmk 对比表头与图例", "fix_hint": "图表 case 改为 sdmtjtbltmk" }, { "module": "bundleMonitorTable", "file": "vent/bundle/bundleMonitorTable/bundle-table.data.ts", "lines": "595-610", "title": "保德束管 NO₂ 最小值 dataIndex 写成 no22_max", "severity": "严重", "type": "wrong_column_dataIndex", "symptom": "NO₂最小值空白或错值", "root_cause": "最小值 dataIndex:'no22_max',key/dataIndex 交叉贴错", "repro": "保德束管日报对比 no2_min/no2_max 与三列", "fix_hint": "最大值 no2_max;最小值 no2_min" }, { "module": "bundleMonitorTable", "file": "vent/bundle/bundleMonitorTable/bundle-table.data.ts", "lines": "1465-1472,1848-1855", "title": "寸草塔一矿/哈拉沟 O₂最大值列绑定 o2_min", "severity": "严重", "type": "wrong_column_dataIndex", "symptom": "标题最大值实际显示最小值", "root_cause": "title:最大值 却 dataIndex:'o2_min'", "repro": "对应矿打开束管日报对比 o2_max/o2_min", "fix_hint": "改为 dataIndex:'o2_max'" }, { "module": "betKy", "file": "vent/monitorManager/betKy/index.vue", "lines": "112-146,148-154,258-262", "title": "矿压轮询 push 不重置 + setTimeout/clearInterval 错用", "severity": "严重", "type": "timer_leak", "symptom": "图表与行索引错位、内存增长;卸载后仍可能请求", "root_cause": "chartData 每轮 push 不清空;timer=setTimeout 却 clearInterval;重启只置 null 不 clear", "repro": "矿压页多次刷新后切行;快速进出页观察请求", "fix_hint": "每轮 chartData=[];统一 clearTimeout 并先 clear 再置空" }, { "module": "dustMonitorTable", "file": "vent/dust/dustMonitorTable/index.vue", "lines": "317-320,510-513", "title": "保德当日粉尘总体最大值误用 zcjqpj/hcjqpj", "severity": "严重", "type": "wrong_field_binding", "symptom": "当日分析最大值恒 -Infinity 或字段映射失败", "root_cause": "BdMaxValues 用 qc/hc;overallBdMaxValues 误用布尔台字段", "repro": "保德粉尘报表切「当日粉尘情况分析」", "fix_hint": "overallBdMaxValues 改为 qc/hc" }, { "module": "dustMonitorTable", "file": "vent/dust/dustMonitorTable/index.vue", "lines": "269-270,429-436,472-475", "title": "哈拉沟分组键 ccdd 被最大值循环改写成 jcdd", "severity": "严重", "type": "logic_state", "symptom": "工作场所下拉变成测点名,过滤错乱", "root_cause": "分组 gzcs=ccdd,HlgMaxValues 更新时 gzcs=item.jcdd 覆盖", "repro": "哈拉沟粉尘报表看工作场所下拉与过滤", "fix_hint": "更新最大值时不要用 jcdd 覆盖 gzcs" }, { "module": "workingFace", "file": "vent/deviceManager/workingFace/CustomNormalTable.vue", "lines": "250-251", "title": "批量删除未传 handleSuccess 回调", "severity": "一般", "type": "undefined_api_ref", "symptom": "确认后 handleSuccess is not a function,列表不刷新", "root_cause": "batchDeleteById(params, handleSuccess) 被调用为 batchDelete({ids})", "repro": "预警联动批删点确认看控制台", "fix_hint": "传入 reload 作为第二参" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/dustWarn.vue", "lines": "255", "title": "巷道温度单位错误依赖 humidity", "severity": "一般", "type": "wrong_field_binding", "symptom": "有温度无湿度时单位空白", "root_cause": "dw: el.humidity ? '(℃)' : ''", "repro": "temperature 有值 humidity 空时看单位", "fix_hint": "dw: el.temperature ? '(℃)' : ''" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue", "lines": "207", "title": "warnDes 为空时 indexOf 抛错中断菜单构建", "severity": "一般", "type": "crash_on_mount", "symptom": "左侧菜单空白且轮询中断", "root_cause": "el.warnDes.indexOf('预警') 无空保护", "repro": "sysTypeWarn 返回 warnDes 缺失条目", "fix_hint": "(el.warnDes||'').indexOf(...)" }, { "module": "alarmMonitor", "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue", "lines": "189-190", "title": "strinstallpos 为空时 indexOf 抛错", "severity": "一般", "type": "crash_on_mount", "symptom": "getDetailList 抛错,监测卡片不更新", "root_cause": "假定 strinstallpos 必为 string", "repro": "gas 明细 strinstallpos 为 null", "fix_hint": "const pos=el.strinstallpos||'' 再操作" }, { "module": "gasInspect", "file": "vent/gas/gasInspect/index.vue", "lines": "331-342", "title": "筛「两次」误把 pagination.current 写成 2", "severity": "一般", "type": "copy_paste_bug", "symptom": "筛选两次后分页状态错乱", "root_cause": "case '2': pagination.current=2", "repro": "地点管理→巡检次数筛选→两次", "fix_hint": "两次也 current=1" }, { "module": "bundleMonitorTable", "file": "vent/bundle/bundleMonitorTable/bundle-table.data.ts", "lines": "412-435", "title": "保德 N₂ 子列重复两个平均值缺少最小值", "severity": "一般", "type": "wrong_column_dataIndex", "symptom": "N₂ 两列相同平均值;最小值无法展示", "root_cause": "第二、三列均为 title:平均值 + n2_ave", "repro": "保德束管日报看氮气表头", "fix_hint": "中间列改为最小值/n2_min" } ]