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

Row 29:新型储能基本信息"投资主体性质、能量"标为必填,但保存时未校验

严重 已关闭 · 复测通过 新型储能 模块:项目信息填报 / 项目基本信息 处理人:陈键泽

1基本信息

问题描述新型储能项目基本信息:投资主体性质、能量标明必填,但是点击保存的时候没有校验可以正常保存。
所属模块项目信息填报 / 项目基本信息
严重程度严重(阻断流程:是)
涉及类型新型储能
提出人刘向诚
处理人 / 状态陈键泽 / 5.1.已关闭(复测通过)

2问题截图

新型储能基本信息空表单
图1:"lxc-新型储能项目6"基本信息表单,"投资主体性质""能量"均标红星必填,但表单为空未填写

3旧代码定位(backup730 分支)

src/views/projectNew/components/baseInfo/components/baseInfoXXCN.vue 第 56-92 行:

<el-form-item required label="投资主体性质" prop="tzztxz">         <!-- 第56行:有 prop -->
  <el-select v-model="form.tzztxz" clearable :disabled="readOnly">
    <el-option label="国有资本" value="国有资本"></el-option>
    <el-option label="民营资本" value="民营资本"></el-option>
  </el-select>
</el-form-item>

<el-form-item :required="proStatus" label="项目核准/备案容量" class="blue-check">
  <el-input v-model="form.capacity" ... ></el-input>
</el-form-item>

<el-form-item required label="能量" class="blue-check">                <!-- 第76行:required 但没有 prop! -->
  <el-input
    v-model="form.powerCapacity"
    clearable
    :disabled="readOnly"
    maxlength="10"
    @input="form.powerCapacity = handlePositiveNumberInput($event)"
  >
    <template slot="append">MWh</template>
  </el-input>
</el-form-item>

rulesList(第373-411行,用于生成 this.rulesel-form 校验)中:

rulesList: [
  { type: "input",  label: "项目名称", prop: "planName" },
  { type: "input",  label: "项目批文或备案号", prop: "recordsNumber", proStatus: "1" },
  { type: "input",  label: "项目批文或备案名称", prop: "recordsName", proStatus: "1" },
  { type: "input",  label: "所属集团", prop: "bloc" },
  { type: "select", label: "投资主体性质", prop: "tzztxz" },      // 有登记,能正常校验
  { type: "input",  label: "项目核准/备案容量", prop: "capacity", proStatus: "1" },
  { type: "select", label: "调度命名", prop: "implVoList" },
  // 没有 powerCapacity(能量)!
],
根因说明:Element UI 的表单校验是以 el-form-itemprop 属性为键,从 el-formrules 对象中查找对应校验规则,二者必须同时具备才能生效。
"投资主体性质":模板上有 prop="tzztxz"rulesList 里也登记了 tzztxz,因此点击保存时能够正确弹出"请选择投资主体性质"的校验提示(该字段实际上校验是生效的)。
"能量"(form.powerCapacity):第76行 el-form-item 上只写了视觉层面的 required(单纯渲染一个红色星号 *),没有加 prop="powerCapacity"rulesList 里也完全没有 powerCapacity 这一项。两处都缺失,导致 this.$refs.form.validate() 校验时根本不会去检查这个字段——无论用户填不填,保存请求都会正常发出,与截图/描述中"标明必填但保存时没有校验"完全吻合。

4修复方案

修复文件:src/views/projectNew/components/baseInfo/components/baseInfoXXCN.vue

① 给"能量"字段补上 prop(原第76行):
<el-form-item required label="能量" prop="powerCapacity" class="blue-check">
  <el-input v-model="form.powerCapacity" ... >
    <template slot="append">MWh</template>
  </el-input>
</el-form-item>
② 在 rulesList 中补充对应校验项(原第400行"投资主体性质"条目后追加):
{
  type: "input",
  label: "能量",
  prop: "powerCapacity",
},
效果:补齐 prop 绑定和 rulesList 校验规则后,"能量"字段将与"投资主体性质"一样,在未填写时阻止保存并给出"请输入能量"的明确提示,行为与页面上红星必填标识保持一致。