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

新建填报选择"测试数据",保存后数据类型变为"正式数据"(Excel第10行)

类型:填报问题  严重性:严重  状态:5.1.已关闭(复测通过)

基本信息

问题描述新建填报选择测试数据,填完信息之后保存数据类型会由"测试数据"变为"正式数据"
一级模块项目信息填报
二级模块/
涉及类型全部类型
是否阻断流程
处理人员洪陈解
复测情况复测通过

问题截图

row10 截图1
图1:数据类型选择"测试数据"后保存的现象

已排查的代码路径(backup730/730backup)

字段定义与UI:xnybw5f / backup730 / src/views/projectNew/components/baseInfo/components/baseInfo.vue
· 第183-188行:<el-select v-model="form.isProd"><el-option label="正式数据" value="1"><el-option label="测试数据" value="0"></el-select>
· 第332行:props: ['form', 'implVoList', 'readOnly', "type", "isShowBtn"] —— form 是父组件 projectDetail.vue 通过 prop 传入的同一对象引用,子组件内 v-model="form.isProd" 直接修改的就是父组件的字段
· 第580行:init() 编辑模式下会执行 this.form = res.data(整体重新赋值),但该分支只在"编辑已有项目"(status !== 'add')时触发,与本条"新建填报"场景不符
· 第463-470行:isProd 字段的校验规则仅做取值合法性校验(必须是'0'或'1'),未见任何强制赋值逻辑
保存链路projectDetail.vue 第418-500行 saveOrUpdate() 直接整体提交 this.form,未见对 isProd 的单独处理
xnybw5b / 730backup / NewNePjController.java 第93-97行:if (StrUtil.isEmpty(vo.getId()) && vo.getIsProd() == null) { vo.setIsProd("0"); } —— 该逻辑只在 isProdnull 时才会默认置为"0"(测试数据),且新建场景 id 为空也符合条件,方向与本缺陷描述的"变成正式数据(1)"相反
ProjectImplAppService.java 第1132-1167行 addProject()project.setIsProd(proVo.getIsProd()) 为直接原样透传,未发现覆盖为"1"的逻辑

核对结论(诚实说明:未能在 backup730/730backup 中定位到明确的覆盖代码)

已经沿"前端字段绑定 → 保存提交 → 后端控制器 → AppService 落库"完整链路逐段核查,未能在 backup730/730backup 代码中找到会把 isProd 从"0"(测试数据)显式改写为"1"(正式数据)的代码位置。前端 v-model 绑定、prop 传递、后端透传逻辑单独看都是符合预期的直传实现。

建议人工结合浏览器 Network 面板实测复现:
1)新建项目选择"测试数据"并保存,直接查看该次 addOrUpdatePro 请求的实际请求体中 isProd 字段取值,确认前端提交时是否已经是错误值(若提交时已是"1",说明问题在表单收集/校验环节,例如某个 resetFields() 或表单重置逻辑在提交前把该字段重置为默认值);
2)若提交请求体确认为"0",再核对数据库落库后的实际值及"重新查询详情接口"回显的值,确认是保存环节写错还是详情回显/列表展示环节的映射/字典标签错位(例如列表页把 isProd='0' 误标注为"正式数据"文案,而不是真实写库值有误)。