Merge branch 'feature/UI-20260528' of http://1.92.128.200:3000/YXS/nmWTAI-Platform into feature/UI-20260528

feature/UI-20260528
lvjunjie 6 days ago
commit 0cec2ca256

@ -457,6 +457,28 @@ bool nmDataAnalyzeManager::removeWell(nmDataWellBase* pWellData)
if(pWellData == nullptr) { if(pWellData == nullptr) {
return false; return false;
} }
const QString removedWellName = pWellData->getWellName();
const bool isCurrentWell = (m_pCurDataWell == pWellData);
// 删除井对象前,先移除仍然引用这口井的状态。
for(int i = m_vecCalculationWells.size() - 1; i >= 0; --i) {
if(m_vecCalculationWells[i].second == removedWellName) {
m_vecCalculationWells.remove(i);
}
}
// 如果删的是当前井,切换到其他有效井;如果没有,则清空当前井指针。
if(isCurrentWell) {
m_pCurDataWell = nullptr;
for(int i = 0; i < m_vWellData.size(); ++i) {
nmDataWellBase* pCandidate = m_vWellData[i];
if(pCandidate != nullptr && pCandidate != pWellData) {
m_pCurDataWell = pCandidate;
break;
}
}
}
// 遍历 m_vWellData找到并移除指定的井对象 // 遍历 m_vWellData找到并移除指定的井对象
for(auto it = m_vWellData.begin(); it != m_vWellData.end(); ++it) { for(auto it = m_vWellData.begin(); it != m_vWellData.end(); ++it) {
@ -474,6 +496,16 @@ bool nmDataAnalyzeManager::removeWell(nmDataWellBase* pWellData)
void nmDataAnalyzeManager::removeWellDataAndPlot(nmDataWellBase* pWellData) void nmDataAnalyzeManager::removeWellDataAndPlot(nmDataWellBase* pWellData)
{ {
// 参数校验
if(pWellData == nullptr) {
return;
}
// 公共删井入口中不允许删除当前井,避免活动井引用失效
if(pWellData == getCurWellData()) {
return;
}
nmDataPlotContextProvider* pPlotContextProvider = nmDataPlotContext::provider(); nmDataPlotContextProvider* pPlotContextProvider = nmDataPlotContext::provider();
if (m_pNmGuiPlot != nullptr && pPlotContextProvider != nullptr) if (m_pNmGuiPlot != nullptr && pPlotContextProvider != nullptr)
{ {

File diff suppressed because it is too large Load Diff

@ -200,6 +200,11 @@ void nmWxNumericalDesign::fillResultWellCombo(const QString& selectedWellName)
} }
} }
// 当前井可能已经被删除;如果它已不在结果井下拉框中,就清空这个失效井名。
if(!sCurrentWellName.isEmpty() && m_pResultWellCombo->findText(sCurrentWellName) < 0) {
sCurrentWellName.clear();
}
// 未计算时没有结果井列表,先显示当前井,避免下拉框空白。 // 未计算时没有结果井列表,先显示当前井,避免下拉框空白。
if(m_pResultWellCombo->count() == 0 && !sCurrentWellName.isEmpty()) { if(m_pResultWellCombo->count() == 0 && !sCurrentWellName.isEmpty()) {
m_pResultWellCombo->addItem(sCurrentWellName); m_pResultWellCombo->addItem(sCurrentWellName);

Loading…
Cancel
Save