Row 77 · 批次信息的所有预计并网时间必须在场站开工建设时间之后 2.1.待开发
问题描述:项目信息填报页面,批次信息的所有预计并网时间必须在场站开工建设时间之后。
旧代码涉及的项目文件名及对应行数
xnybw5f/src/views/projectNew/components/baseInfo/js/validateProjectDetail.js(第111-244行区间为代表性的一段,全文件还有369、587、794行起的三处几乎相同逻辑,对应不同项目类型分支):
- 第192-194行:校验
batchPredictFirstTime(本批次预计首台机组接入电网时间)非空 - 第197-207行:只校验
batchPredictAllTime(预计全容量并网时间)≥batchPredictFirstTime - 第220-243行:只校验
testRunFirstTime(进入试运行时间)≤ 系统当前时间,以及testRunEndTime≥testRunFirstTime
全文件检索 projectStartTime(场站开工建设时间)在本文件中只出现在"非空校验"(如111、374、592、799行 if (!item.projectStartTime)),没有任何地方把 batchPredictFirstTime/batchPredictAllTime/testRunFirstTime 等批次时间字段与 projectStartTime 做大小比较——这正是问题描述"所有预计并网时间必须在场站开工建设时间之后"缺失的校验。
修复代码涉及的项目文件名及行数
xnybw5f/src/views/projectNew/components/baseInfo/js/validateProjectDetail.js 第197行、第220行附近(以及369/587/794行起的另外三处同构代码)
修复方案
// 建议在 batchPredictFirstTime 校验通过后,增加与 projectStartTime 的比较
if (!information.batchPredictFirstTime) {
message.error('请输入本批次预计首台机组接入电网时间')
return false
} else if (item.projectStartTime && new Date(information.batchPredictFirstTime) < new Date(item.projectStartTime)) {
message.error('本批次预计首台机组接入电网时间不能早于场站开工建设时间')
return false
}
// batchPredictAllTime、testRunFirstTime 等其余批次时间字段同理,
// 建议统一提取一个小工具函数,避免在 4 处几乎相同的代码里各自维护一份校验逻辑:
function checkAfterProjectStart(fieldValue, projectStartTime, fieldLabel) {
if (projectStartTime && fieldValue && new Date(fieldValue) < new Date(projectStartTime)) {
message.error(`${fieldLabel}不能早于场站开工建设时间`)
return false
}
return true
}
注意本文件里这段校验逻辑因为不同项目类型(集中式/新型储能/生物质等)各复制了一份(111/369/587/794 起),建议这次顺带把四处都补上,避免只修一个分支导致其他类型漏改。