| 问题描述 | 生物质在建场站,县区标星号必填,但是不填写也可以进行保存 |
|---|---|
| 一级模块 | 项目信息填报 |
| 二级模块 | 项目基本信息 |
| 涉及类型 | 生物质 |
| 严重性 | 严重 |
| 当前状态 | 5.1.已关闭 |
| 研发处理人员 | 陈键泽 |
| 复测情况 | 复测通过 |
proStatus: "1" 语义生效。stationInfoSWZ.vue 第 292-298 行 computed.proStatus()stationInfoSWZ.vue 第 327-345 行 formRows(list) 方法根因分析:该表单的必填规则不是逐字段手写死的,而是由 rulesList 数组统一生成:数组里“县区”这一项写的是 { label: "县区", prop: "counties", proStatus: "1" },本意应该是“当场站状态命中某个特定阶段(proStatus 标记为 1 的这一类)时才要求必填”。但在真正生成校验规则的 formRows() 里,用的却是:
computed: {
proStatus() {
if (this.item.proStatus && this.item.proStatus == "4") {
return true;
} else {
return false;
}
},
},
...
// formRows() 内:
required: item.proStatus ? this.proStatus : true,
这里的 this.proStatus 是一个只认“场站状态是否等于字符串 4”的计算属性,与 rulesList 里每一项自己标注的 proStatus: "1" 值完全没有关联——只要 item.proStatus 存在(真值),最终是否必填就统一交给这个只看“是否等于 4”的开关决定,而不是按每个字段自己声明的阶段来判断。“待建”“在建”等状态下这个开关恒为 false,于是“县区”“本项目场站设计容量”“产权单位”“场站站长姓名/电话”等一整批标了 proStatus:"1" 的字段,在“已投产”之外的所有状态下都不会被真正校验,只是模板里 required 静态属性画出的星号还在,才出现“标星但不校验”的现象。
formRows(list) {
for (let i = 0; i < list.length; i++) {
const item = list[i];
...
const arr = [
{
// 按该字段自身声明的 proStatus 阶段判断,而不是恒定看 this.proStatus(=="4")
required: item.proStatus ? this.item.proStatus === item.proStatus : true,
message: message,
trigger: item.trigger ? item.trigger : trigger,
},
];
this.$set(this.rules, item.prop, arr);
}
}
rules: {} + proStatus() { ... == "4" } + formRows() 组合在 stationInfoXXCN.vue(新型储能场站信息,对应 Excel 第 31 行“本项目场站设计容量没有进行校验”)中一字不差地重复出现,属于同一处代码被复制到多个场站类型组件后共同携带的系统性问题,建议两处一并修复并补充单元/交互测试,避免后续新增场站类型时再次复制出同样的缺陷。