① 基本信息
| 问题描述 | 省份为云南,调管单位为广东,提交并网信息后,广东账号并没有相关审核信息。测试人员建议:OMS2.0侧,计划并网容量审核、并网资料信息审核、实际并网容量审核列表,筛选条件的"省份"不要给默认值 |
|---|---|
| 一级模块 | 计划并网信息 |
| 二级模块 | 计划并网审核 |
| 涉及类型 | 全部类型 |
| 严重性 | 严重 |
| 当前状态 | 2.1.待开发 |
| 研发处理人 | 冷柏烨 |
| 处理状态 | 需求问题 |
② 问题截图
③ 旧代码涉及的项目文件及行数(backup730/730backup 分支)
xnybw5f / src/plan/yearProjectPlanAdjust/planVerify/index.vue
第 1088-1099 行(_getProvinceAndMunicipalList,省份筛选框默认选中逻辑)
xnybw5b / src/main/java/cn/csg/so/oms/in/newenergy/project/appservice/NePjImplProvAppService.java
第 32-56 行(listByCurrentUser,按当前用户 areaNo 计算可见省份列表)
④ 代码现状与修复方案
截图页面顶部导航栏可见"计划并网容量审核"挂在"OMS2.0"电网运行管理系统壳子下,但左侧菜单结构(项目信息填报/计划并网容量审核/井网资料审核/实际并网容量审核,及"集中式新能源/中压分布式新能源/新型储能/生物质"四级子菜单)与 xnybw5f 前端其它页面完全一致——即 OMS2.0 内网侧壳应用内嵌/复用的就是本仓库 src/plan/yearProjectPlanAdjust/planVerify/index.vue 这个审核列表页,测试人员反馈的"筛选条件省份不要给默认值"这条建议,代码位置就在本仓库内,可以定位、可以修复。
该页面加载时会调用 _getProvinceAndMunicipalList() 初始化"省份"筛选框选项,其中有一段"中调/地调默认选中"的逻辑:
async _getProvinceAndMunicipalList () {
let res = await getProvinceAndMunicipalList()
let data = res.data.data
this.provinceList = data.provinceList.filter(item => item.name !== '总调') // 第1091行:先把"总调"从可选项里过滤掉
...
// 中调、地调默认选中
if (this.provinceList && this.provinceList.length === 1) {
this.searchForm.province = [this.provinceList[0].name] // 第1098行:省份列表只剩1项时,自动勾选为默认筛选条件
this.checkProvince = this.provinceList[0].name
}
...
}
这段"只剩1个省份就自动默认勾选"的逻辑,初衷是给"广东中调"这类只管辖单一省份的账号提供便利(登录后自动只看本省数据,不用每次手动选)。但后端 listByCurrentUser() 判断当前账号可见省份范围时,是按登录人机构 areaNo 前两位比对:
public List<NePjImplProvVO> listByCurrentUser() {
String areaNo = UserUtils.getUser().getOrgAreaNo();
List<NePjImplProvVO> provinceList = getCapBaseCommonDAO().queryList(...);
if (StringUtils.isNotBlank(areaNo)) {
String first = areaNo.substring(0, 2);
if ("08".equals(first) || "09".equals(first)) { first = "03"; } // 广州/深圳归并到广东省份代码
List<NePjImplProvVO> resultList = provinceList.stream()
.filter(item -> item.getCode().equals(finalFirst)).collect(...);
if (resultList.size() > 0) {
if (ZD.equals(resultList.get(0).getCode())) { // ZD="00",只有总调账号才返回全量provinceList
return provinceList;
} else {
return resultList; // 其余账号(含"广东中调")只返回自己所在的单一省份
}
}
}
return provinceList;
}
两段代码叠加后的效果:广东中调账号登录后端返回的
provinceList 天然只有"广东"1条 → 前端据此自动把省份筛选框默认锁死为"广东",列表 API 也只按"广东"过滤 → 云南提交、调管单位选择"广东"的记录,如果不属于广东本省辖区(province 字段是云南而非广东),就会被这个默认省份过滤条件挡在列表之外,需要用户手动清空筛选框才能看到跨省委托审核的记录,这正是测试人员反馈的现象。
┌────────────┐ 仅返回"广东"1项 ┌──────────────────────────┐
│ 广东中调账号 │ ───────────────────▶ │ provinceList.length===1 │
└────────────┘ │ → 自动勾选 province=广东 │
└──────────────┬────────────┘
▼
列表查询自动带 province=广东 条件
│
云南提交、调管单位=广东的跨省记录(province=云南) ✗ 被过滤,不显示
建议修复方式:"省份=广东"应仅作为筛选框的"建议默认值"提示用户可以这样筛,而不应该在数据没有真正按调管单位/待审核状态二次确认前,就直接把它当成生效的查询条件;至少应在"计划并网容量审核"这类"我的待审核任务"场景下,改为按"当前处理人/调管单位"作为默认过滤条件,不再简单按"登录人所属省份"默认收窄:
if (this.provinceList && this.provinceList.length === 1) { this.searchForm.province = [this.provinceList[0].name] this.checkProvince = this.provinceList[0].name } // 审核列表场景不再用"登录人所属省份"默认收窄查询条件, // 省份筛选框仅展示可选范围,默认保持不选(即查询"调管单位=我"的全部待审记录) this.checkProvince = this.provinceList && this.provinceList.length === 1 ? this.provinceList[0].name : '' // this.searchForm.province 保持初始空数组,不自动勾选