生成时间: 2026-08-03 · 数据来源: xnybw平台需求及工作计划.xlsx(南网在线绿能云缺陷跟踪表)· 仅针对 backup730/730backup 分支代码

① 基本信息

问题描述外网侧提交后,审核人是自己
一级模块实际并网流程
二级模块项目基本信息
涉及类型中压分布式新能源
严重性严重
当前状态2.1.待开发
研发处理人(台账未填写)

② 问题截图

流程信息弹窗,编制→总调审核目标处理人是自己
"流程信息"弹窗第2条记录:环节"编制→总调审核","目标环节处理人"仍显示提交人自己的手机号"18675159263"

③ 旧代码涉及的项目文件及行数(backup730 分支)

xnybw5f / src/views/projectNew/components/actualInfo/components/tabItem.vue 第 472-533 行(batchAuditFlow,用 cascadeQuery 返回的 todoUser 覆盖人员选择结果)
xnybw5f / src/views/projectNew/components/actualInfo/components/tabItem.vue 第 609-635 行(sendFlow 方法,中压分布式新能源"直连总调"时 flowstatus 直接置为 '2' 并打开 userSelect)

④ 代码现状与修复方案

本行现象与第85行(集中式新能源,"编制→中调审核"目标处理人显示自己)几乎一致,代码同样落在 tabItem.vuebatchAuditFlow() 内部在 oldFlowStatus == '2' 时,会用 cascadeQuery 接口返回的 todoUser/todoUserId(提交前该记录当前挂在谁的待办上——此时还是提交人自己)去覆盖用户在 userSelect 弹窗里手动选择的审核人列表,完整代码分析见 solution-85.html

本行涉及的项目类型是"中压分布式新能源",额外注意到 sendFlow() 方法里有一段按公司名称直接判定流转目标的逻辑:

sendFlow(bizId) {
  let flowstatus = '1';
  if (this.plantItem.company.indexOf('总调') != -1) {
    flowstatus = '2';   // 第613行:公司名称含"总调",直接把flowstatus设为'2'
  }
  ...
  this.$refs.userSelect.open({ params, callback: result => {
    if (result.action == 'OK') {
      let params = { ..., userList: result.users, ..., currentFlowStatus: "1" };  // 未设置oldFlowStatus字段
      this.batchAuditFlow({ dataList: [params] });
    }
  }})
}
这里调用 batchAuditFlow 时传入的参数对象没有 oldFlowStatus 字段,按 batchAuditFlow() 内部 if (data.dataList[0].oldFlowStatus == '2') 的判断,理论上会走 else 分支,直接使用 userSelect 弹窗里选定的 result.users 提交,不会被 cascadeQuery 覆盖。但截图现象与"目标处理人=自己"完全吻合,说明本行触发的实际提交入口很可能不是这个 sendFlow(),而是同一组件里另一处会设置 oldFlowStatus:'2' 的提交入口(第438行 handleAuditClick 内的分支,与第85行代码位置相同)。受限于仅静态审查代码、未做运行时调试,未能 100% 确认本行截图具体命中的是哪一个提交入口,这里如实说明,两个入口都建议一并核查修复。

建议修复方式:

  1. 按 solution-85.html 的方案,去掉 batchAuditFlow() 中用 cascadeQuery.todoUser 覆盖 userList 的逻辑,统一直接使用 userSelect 弹窗选择结果;
  2. 核实 sendFlow()(第609-635行)与 handleAuditClick(第415-465行)这两个提交入口是否被中压分布式新能源类型的实际提交流程共同复用,避免其中一个入口遗漏正确传递用户选择结果。