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

① 基本信息

问题描述并网资料,互联网用户上传附件之后,点击一次提交,刷新之后又出现提交按钮,以为点击了没有效果又快速点击一次提交按钮,刷新之后流程为专业审核,互联网侧目标环节处理人是自己,三区专业审核人员没有提交和回退按钮,查看流程显示专业审核处理人是正确的。建议互联网侧点击一次提交之后刷新就把提交按钮隐藏掉
一级模块并网资料流程
二级模块并网资料流程
涉及类型集中式新能源
严重性严重
是否阻断流程
当前状态2.1.待开发
研发处理人周小龙
处理状态待调整

② 问题截图

流程信息弹窗
"流程信息"弹窗显示两步记录,处理人/目标环节处理人一栏均为同一手机号(测试人员确认该弹窗结果是正确的)
补充截图
补充证据截图

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

xnybw5f / src/approval/projectData/component/batchInfo.vue 第 1693、1701-1702、1709-1710 行("提交"按钮 v-if 显示条件,依赖 informationFlow.currentUserId)
xnybw5b / src/main/java/cn/csg/so/oms/in/newenergy/project/appservice/NePjInfoFlowAppService.java 第 413-545 行(sendTask 提交方法,中间节点未回写 currentUserId)

④ 代码现状与修复方案

这条问题看似是"提交按钮刷新后又出现"的纯 UI 交互问题,但深挖一层会发现它和第79/87行是同一处后端缺陷的连带表现——"提交"按钮是否显示,前端用的正是 informationFlow.currentUserId 是否包含当前登录人来判断:

<el-button v-if="!scope.row.folderFlag && allButtonShow && (
    (!scope.row.informationFlow) ||
    (scope.row.informationFlow && scope.row.informationFlow.taskDefKey !== '-1' &&
     scope.row.informationFlow.currentUserId &&
     scope.row.informationFlow.currentUserId.indexOf(storeCurrentUserId) !== -1)   // 关键判断:currentUserId里含"我",才显示"提交"按钮
  )" type="text" :loading="sendLoading" @click="submitFlow(scope.row, scope.$index, infoItem)">提交</el-button>   // 第1693行

NePjInfoFlowAppService.sendTask() 把流程从"编制"推进到"专业审核"这类中间节点后,没有把 currentUserId 重新赋值为真正的下一节点处理人(详见 solution-79.html 的完整分析),落库后这个字段仍然是提交人自己。刷新页面重新拉取列表数据时,前端上面这段 v-if 条件用"自己的ID"去匹配这个仍然等于"自己"的 currentUserId,条件自然仍然成立——"提交"按钮就又出现了,与测试人员观察到的现象完全吻合。

这正好解释了台账描述里"查看流程显示专业审核处理人是正确的"这一细节:NePjInfoFlowAppService.sendTask() 调用的 flowService.sendFlow(...) 是把任务真正分派给了正确的专业审核人(流程引擎内部路由没有问题,"查看流程"弹窗读的是流程引擎自己的历史记录表,所以显示正确);但 informationFlow.currentUserId 这个业务字段没有跟着同步更新,导致列表页"提交"按钮的显示判断和"当前处理人"展示都还停留在"自己",两个表现(按钮误现 + 处理人显示自己)本质上是同一次落库遗漏引发的两个连带症状,不是两个独立问题。

建议修复方式:根本修复仍是第79行方案里给出的——在 sendTask() 中间节点分支补齐 currentUserId/currentUserName 的重新赋值。除此之外,针对本行测试人员提出的"点击提交后刷新就应该隐藏提交按钮"这个交互建议,可以在前端再加一层防抖兜底,避免即使后端字段短暂未同步,用户也不会被诱导重复点击:

submitFlow(_row, rowIndex, item) {
  if (_row._submitting) return  // 本地防抖:本行已在提交中,直接忽略再次点击
  this.$set(_row, '_submitting', true)
  ... // 原有提交逻辑
  // 提交成功回调里,无论后端是否已正确刷新currentUserId,先用本地标记临时隐藏按钮
  // 待 searchFormFun 重新拉取数据后,由服务端修复后的 currentUserId 自然接管显示判断
}

但请注意,仅做前端防抖只能缓解"重复点击"这一交互体验问题,无法根治"互联网侧目标环节处理人显示自己"这一数据展示错误,务必配合 solution-79.html 的后端修复一并处理。