① 基本信息
| 问题描述 | 筛选阶段后,上传资料,页面刷新出全部阶段目录 |
|---|---|
| 一级模块 | 并网资料信息 |
| 二级模块 | 并网资料信息 |
| 涉及类型 | 全部类型 |
| 严重性 | 一般 |
| 当前状态 | 2.1.待开发 |
| 研发处理人 | 周小龙 |
② 问题截图
③ 旧代码涉及的项目文件及行数(backup730 分支)
xnybw5f / src/views/projectNew/components/projectDataInfo/component/batchInfo.vue
第 3655 - 3672 行(refreshInformationFlow 方法);筛选表单定义在第 1493-1524 行
页面顶部的"阶段/专业/资料维度/状态/关键字"筛选条件统一收在 this.searchForm 里(第 1495 行 v-model="searchForm.stageNameList" 等)。查询按钮触发 searchFormFun,会完整地把 this.searchForm 传给后端。但上传附件成功后走的是另一个刷新方法 refreshInformationFlow:
async refreshInformationFlow(plantId, plantPkId) {
...
const param = {
planId: this.planId
}
if (this.searchForm.majorList && this.searchForm.majorList.length > 0) {
param.majorList = this.searchForm.majorList
}
// 只把"专业"筛选带回去,阶段(stageNameList)/资料维度(menuFileFlag)/
// 状态(currentTask)/关键字(keyword) 全部丢失,param 里没有任何相关字段
await this.fetchElectricConditionDetail()
const batchInfoRes = await approvalApi.getBatchInfo(param) // 第3668行:等价于清空阶段筛选后的全量查询
...
}
对照:第 3748-3764 行
uploadFileByImpl 上传成功回调里调用的正是 this.refreshInformationFlow()(不传任何筛选参数),所以每次上传附件后台都会用"只带 planId(和可能的专业)"的裸参数重新拉取该场站下全部阶段的资料目录,用户之前选定的"阶段"筛选条件在界面上视觉仍显示已选中,但列表数据已经变成了未过滤的全量数据——即缺陷描述的"刷新出全部阶段目录"。
④ 修复代码涉及的项目文件及行数
xnybw5f / src/views/projectNew/components/projectDataInfo/component/batchInfo.vue
第 3659 - 3667 行(refreshInformationFlow 的 param 构建部分)
const param = {
planId: this.planId
}
- if (this.searchForm.majorList && this.searchForm.majorList.length > 0) {
- param.majorList = this.searchForm.majorList
- }
+ // 与 searchFormFun 保持一致,刷新时完整带回当前生效的筛选条件
+ if (this.searchForm.stageNameList && this.searchForm.stageNameList.length > 0) {
+ param.stageNameList = this.searchForm.stageNameList
+ }
+ if (this.searchForm.majorList && this.searchForm.majorList.length > 0) {
+ param.majorList = this.searchForm.majorList
+ }
+ if (this.searchForm.menuFileFlag && this.searchForm.menuFileFlag.length > 0) {
+ param.menuFileFlag = this.searchForm.menuFileFlag
+ }
+ if (this.searchForm.currentTask && this.searchForm.currentTask.length > 0) {
+ param.currentTask = this.searchForm.currentTask
+ }
+ if (this.searchForm.keyword) {
+ param.keyword = this.searchForm.keyword
+ }
⑤ 修复方案
问题的本质是"上传成功后的刷新路径"(refreshInformationFlow)与"点击查询按钮的路径"(searchFormFun)各自独立拼装请求参数,前者遗漏了阶段等四个筛选字段,导致同一份 searchForm 在两条路径上表现不一致。
推荐按上文 diff,将 refreshInformationFlow 里的参数拼装逻辑补齐为与 searchFormFun 相同的字段集合(阶段、专业、资料维度、状态、关键字),保证"上传附件 → 刷新列表"后,界面上已选中的筛选条件与实际展示的数据行为一致。更彻底的方式是抽取一个公共的 buildSearchParam() 方法供 searchFormFun 与 refreshInformationFlow 共用,避免未来新增筛选字段时再次出现同类遗漏。
该缺陷当前状态为"2.1.待开发",尚未有研发对应提交记录,以上定位与修改建议基于 backup730 现状代码直接给出,可作为周小龙后续开发的起点。