类型:填报问题 严重性:严重 状态:5.1.已关闭(复测通过)
| 问题描述 | 场站状态为:待建状态,经纬度不应该校验必填 |
|---|---|
| 一级模块 | 项目信息填报 |
| 二级模块 | / |
| 涉及类型 | 集中式新能源 |
| 是否阻断流程 | 否 |
| 处理人员 | 周小龙 |
| 复测情况 | 复测通过 |
src/views/projectNew/components/baseInfo/components/stationInfo.vue<el-radio value="3">待建</el-radio> <el-radio value="4">在建</el-radio> <el-radio value="5" disabled>已投产</el-radio>:required="proStatus"proStatus() { return this.item.proStatus == "4" } —— 仅当场站状态为"在建"(值4)时才返回 trueformRows() 动态生成校验规则,经度/纬度字段(longitudeArrList/latitudeArrList)带有 proStatus: "1" 标记,最终必填规则为 required: item.proStatus ? this.proStatus : true —— 即只有标记了 proStatus:"1" 的字段,其必填性才跟随场站状态计算属性动态变化proStatus=='3')时,计算属性 proStatus() 返回 false,经纬度表单项的 required 与校验规则均随之关闭,不会再强制必填;只有切换为"在建"(proStatus=='4')后才会必填。该逻辑在 backup730 现有代码中已经是正确实现,与本条缺陷"已关闭/复测通过"的状态一致,判断这正是当时修复后被固化下来的实现方式,backup730 分支无需再改动此处代码。stationInfo.vue 第94-98、410-416、524-544行(该处即当年问题修复落地的位置)proStatus:"1" 标记 + 计算属性联动"的写法,避免重复出现相同问题。把"字段是否必填"与"业务状态字段"解耦为一个统一的计算属性驱动的规则表,而不是在每个字段上写死 required:
// rulesList 中给需要按场站状态联动必填的字段打标记
{ type: "input", label: "中心经度", prop: "longitudeArrList", proStatus: "1" }
// 统一根据标记 + 计算属性生成规则,新增字段时只需要打标记,不用重复写 if/else
formRows(list) {
list.forEach(item => {
this.$set(this.rules, item.prop, [{
required: item.proStatus ? this.proStatus /* 场站状态计算属性 */ : true,
message: `请${item.type === 'input' ? '输入' : '选择'}${item.label}`,
}])
})
}